From 5149924bab07f58297ead8c6c2f97aaa15bbc8c4 Mon Sep 17 00:00:00 2001 From: Martin Prokoph Date: Mon, 29 Jul 2024 18:31:02 +0200 Subject: [PATCH] There ain't no traffic jam here - All traffic decorations are now working properly with Polymer --- .../decorative/block/FireHydrant.java | 4 +- .../motschen/decorative/block/Guardrail.java | 4 +- .../decorative/block/PoolSprinkler.java | 6 +-- .../motschen/decorative/block/ShowerHead.java | 4 +- .../motschen/decorative/block/Sign.java | 7 +--- .../motschen/decorative/block/SignPost.java | 14 +++++++ .../decorative/block/TrafficCone.java | 14 +++++++ .../decorative/polymer/PolymerSupport.java | 13 ++----- ....java => DirectionalItemDisplayModel.java} | 5 +-- .../polymer/model/SimpleItemDisplayModel.java | 39 +++++++++++++++++++ 10 files changed, 82 insertions(+), 28 deletions(-) rename src/main/java/eu/midnightdust/motschen/decorative/polymer/model/{ItemDisplayDirectionalModel.java => DirectionalItemDisplayModel.java} (95%) create mode 100644 src/main/java/eu/midnightdust/motschen/decorative/polymer/model/SimpleItemDisplayModel.java diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/FireHydrant.java b/src/main/java/eu/midnightdust/motschen/decorative/block/FireHydrant.java index cfc300a..a14ba76 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/FireHydrant.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/FireHydrant.java @@ -1,7 +1,7 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; -import eu.midnightdust.motschen.decorative.polymer.model.ItemDisplayDirectionalModel; +import eu.midnightdust.motschen.decorative.polymer.model.DirectionalItemDisplayModel; import eu.pb4.factorytools.api.block.FactoryBlock; import eu.pb4.polymer.virtualentity.api.ElementHolder; import net.minecraft.block.AbstractBlock; @@ -116,6 +116,6 @@ public class FireHydrant extends HorizontalFacingBlock implements FactoryBlock { @Override public @Nullable ElementHolder createElementHolder(ServerWorld world, BlockPos pos, BlockState initialBlockState) { - return new ItemDisplayDirectionalModel(initialBlockState); + return new DirectionalItemDisplayModel(initialBlockState); } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/Guardrail.java b/src/main/java/eu/midnightdust/motschen/decorative/block/Guardrail.java index 60dbc5c..044b59f 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/Guardrail.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/Guardrail.java @@ -1,7 +1,7 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; -import eu.midnightdust.motschen.decorative.polymer.model.ItemDisplayDirectionalModel; +import eu.midnightdust.motschen.decorative.polymer.model.DirectionalItemDisplayModel; import eu.pb4.factorytools.api.block.FactoryBlock; import eu.pb4.polymer.virtualentity.api.ElementHolder; import net.minecraft.block.AbstractBlock; @@ -95,6 +95,6 @@ public class Guardrail extends HorizontalFacingBlock implements FactoryBlock { @Override public @Nullable ElementHolder createElementHolder(ServerWorld world, BlockPos pos, BlockState initialBlockState) { - return new ItemDisplayDirectionalModel(initialBlockState); + return new DirectionalItemDisplayModel(initialBlockState); } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/PoolSprinkler.java b/src/main/java/eu/midnightdust/motschen/decorative/block/PoolSprinkler.java index 3d8c8e9..05c9c04 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/PoolSprinkler.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/PoolSprinkler.java @@ -3,7 +3,7 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; import eu.midnightdust.motschen.decorative.block.blockentity.PoolSprinklerBlockEntity; import eu.midnightdust.motschen.decorative.init.BlockEntities; -import eu.midnightdust.motschen.decorative.polymer.model.ItemDisplayDirectionalModel; +import eu.midnightdust.motschen.decorative.polymer.model.DirectionalItemDisplayModel; import eu.pb4.factorytools.api.block.FactoryBlock; import eu.pb4.polymer.virtualentity.api.ElementHolder; import net.minecraft.block.AbstractBlock; @@ -40,8 +40,6 @@ import net.minecraft.world.World; import net.minecraft.world.WorldView; import org.jetbrains.annotations.Nullable; -import java.util.Objects; - public class PoolSprinkler extends BlockWithEntity implements BlockEntityProvider, FactoryBlock { public static final DirectionProperty FACING = HorizontalFacingBlock.FACING; public static final BooleanProperty POWERED = DoorBlock.POWERED; @@ -142,7 +140,7 @@ public class PoolSprinkler extends BlockWithEntity implements BlockEntityProvide @Override public @Nullable ElementHolder createElementHolder(ServerWorld world, BlockPos pos, BlockState initialBlockState) { - return new ItemDisplayDirectionalModel(initialBlockState); + return new DirectionalItemDisplayModel(initialBlockState); } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/ShowerHead.java b/src/main/java/eu/midnightdust/motschen/decorative/block/ShowerHead.java index 2ea08c7..c577a3c 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/ShowerHead.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/ShowerHead.java @@ -3,7 +3,7 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; import eu.midnightdust.motschen.decorative.block.blockentity.ShowerHeadBlockEntity; import eu.midnightdust.motschen.decorative.init.BlockEntities; -import eu.midnightdust.motschen.decorative.polymer.model.ItemDisplayDirectionalModel; +import eu.midnightdust.motschen.decorative.polymer.model.DirectionalItemDisplayModel; import eu.pb4.factorytools.api.block.FactoryBlock; import eu.pb4.polymer.virtualentity.api.ElementHolder; import net.minecraft.block.AbstractBlock; @@ -142,7 +142,7 @@ public class ShowerHead extends BlockWithEntity implements BlockEntityProvider, @Override public @Nullable ElementHolder createElementHolder(ServerWorld world, BlockPos pos, BlockState initialBlockState) { - return new ItemDisplayDirectionalModel(initialBlockState); + return new DirectionalItemDisplayModel(initialBlockState); } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/Sign.java b/src/main/java/eu/midnightdust/motschen/decorative/block/Sign.java index 2759020..2cfb4be 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/Sign.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/Sign.java @@ -1,8 +1,7 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; -import eu.midnightdust.motschen.decorative.polymer.model.ItemDisplayDirectionalModel; -import eu.midnightdust.motschen.decorative.util.ColorUtil; +import eu.midnightdust.motschen.decorative.polymer.model.DirectionalItemDisplayModel; import eu.pb4.factorytools.api.block.FactoryBlock; import eu.pb4.polymer.virtualentity.api.ElementHolder; import net.minecraft.block.AbstractBlock; @@ -26,8 +25,6 @@ import org.jetbrains.annotations.Nullable; import java.util.Arrays; -import static eu.midnightdust.motschen.decorative.DecorativeMain.id; - public class Sign extends HorizontalFacingBlock implements FactoryBlock { private static final VoxelShape NORTH_SHAPE; private static final VoxelShape EAST_SHAPE; @@ -100,7 +97,7 @@ public class Sign extends HorizontalFacingBlock implements FactoryBlock { @Override public @Nullable ElementHolder createElementHolder(ServerWorld world, BlockPos pos, BlockState initialBlockState) { - return new ItemDisplayDirectionalModel(initialBlockState); + return new DirectionalItemDisplayModel(initialBlockState); } public enum Type { diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/SignPost.java b/src/main/java/eu/midnightdust/motschen/decorative/block/SignPost.java index edfa466..b9aff16 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/SignPost.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/SignPost.java @@ -1,16 +1,21 @@ package eu.midnightdust.motschen.decorative.block; +import eu.midnightdust.motschen.decorative.polymer.model.SimpleItemDisplayModel; import eu.pb4.factorytools.api.block.FactoryBlock; +import eu.pb4.polymer.virtualentity.api.ElementHolder; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.ShapeContext; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.util.math.BlockPos; import net.minecraft.util.shape.VoxelShape; import net.minecraft.world.BlockView; import net.minecraft.world.WorldView; +import org.jetbrains.annotations.Nullable; public class SignPost extends Block implements FactoryBlock { private static final VoxelShape SHAPE; @@ -36,4 +41,13 @@ public class SignPost extends Block implements FactoryBlock { public BlockState getPolymerBlockState(BlockState state) { return Blocks.BARRIER.getDefaultState(); } + @Override + public BlockState getPolymerBreakEventBlockState(BlockState state, ServerPlayerEntity player) { + return Blocks.IRON_BLOCK.getDefaultState(); + } + + @Override + public @Nullable ElementHolder createElementHolder(ServerWorld world, BlockPos pos, BlockState initialBlockState) { + return new SimpleItemDisplayModel(initialBlockState); + } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/TrafficCone.java b/src/main/java/eu/midnightdust/motschen/decorative/block/TrafficCone.java index 142379c..6621171 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/TrafficCone.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/TrafficCone.java @@ -1,16 +1,21 @@ package eu.midnightdust.motschen.decorative.block; +import eu.midnightdust.motschen.decorative.polymer.model.SimpleItemDisplayModel; import eu.pb4.factorytools.api.block.FactoryBlock; +import eu.pb4.polymer.virtualentity.api.ElementHolder; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.ShapeContext; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.util.math.BlockPos; import net.minecraft.util.shape.VoxelShape; import net.minecraft.world.BlockView; import net.minecraft.world.WorldView; +import org.jetbrains.annotations.Nullable; public class TrafficCone extends Block implements FactoryBlock { private static final VoxelShape SHAPE; @@ -36,5 +41,14 @@ public class TrafficCone extends Block implements FactoryBlock { public BlockState getPolymerBlockState(BlockState state) { return Blocks.BARRIER.getDefaultState(); } + @Override + public BlockState getPolymerBreakEventBlockState(BlockState state, ServerPlayerEntity player) { + return Blocks.ORANGE_CONCRETE.getDefaultState(); + } + + @Override + public @Nullable ElementHolder createElementHolder(ServerWorld world, BlockPos pos, BlockState initialBlockState) { + return new SimpleItemDisplayModel(initialBlockState); + } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/polymer/PolymerSupport.java b/src/main/java/eu/midnightdust/motschen/decorative/polymer/PolymerSupport.java index 68746cc..8168ac0 100644 --- a/src/main/java/eu/midnightdust/motschen/decorative/polymer/PolymerSupport.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/polymer/PolymerSupport.java @@ -1,17 +1,11 @@ package eu.midnightdust.motschen.decorative.polymer; -import eu.midnightdust.motschen.decorative.polymer.model.ItemDisplayBirdBathModel; -import eu.midnightdust.motschen.decorative.polymer.model.ItemDisplayCeilingFanModel; -import eu.midnightdust.motschen.decorative.polymer.model.ItemDisplayChristmasLightsModel; -import eu.midnightdust.motschen.decorative.polymer.model.ItemDisplayChristmasTreeModel; -import eu.midnightdust.motschen.decorative.polymer.model.ItemDisplayDigitalClockModel; -import eu.midnightdust.motschen.decorative.polymer.model.ItemDisplayDirectionalModel; -import eu.midnightdust.motschen.decorative.polymer.model.ItemDisplayDoubleLampModel; -import eu.midnightdust.motschen.decorative.polymer.model.ItemDisplayLampModel; -import eu.midnightdust.motschen.decorative.polymer.model.ItemDisplayPoolWallModel; +import eu.midnightdust.motschen.decorative.polymer.model.*; public class PolymerSupport { public static void init() { + DirectionalItemDisplayModel.initModels(); + SimpleItemDisplayModel.initModels(); ItemDisplayBirdBathModel.initModels(); ItemDisplayCeilingFanModel.initModels(); ItemDisplayChristmasLightsModel.initModels(); @@ -19,7 +13,6 @@ public class PolymerSupport { ItemDisplayDigitalClockModel.initModels(); ItemDisplayDoubleLampModel.initModels(); ItemDisplayLampModel.initModels(); - ItemDisplayDirectionalModel.initModels(); ItemDisplayPoolWallModel.initModels(); } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/polymer/model/ItemDisplayDirectionalModel.java b/src/main/java/eu/midnightdust/motschen/decorative/polymer/model/DirectionalItemDisplayModel.java similarity index 95% rename from src/main/java/eu/midnightdust/motschen/decorative/polymer/model/ItemDisplayDirectionalModel.java rename to src/main/java/eu/midnightdust/motschen/decorative/polymer/model/DirectionalItemDisplayModel.java index f5933b4..1ca031b 100644 --- a/src/main/java/eu/midnightdust/motschen/decorative/polymer/model/ItemDisplayDirectionalModel.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/polymer/model/DirectionalItemDisplayModel.java @@ -6,7 +6,6 @@ import eu.midnightdust.motschen.decorative.block.PoolSprinkler; import eu.midnightdust.motschen.decorative.block.ShowerHead; import eu.midnightdust.motschen.decorative.block.Sign; import eu.midnightdust.motschen.decorative.config.DecorativeConfig; -import eu.midnightdust.motschen.decorative.util.ColorUtil; import eu.pb4.factorytools.api.resourcepack.BaseItemProvider; import eu.pb4.factorytools.api.virtualentity.BlockModel; import eu.pb4.factorytools.api.virtualentity.ItemDisplayElementUtil; @@ -23,7 +22,7 @@ import java.util.Map; import static eu.midnightdust.motschen.decorative.DecorativeMain.id; -public class ItemDisplayDirectionalModel extends BlockModel { +public class DirectionalItemDisplayModel extends BlockModel { private final ItemDisplayElement main; public static ItemStack FIRE_HYDRANT; public static ItemStack GUARDRAIL; @@ -42,7 +41,7 @@ public class ItemDisplayDirectionalModel extends BlockModel { } } - public ItemDisplayDirectionalModel(BlockState state) { + public DirectionalItemDisplayModel(BlockState state) { this.main = ItemDisplayElementUtil.createSimple(getModel(state)); this.main.setDisplaySize(1, 1); this.main.setScale(new Vector3f(2)); diff --git a/src/main/java/eu/midnightdust/motschen/decorative/polymer/model/SimpleItemDisplayModel.java b/src/main/java/eu/midnightdust/motschen/decorative/polymer/model/SimpleItemDisplayModel.java new file mode 100644 index 0000000..188246e --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/polymer/model/SimpleItemDisplayModel.java @@ -0,0 +1,39 @@ +package eu.midnightdust.motschen.decorative.polymer.model; + +import eu.midnightdust.motschen.decorative.block.SignPost; +import eu.midnightdust.motschen.decorative.block.TrafficCone; +import eu.midnightdust.motschen.decorative.config.DecorativeConfig; +import eu.pb4.factorytools.api.resourcepack.BaseItemProvider; +import eu.pb4.factorytools.api.virtualentity.BlockModel; +import eu.pb4.factorytools.api.virtualentity.ItemDisplayElementUtil; +import eu.pb4.polymer.virtualentity.api.elements.ItemDisplayElement; +import net.minecraft.block.BlockState; +import net.minecraft.item.ItemStack; +import org.joml.Vector3f; + +import static eu.midnightdust.motschen.decorative.DecorativeMain.id; + +public class SimpleItemDisplayModel extends BlockModel { + public static ItemStack SIGN_POST; + public static ItemStack TRAFFIC_CONE; + + public static void initModels() { + SIGN_POST = BaseItemProvider.requestModel(id("block/sign_post")); + TRAFFIC_CONE = BaseItemProvider.requestModel(id("block/traffic_cone")); + } + + public SimpleItemDisplayModel(BlockState state) { + ItemDisplayElement main = ItemDisplayElementUtil.createSimple(getModel(state)); + main.setDisplaySize(1, 1); + main.setScale(new Vector3f(2)); + main.setViewRange(DecorativeConfig.viewDistance / 100f); + this.addElement(main); + } + + public ItemStack getModel(BlockState state) { + if (state.getBlock() instanceof SignPost) return SIGN_POST; + else if (state.getBlock() instanceof TrafficCone) return TRAFFIC_CONE; + else return null; + } +} +