diff --git a/src/main/java/eu/midnightdust/motschen/decorative/DecorativeMain.java b/src/main/java/eu/midnightdust/motschen/decorative/DecorativeMain.java index a50e02f..ca446a1 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/DecorativeMain.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/DecorativeMain.java @@ -46,14 +46,14 @@ public class DecorativeMain implements ModInitializer { public static final EnumProperty POOL_SHAPE = EnumProperty.of("shape", PoolShape.class); public static final EnumProperty PART = EnumProperty.of("part", Part.class); public static final EnumProperty STAGE = EnumProperty.of("stage", CeilingFanStage.class); - public static Block RockyAsphalt = new TexturedSimpleBlock(Blocks.COAL_ORE); - public static Block Road = new TexturedSimpleBlock(Blocks.STONE); - public static Block RoadWhiteShort = new RotatableBlock(); - public static Block RoadWhiteLong = new RotatableBlock(); + public static Block RockyAsphalt = new TexturedSimpleBlock(Blocks.COAL_ORE, id("rocky_asphalt")); + public static Block Road = new TexturedSimpleBlock(Blocks.STONE, id("road")); + public static Block RoadWhiteShort = new RotatableBlock(id("road_white_short")); + public static Block RoadWhiteLong = new RotatableBlock(id("road_white_long")); public static Block TrafficCone = new TrafficCone(); public static Block Guardrail = new Guardrail(); public static Block SignPost = new SignPost(); - public static Block KitchenTiles = new TexturedSimpleBlock(Blocks.STONE); + public static Block KitchenTiles = new TexturedSimpleBlock(Blocks.STONE, id("kitchen_tiles")); public static Block Television = new Television(); public static Block OldTelevision = new OldTelevision(); public static Block CeilingFan = new CeilingFan(); 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 d100969..3d8c8e9 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,9 @@ 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.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.BlockEntityProvider; @@ -19,6 +21,8 @@ import net.minecraft.block.entity.BlockEntityTicker; import net.minecraft.block.entity.BlockEntityType; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemPlacementContext; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; @@ -131,5 +135,14 @@ public class PoolSprinkler extends BlockWithEntity implements BlockEntityProvide 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 ItemDisplayDirectionalModel(initialBlockState); + } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/PoolWall.java b/src/main/java/eu/midnightdust/motschen/decorative/block/PoolWall.java index bb0f46e..8407269 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/PoolWall.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/PoolWall.java @@ -149,6 +149,6 @@ public class PoolWall extends HorizontalFacingBlock implements Waterloggable, Fa // Polymer @Override public BlockState getPolymerBlockState(BlockState state) { - return Blocks.BARRIER.getDefaultState(); + return Blocks.STRUCTURE_VOID.getDefaultState(); } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/RotatableBlock.java b/src/main/java/eu/midnightdust/motschen/decorative/block/RotatableBlock.java index b9c52ac..e11bfe1 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/RotatableBlock.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/RotatableBlock.java @@ -1,6 +1,9 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; +import eu.pb4.polymer.blocks.api.BlockModelType; +import eu.pb4.polymer.blocks.api.PolymerBlockModel; +import eu.pb4.polymer.blocks.api.PolymerBlockResourceUtils; import eu.pb4.polymer.blocks.api.PolymerTexturedBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; @@ -10,13 +13,20 @@ import net.minecraft.block.HorizontalFacingBlock; import net.minecraft.item.ItemPlacementContext; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.state.StateManager; +import net.minecraft.util.Identifier; import net.minecraft.util.math.Direction; -public class RotatableBlock extends HorizontalFacingBlock implements PolymerTexturedBlock { +import static eu.midnightdust.motschen.decorative.DecorativeMain.id; - public RotatableBlock() { +public class RotatableBlock extends HorizontalFacingBlock implements PolymerTexturedBlock { + public BlockState MODEL_NORMAL; + public BlockState MODEL_ROTATED; + + public RotatableBlock(Identifier id) { super(AbstractBlock.Settings.copy(Blocks.STONE).nonOpaque().sounds(BlockSoundGroup.STONE)); this.setDefaultState(this.stateManager.getDefaultState().with(FACING, Direction.NORTH)); + MODEL_NORMAL = PolymerBlockResourceUtils.requestBlock(BlockModelType.FULL_BLOCK, PolymerBlockModel.of(id("block/"+id.getPath()))); + MODEL_ROTATED = PolymerBlockResourceUtils.requestBlock(BlockModelType.FULL_BLOCK, PolymerBlockModel.of(id("block/"+id.getPath()), 0, 90)); } @Override @@ -37,6 +47,9 @@ public class RotatableBlock extends HorizontalFacingBlock implements PolymerText // Polymer @Override public BlockState getPolymerBlockState(BlockState state) { - return Blocks.BARRIER.getDefaultState(); + return switch (state.get(FACING)) { + case NORTH, SOUTH -> MODEL_NORMAL; + default -> MODEL_ROTATED; + }; } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/polymer/TexturedSimpleBlock.java b/src/main/java/eu/midnightdust/motschen/decorative/polymer/TexturedSimpleBlock.java index da7d3cd..60fddf5 100644 --- a/src/main/java/eu/midnightdust/motschen/decorative/polymer/TexturedSimpleBlock.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/polymer/TexturedSimpleBlock.java @@ -1,21 +1,29 @@ package eu.midnightdust.motschen.decorative.polymer; +import eu.pb4.polymer.blocks.api.BlockModelType; +import eu.pb4.polymer.blocks.api.PolymerBlockModel; +import eu.pb4.polymer.blocks.api.PolymerBlockResourceUtils; import eu.pb4.polymer.blocks.api.PolymerTexturedBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; +import net.minecraft.util.Identifier; + +import static eu.midnightdust.motschen.decorative.DecorativeMain.id; public class TexturedSimpleBlock extends Block implements PolymerTexturedBlock { - public TexturedSimpleBlock(Block base) { - this(AbstractBlock.Settings.copy(base)); + private final BlockState MODEL; + + public TexturedSimpleBlock(Block base, Identifier id) { + this(AbstractBlock.Settings.copy(base), id); } - public TexturedSimpleBlock(Settings settings) { + public TexturedSimpleBlock(Settings settings, Identifier id) { super(settings); + MODEL = PolymerBlockResourceUtils.requestBlock(BlockModelType.FULL_BLOCK, PolymerBlockModel.of(id("block/"+id.getPath()))); } @Override public BlockState getPolymerBlockState(BlockState state) { - return Blocks.BARRIER.getDefaultState(); + return MODEL; } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/polymer/model/ItemDisplayDirectionalModel.java b/src/main/java/eu/midnightdust/motschen/decorative/polymer/model/ItemDisplayDirectionalModel.java index 0a99108..a83f994 100644 --- a/src/main/java/eu/midnightdust/motschen/decorative/polymer/model/ItemDisplayDirectionalModel.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/polymer/model/ItemDisplayDirectionalModel.java @@ -2,6 +2,7 @@ package eu.midnightdust.motschen.decorative.polymer.model; import eu.midnightdust.motschen.decorative.block.FireHydrant; import eu.midnightdust.motschen.decorative.block.Guardrail; +import eu.midnightdust.motschen.decorative.block.PoolSprinkler; import eu.midnightdust.motschen.decorative.config.DecorativeConfig; import eu.pb4.factorytools.api.resourcepack.BaseItemProvider; import eu.pb4.factorytools.api.virtualentity.BlockModel; @@ -20,10 +21,12 @@ public class ItemDisplayDirectionalModel extends BlockModel { private final ItemDisplayElement main; public static ItemStack FIRE_HYDRANT; public static ItemStack GUARDRAIL; + public static ItemStack POOL_SPRINKLER; public static void initModels() { FIRE_HYDRANT = BaseItemProvider.requestModel(id("block/fire_hydrant")); GUARDRAIL = BaseItemProvider.requestModel(id("block/guardrail")); + POOL_SPRINKLER = BaseItemProvider.requestModel(id("block/pool_sprinkler")); } public ItemDisplayDirectionalModel(BlockState state) { @@ -46,10 +49,12 @@ public class ItemDisplayDirectionalModel extends BlockModel { } public ItemStack getModel(BlockState state) { if (state.getBlock() instanceof FireHydrant) return FIRE_HYDRANT; + else if (state.getBlock() instanceof PoolSprinkler) return POOL_SPRINKLER; else return GUARDRAIL; } public float getRotation(BlockState state) { if (state.getBlock() instanceof FireHydrant) return state.get(FireHydrant.FACING).getHorizontal() * -90; + else if (state.getBlock() instanceof PoolSprinkler) return state.get(PoolSprinkler.FACING).getHorizontal() * -90; else return state.get(Guardrail.FACING).getHorizontal() * -90; } }