diff --git a/src/main/java/eu/midnightdust/motschen/decorative/DecorativeMain.java b/src/main/java/eu/midnightdust/motschen/decorative/DecorativeMain.java index b05bb76..a50e02f 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/DecorativeMain.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/DecorativeMain.java @@ -8,6 +8,8 @@ import eu.midnightdust.motschen.decorative.blockstates.PoolShape; import eu.midnightdust.motschen.decorative.blockstates.Program; import eu.midnightdust.motschen.decorative.config.DecorativeConfig; import eu.midnightdust.motschen.decorative.init.*; +import eu.midnightdust.motschen.decorative.polymer.PolymerSupport; +import eu.midnightdust.motschen.decorative.polymer.TexturedSimpleBlock; import eu.midnightdust.motschen.decorative.sound.DecorativeSoundEvents; import eu.midnightdust.motschen.decorative.util.RegistryUtil; import eu.midnightdust.motschen.decorative.world.OreFeatures; @@ -44,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 = simpleBlock(Blocks.COAL_ORE); - public static Block Road = simpleBlock(Blocks.STONE); + 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 TrafficCone = new TrafficCone(); public static Block Guardrail = new Guardrail(); public static Block SignPost = new SignPost(); - public static Block KitchenTiles = simpleBlock(Blocks.STONE); + public static Block KitchenTiles = new TexturedSimpleBlock(Blocks.STONE); public static Block Television = new Television(); public static Block OldTelevision = new OldTelevision(); public static Block CeilingFan = new CeilingFan(); @@ -68,6 +70,7 @@ public class DecorativeMain implements ModInitializer { @Override public void onInitialize() { MidnightConfig.init(MOD_ID, DecorativeConfig.class); + PolymerSupport.init(); IndoorGroup = createGroup(id("indoor"), DecorativeMain.Television); TrafficGroup = createGroup(id("traffic"), DecorativeMain.TrafficCone); @@ -135,8 +138,4 @@ public class DecorativeMain implements ModInitializer { } return group; } - public static Block simpleBlock(Block base) { - if (DecorativeConfig.polymerIntegration) return new SimplePolymerBlock(AbstractBlock.Settings.copy(base), base); - else return new Block(AbstractBlock.Settings.copy(base)); - } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/BirdBath.java b/src/main/java/eu/midnightdust/motschen/decorative/block/BirdBath.java index 934f509..c2d77d4 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/BirdBath.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/BirdBath.java @@ -1,8 +1,12 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; +import eu.midnightdust.motschen.decorative.polymer.model.ItemDisplayBirdBathModel; +import eu.pb4.factorytools.api.block.FactoryBlock; +import eu.pb4.polymer.virtualentity.api.ElementHolder; import net.minecraft.block.*; import net.minecraft.block.cauldron.CauldronBehavior; +import net.minecraft.block.enums.BlockFace; import net.minecraft.component.ComponentMap; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.PotionContentsComponent; @@ -13,9 +17,12 @@ import net.minecraft.item.ItemPlacementContext; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.potion.Potions; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.state.StateManager; import net.minecraft.state.property.IntProperty; +import net.minecraft.state.property.Properties; import net.minecraft.util.Hand; import net.minecraft.util.ItemActionResult; import net.minecraft.util.hit.BlockHitResult; @@ -24,10 +31,11 @@ import net.minecraft.util.shape.VoxelShape; import net.minecraft.world.BlockView; import net.minecraft.world.World; import net.minecraft.world.WorldView; +import org.jetbrains.annotations.Nullable; import java.util.Objects; -public class BirdBath extends AbstractCauldronBlock { +public class BirdBath extends AbstractCauldronBlock implements FactoryBlock { private static final VoxelShape SHAPE; public static final IntProperty LEVEL = IntProperty.of("level",0,3); @@ -119,4 +127,18 @@ public class BirdBath extends AbstractCauldronBlock { return !worldView.isAir(pos.down()); } + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } + @Override + public BlockState getPolymerBreakEventBlockState(BlockState state, ServerPlayerEntity player) { + return Blocks.COBBLESTONE.getDefaultState(); + } + + @Override + public @Nullable ElementHolder createElementHolder(ServerWorld world, BlockPos pos, BlockState initialBlockState) { + return new ItemDisplayBirdBathModel(initialBlockState, pos, world); + } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/CeilingFan.java b/src/main/java/eu/midnightdust/motschen/decorative/block/CeilingFan.java index a21a4f8..753aebc 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/CeilingFan.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/CeilingFan.java @@ -5,6 +5,7 @@ import eu.midnightdust.motschen.decorative.blockstates.CeilingFanStage; import eu.midnightdust.motschen.decorative.DecorativeMain; import eu.midnightdust.motschen.decorative.block.blockentity.CeilingFanBlockEntity; import eu.midnightdust.motschen.decorative.init.BlockEntities; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockEntityProvider; @@ -32,7 +33,7 @@ import net.minecraft.world.World; import net.minecraft.world.WorldView; import org.jetbrains.annotations.Nullable; -public class CeilingFan extends BlockWithEntity implements BlockEntityProvider { +public class CeilingFan extends BlockWithEntity implements BlockEntityProvider, FactoryBlock { private static final VoxelShape SHAPE; private static final EnumProperty STAGE = DecorativeMain.STAGE; @@ -88,4 +89,10 @@ public class CeilingFan extends BlockWithEntity implements BlockEntityProvider { return !worldView.isAir(pos.up()); } + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } + } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/ChoppingLog.java b/src/main/java/eu/midnightdust/motschen/decorative/block/ChoppingLog.java index 9d4c15a..9cf9bd6 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/ChoppingLog.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/ChoppingLog.java @@ -3,6 +3,7 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; import eu.midnightdust.motschen.decorative.block.blockentity.ChoppingLogBlockEntity; import eu.midnightdust.motschen.decorative.init.BlockEntities; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockEntityProvider; @@ -26,7 +27,7 @@ import org.jetbrains.annotations.Nullable; import java.util.Objects; -public class ChoppingLog extends BlockWithEntity implements BlockEntityProvider { +public class ChoppingLog extends BlockWithEntity implements BlockEntityProvider, FactoryBlock { private static final DirectionProperty FACING = HorizontalFacingBlock.FACING; public ChoppingLog() { @@ -69,4 +70,10 @@ public class ChoppingLog extends BlockWithEntity implements BlockEntityProvider return BlockRenderType.MODEL; } + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } + } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/ChristmasLights.java b/src/main/java/eu/midnightdust/motschen/decorative/block/ChristmasLights.java index 4e316af..0da652c 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/ChristmasLights.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/ChristmasLights.java @@ -1,6 +1,7 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -26,7 +27,7 @@ import net.minecraft.world.BlockView; import net.minecraft.world.World; import net.minecraft.world.WorldView; -public class ChristmasLights extends HorizontalFacingBlock { +public class ChristmasLights extends HorizontalFacingBlock implements FactoryBlock { private static final VoxelShape NORTH_SHAPE; private static final VoxelShape EAST_SHAPE; @@ -95,4 +96,10 @@ public class ChristmasLights extends HorizontalFacingBlock { protected MapCodec getCodec() { return null; } + + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/ChristmasTree.java b/src/main/java/eu/midnightdust/motschen/decorative/block/ChristmasTree.java index ed747ca..0dce2eb 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/ChristmasTree.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/ChristmasTree.java @@ -1,5 +1,6 @@ package eu.midnightdust.motschen.decorative.block; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -11,7 +12,7 @@ import net.minecraft.util.shape.VoxelShape; import net.minecraft.world.BlockView; import net.minecraft.world.WorldView; -public class ChristmasTree extends Block { +public class ChristmasTree extends Block implements FactoryBlock { private static final VoxelShape SHAPE; public ChristmasTree() { @@ -30,4 +31,10 @@ public class ChristmasTree extends Block { return !worldView.isAir(pos.down()); } + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } + } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/DigitalClock.java b/src/main/java/eu/midnightdust/motschen/decorative/block/DigitalClock.java index 839e237..43ebc81 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/DigitalClock.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/DigitalClock.java @@ -3,6 +3,7 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; import eu.midnightdust.motschen.decorative.block.blockentity.DigitalClockBlockEntity; import eu.midnightdust.motschen.decorative.init.BlockEntities; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockEntityProvider; @@ -27,7 +28,7 @@ import net.minecraft.world.BlockView; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; -public class DigitalClock extends BlockWithEntity implements BlockEntityProvider { +public class DigitalClock extends BlockWithEntity implements BlockEntityProvider, FactoryBlock { private static final DirectionProperty FACING = HorizontalFacingBlock.FACING; private static final VoxelShape NORTH_SHAPE; private static final VoxelShape EAST_SHAPE; @@ -99,4 +100,10 @@ public class DigitalClock extends BlockWithEntity implements BlockEntityProvider return buffer[0]; } + + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/DoubleLamp.java b/src/main/java/eu/midnightdust/motschen/decorative/block/DoubleLamp.java index d177387..366a86e 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/DoubleLamp.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/DoubleLamp.java @@ -1,5 +1,6 @@ package eu.midnightdust.motschen.decorative.block; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -28,7 +29,7 @@ import net.minecraft.world.World; import net.minecraft.world.WorldAccess; import net.minecraft.world.WorldView; -public class DoubleLamp extends Block { +public class DoubleLamp extends Block implements FactoryBlock { private static final VoxelShape SHAPE_TOP; private static final VoxelShape SHAPE_BOTTOM; @@ -96,4 +97,10 @@ public class DoubleLamp extends Block { SHAPE_TOP = shape_top; SHAPE_BOTTOM = shape_bottom; } + + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } } 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 5ef16cb..b9e77e8 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/FireHydrant.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/FireHydrant.java @@ -1,6 +1,7 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -27,7 +28,7 @@ import net.minecraft.world.BlockView; import net.minecraft.world.World; import net.minecraft.world.WorldView; -public class FireHydrant extends HorizontalFacingBlock { +public class FireHydrant extends HorizontalFacingBlock implements FactoryBlock { private static final VoxelShape NORTH_SHAPE; private static final VoxelShape EAST_SHAPE; private static final VoxelShape SOUTH_SHAPE; @@ -97,4 +98,10 @@ public class FireHydrant extends HorizontalFacingBlock { protected MapCodec getCodec() { return null; } + + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } } 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 fed5665..efec5a2 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/Guardrail.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/Guardrail.java @@ -1,6 +1,7 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -17,7 +18,7 @@ import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; import net.minecraft.world.WorldView; -public class Guardrail extends HorizontalFacingBlock { +public class Guardrail extends HorizontalFacingBlock implements FactoryBlock { private static final VoxelShape NORTH_SHAPE; private static final VoxelShape EAST_SHAPE; private static final VoxelShape SOUTH_SHAPE; @@ -76,4 +77,10 @@ public class Guardrail extends HorizontalFacingBlock { protected MapCodec getCodec() { return null; } + + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/Lamp.java b/src/main/java/eu/midnightdust/motschen/decorative/block/Lamp.java index 94f8063..d323f39 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/Lamp.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/Lamp.java @@ -1,5 +1,6 @@ package eu.midnightdust.motschen.decorative.block; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -21,7 +22,7 @@ import net.minecraft.util.shape.VoxelShape; import net.minecraft.world.BlockView; import net.minecraft.world.World; -public class Lamp extends Block { +public class Lamp extends Block implements FactoryBlock { private static final VoxelShape SHAPE; public static final BooleanProperty LIT = RedstoneLampBlock.LIT; @@ -51,4 +52,10 @@ public class Lamp extends Block { VoxelShape shape = createCuboidShape(4, 0, 4, 12, 10, 12); SHAPE = shape; } + + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/OldTelevision.java b/src/main/java/eu/midnightdust/motschen/decorative/block/OldTelevision.java index a7e30f1..d384b38 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/OldTelevision.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/OldTelevision.java @@ -3,6 +3,7 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; import eu.midnightdust.motschen.decorative.DecorativeMain; import eu.midnightdust.motschen.decorative.blockstates.Program; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -28,7 +29,7 @@ import net.minecraft.world.WorldView; import java.util.function.ToIntFunction; -public class OldTelevision extends HorizontalFacingBlock { +public class OldTelevision extends HorizontalFacingBlock implements FactoryBlock { private static final VoxelShape NORTH_SHAPE; private static final VoxelShape EAST_SHAPE; @@ -107,4 +108,10 @@ public class OldTelevision extends HorizontalFacingBlock { protected MapCodec getCodec() { return null; } + + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } } 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 d1022a6..8ca8028 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/PoolSprinkler.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/PoolSprinkler.java @@ -3,6 +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.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockEntityProvider; @@ -37,7 +38,7 @@ import org.jetbrains.annotations.Nullable; import java.util.Objects; -public class PoolSprinkler extends BlockWithEntity implements BlockEntityProvider { +public class PoolSprinkler extends BlockWithEntity implements BlockEntityProvider, FactoryBlock { public static final DirectionProperty FACING = HorizontalFacingBlock.FACING; public static final BooleanProperty POWERED = DoorBlock.POWERED; private static final VoxelShape NORTH_SHAPE; @@ -125,4 +126,10 @@ public class PoolSprinkler extends BlockWithEntity implements BlockEntityProvide return BlockRenderType.MODEL; } + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } + } 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 cdf9afb..02b01fd 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/PoolWall.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/PoolWall.java @@ -3,6 +3,7 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; import eu.midnightdust.motschen.decorative.DecorativeMain; import eu.midnightdust.motschen.decorative.blockstates.PoolShape; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -26,7 +27,7 @@ import net.minecraft.util.shape.VoxelShape; import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; -public class PoolWall extends HorizontalFacingBlock implements Waterloggable { +public class PoolWall extends HorizontalFacingBlock implements Waterloggable, FactoryBlock { public static final DirectionProperty FACING = DoorBlock.FACING; public static final BooleanProperty WATERLOGGED = Properties.WATERLOGGED; public static final EnumProperty SHAPE = DecorativeMain.POOL_SHAPE; @@ -144,4 +145,10 @@ public class PoolWall extends HorizontalFacingBlock implements Waterloggable { protected MapCodec getCodec() { return null; } + + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.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 0926d34..b494336 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,7 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; +import eu.pb4.polymer.blocks.api.PolymerTexturedBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -11,7 +12,7 @@ import net.minecraft.sound.BlockSoundGroup; import net.minecraft.state.StateManager; import net.minecraft.util.math.Direction; -public class RotatableBlock extends HorizontalFacingBlock { +public class RotatableBlock extends HorizontalFacingBlock implements PolymerTexturedBlock { public RotatableBlock() { super(AbstractBlock.Settings.copy(Blocks.STONE).nonOpaque().sounds(BlockSoundGroup.STONE)); @@ -32,4 +33,10 @@ public class RotatableBlock extends HorizontalFacingBlock { protected MapCodec getCodec() { return null; } + + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } } 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 eda12e5..c4530b8 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/ShowerHead.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/ShowerHead.java @@ -3,6 +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.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockEntityProvider; @@ -35,7 +36,7 @@ import net.minecraft.world.World; import net.minecraft.world.WorldView; import org.jetbrains.annotations.Nullable; -public class ShowerHead extends BlockWithEntity implements BlockEntityProvider { +public class ShowerHead extends BlockWithEntity implements BlockEntityProvider, FactoryBlock { private static final DirectionProperty FACING = HorizontalFacingBlock.FACING; public static final BooleanProperty POWERED = DoorBlock.POWERED; private static final VoxelShape NORTH_SHAPE; @@ -125,4 +126,10 @@ public class ShowerHead extends BlockWithEntity implements BlockEntityProvider { return BlockRenderType.MODEL; } + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } + } 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 a9b0b62..275f38c 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/Sign.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/Sign.java @@ -1,6 +1,7 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -17,7 +18,7 @@ import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; import net.minecraft.world.WorldView; -public class Sign extends HorizontalFacingBlock { +public class Sign extends HorizontalFacingBlock implements FactoryBlock { private static final VoxelShape NORTH_SHAPE; private static final VoxelShape EAST_SHAPE; private static final VoxelShape SOUTH_SHAPE; @@ -77,4 +78,10 @@ public class Sign extends HorizontalFacingBlock { protected MapCodec getCodec() { return null; } + + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } } 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 c41de44..edfa466 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/SignPost.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/SignPost.java @@ -1,5 +1,6 @@ package eu.midnightdust.motschen.decorative.block; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -11,7 +12,7 @@ import net.minecraft.util.shape.VoxelShape; import net.minecraft.world.BlockView; import net.minecraft.world.WorldView; -public class SignPost extends Block { +public class SignPost extends Block implements FactoryBlock { private static final VoxelShape SHAPE; public SignPost() { @@ -30,4 +31,9 @@ public class SignPost extends Block { return !worldView.isAir(pos.down()); } + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/SlidingDoor.java b/src/main/java/eu/midnightdust/motschen/decorative/block/SlidingDoor.java index 46fb799..afbbee2 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/SlidingDoor.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/SlidingDoor.java @@ -1,5 +1,6 @@ package eu.midnightdust.motschen.decorative.block; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.BlockSetType; import net.minecraft.block.BlockState; @@ -20,7 +21,7 @@ import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; import net.minecraft.world.World; -public class SlidingDoor extends DoorBlock { +public class SlidingDoor extends DoorBlock implements FactoryBlock { private static final VoxelShape NORTH_SHAPE; private static final VoxelShape EAST_SHAPE; @@ -79,4 +80,10 @@ public class SlidingDoor extends DoorBlock { return buffer[0]; } + + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } } \ No newline at end of file diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/Springboard.java b/src/main/java/eu/midnightdust/motschen/decorative/block/Springboard.java index e1fd43d..520564e 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/Springboard.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/Springboard.java @@ -3,6 +3,7 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; import eu.midnightdust.motschen.decorative.DecorativeMain; import eu.midnightdust.motschen.decorative.blockstates.Part; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -31,7 +32,7 @@ import net.minecraft.world.WorldView; import java.util.Objects; -public class Springboard extends HorizontalFacingBlock { +public class Springboard extends HorizontalFacingBlock implements FactoryBlock { private static final VoxelShape NORTH_SHAPE_FRONT; private static final VoxelShape EAST_SHAPE_FRONT; private static final VoxelShape SOUTH_SHAPE_FRONT; @@ -254,4 +255,10 @@ public class Springboard extends HorizontalFacingBlock { protected MapCodec getCodec() { return null; } + + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/StonePath.java b/src/main/java/eu/midnightdust/motschen/decorative/block/StonePath.java index e330007..68560df 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/StonePath.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/StonePath.java @@ -1,5 +1,6 @@ package eu.midnightdust.motschen.decorative.block; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -12,7 +13,7 @@ import net.minecraft.util.shape.VoxelShape; import net.minecraft.world.BlockView; import net.minecraft.world.WorldView; -public class StonePath extends Block { +public class StonePath extends Block implements FactoryBlock { private static final VoxelShape SHAPE; public StonePath() { @@ -31,4 +32,9 @@ public class StonePath extends Block { return worldView.getBlockState(pos.down()).isSideSolidFullSquare(worldView,pos,Direction.UP); } + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/Television.java b/src/main/java/eu/midnightdust/motschen/decorative/block/Television.java index 4510ea1..61b241a 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/Television.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/Television.java @@ -3,6 +3,7 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; import eu.midnightdust.motschen.decorative.DecorativeMain; import eu.midnightdust.motschen.decorative.blockstates.Program; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -29,7 +30,7 @@ import net.minecraft.world.WorldView; import java.util.Objects; import java.util.function.ToIntFunction; -public class Television extends HorizontalFacingBlock { +public class Television extends HorizontalFacingBlock implements FactoryBlock { private static final VoxelShape NORTH_SHAPE; private static final VoxelShape EAST_SHAPE; @@ -106,9 +107,14 @@ public class Television extends HorizontalFacingBlock { }; } - @Override protected MapCodec getCodec() { return null; } + + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } } 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 1831ea9..142379c 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/TrafficCone.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/TrafficCone.java @@ -1,5 +1,6 @@ package eu.midnightdust.motschen.decorative.block; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -11,7 +12,7 @@ import net.minecraft.util.shape.VoxelShape; import net.minecraft.world.BlockView; import net.minecraft.world.WorldView; -public class TrafficCone extends Block { +public class TrafficCone extends Block implements FactoryBlock { private static final VoxelShape SHAPE; public TrafficCone() { @@ -30,4 +31,10 @@ public class TrafficCone extends Block { return !worldView.isAir(pos.down()); } + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } + } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/WallClock.java b/src/main/java/eu/midnightdust/motschen/decorative/block/WallClock.java index f3b62cf..7896176 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/WallClock.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/WallClock.java @@ -3,6 +3,7 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; import eu.midnightdust.motschen.decorative.block.blockentity.WallClockBlockEntity; import eu.midnightdust.motschen.decorative.init.BlockEntities; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockEntityProvider; @@ -29,7 +30,7 @@ import org.jetbrains.annotations.Nullable; import java.util.Objects; -public class WallClock extends BlockWithEntity implements BlockEntityProvider { +public class WallClock extends BlockWithEntity implements BlockEntityProvider, FactoryBlock { private static final DirectionProperty FACING = HorizontalFacingBlock.FACING; private static final VoxelShape NORTH_SHAPE; private static final VoxelShape EAST_SHAPE; @@ -102,4 +103,10 @@ public class WallClock extends BlockWithEntity implements BlockEntityProvider { return buffer[0]; } + + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/WaterPump.java b/src/main/java/eu/midnightdust/motschen/decorative/block/WaterPump.java index c9d097b..0040920 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/WaterPump.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/WaterPump.java @@ -1,6 +1,7 @@ package eu.midnightdust.motschen.decorative.block; import com.mojang.serialization.MapCodec; +import eu.pb4.factorytools.api.block.FactoryBlock; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -30,7 +31,7 @@ import net.minecraft.world.WorldView; import java.util.Objects; -public class WaterPump extends HorizontalFacingBlock { +public class WaterPump extends HorizontalFacingBlock implements FactoryBlock { private static final VoxelShape NORTH_SHAPE; private static final VoxelShape EAST_SHAPE; private static final VoxelShape SOUTH_SHAPE; @@ -101,4 +102,10 @@ public class WaterPump extends HorizontalFacingBlock { protected MapCodec getCodec() { return null; } + + // Polymer + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } } diff --git a/src/main/java/eu/midnightdust/motschen/decorative/config/DecorativeConfig.java b/src/main/java/eu/midnightdust/motschen/decorative/config/DecorativeConfig.java index db551ff..f82611c 100755 --- a/src/main/java/eu/midnightdust/motschen/decorative/config/DecorativeConfig.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/config/DecorativeConfig.java @@ -7,6 +7,7 @@ import java.util.TimeZone; public class DecorativeConfig extends MidnightConfig { @Entry public static TimeFormat timeFormat = TimeZone.getDefault().useDaylightTime() ? TimeFormat.h12 : TimeFormat.h24; @Entry public static boolean polymerIntegration = false; + @Entry(min = 0, max = 200, isSlider = true) public static int viewDistance = 100; public enum TimeFormat { h12, h24 diff --git a/src/main/java/eu/midnightdust/motschen/decorative/polymer/PolymerSupport.java b/src/main/java/eu/midnightdust/motschen/decorative/polymer/PolymerSupport.java new file mode 100644 index 0000000..bd68a3c --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/polymer/PolymerSupport.java @@ -0,0 +1,9 @@ +package eu.midnightdust.motschen.decorative.polymer; + +import eu.midnightdust.motschen.decorative.polymer.model.ItemDisplayBirdBathModel; + +public class PolymerSupport { + public static void init() { + ItemDisplayBirdBathModel.initModels(); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/polymer/TexturedSimpleBlock.java b/src/main/java/eu/midnightdust/motschen/decorative/polymer/TexturedSimpleBlock.java new file mode 100644 index 0000000..da7d3cd --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/polymer/TexturedSimpleBlock.java @@ -0,0 +1,21 @@ +package eu.midnightdust.motschen.decorative.polymer; + +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; + +public class TexturedSimpleBlock extends Block implements PolymerTexturedBlock { + public TexturedSimpleBlock(Block base) { + this(AbstractBlock.Settings.copy(base)); + } + public TexturedSimpleBlock(Settings settings) { + super(settings); + } + + @Override + public BlockState getPolymerBlockState(BlockState state) { + return Blocks.BARRIER.getDefaultState(); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/polymer/model/ItemDisplayBirdBathModel.java b/src/main/java/eu/midnightdust/motschen/decorative/polymer/model/ItemDisplayBirdBathModel.java new file mode 100644 index 0000000..74fe6d5 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/polymer/model/ItemDisplayBirdBathModel.java @@ -0,0 +1,69 @@ +package eu.midnightdust.motschen.decorative.polymer.model; + +import eu.midnightdust.motschen.decorative.block.BirdBath; +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; +import eu.pb4.polymer.virtualentity.api.attachment.BlockAwareAttachment; +import eu.pb4.polymer.virtualentity.api.attachment.HolderAttachment; +import eu.pb4.polymer.virtualentity.api.elements.ItemDisplayElement; +import net.minecraft.block.BlockState; +import net.minecraft.component.ComponentMap; +import net.minecraft.component.DataComponentTypes; +import net.minecraft.component.type.PotionContentsComponent; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.potion.Potions; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import org.joml.Vector3f; + +import java.util.List; +import java.util.Optional; + +import static eu.midnightdust.motschen.decorative.DecorativeMain.id; + +public class ItemDisplayBirdBathModel extends BlockModel { + private final ItemDisplayElement main; + private final ItemDisplayElement water; + public static ItemStack STONE; + public static ItemStack WATER; + + public static void initModels() { + STONE = BaseItemProvider.requestModel(id("block/bird_bath")); + WATER = BaseItemProvider.requestModel(Items.POTION, id("block/polymer/bird_bath_water")); + } + + public ItemDisplayBirdBathModel(BlockState state, BlockPos pos, ServerWorld world) { + this.main = ItemDisplayElementUtil.createSimple(STONE); + this.main.setDisplaySize(1, 1); + this.main.setScale(new Vector3f(2)); + this.main.setViewRange(0.75f * (DecorativeConfig.viewDistance / 100f)); + this.addElement(this.main); + + //int color = ColorUtil.convertRgbToArgb(world.getColor(pos, BiomeColors.WATER_COLOR)); + int color = ColorUtil.convertRgbToArgb(4159204); + WATER.applyComponentsFrom(ComponentMap.builder().add(DataComponentTypes.POTION_CONTENTS, new PotionContentsComponent(Optional.of(Potions.WATER), Optional.of(color), List.of())).build()); + this.water = ItemDisplayElementUtil.createSimple(WATER); + this.water.setDisplaySize(1, 1); + this.water.setScale(new Vector3f(2)); + this.water.setOffset(new Vec3d(0d, -0.025 * (3-(state.get(BirdBath.LEVEL))), 0d)); + this.water.setViewRange(state.get(BirdBath.LEVEL) != 0 ? (0.75f * (DecorativeConfig.viewDistance / 100f)) : 0); + this.addElement(this.water); + } + + @Override + public void notifyUpdate(HolderAttachment.UpdateType updateType) { + if (updateType == BlockAwareAttachment.BLOCK_STATE_UPDATE) { + var state = this.blockState(); + this.water.setViewRange(state.get(BirdBath.LEVEL) != 0 ? (0.75f * (DecorativeConfig.viewDistance / 100f)) : 0); + this.water.setOffset(new Vec3d(0d, -0.025 * (3-(state.get(BirdBath.LEVEL))), 0d)); + + this.tick(); + } + } +} + diff --git a/src/main/java/eu/midnightdust/motschen/decorative/util/ColorUtil.java b/src/main/java/eu/midnightdust/motschen/decorative/util/ColorUtil.java new file mode 100644 index 0000000..a6a125b --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/util/ColorUtil.java @@ -0,0 +1,12 @@ +package eu.midnightdust.motschen.decorative.util; + +public class ColorUtil { + public static int convertRgbToArgb(int rgb) { + int red = 0xFF & (rgb >> 16); + int green = 0xFF & (rgb >> 8); + int blue = 0xFF & (rgb); + int alpha = 200; // Makes water bottles transparent, 255 would be opaque + + return (alpha << 24) | (red << 16) | (green << 8) | blue; + } +} \ No newline at end of file diff --git a/src/main/java/eu/midnightdust/motschen/decorative/util/RegistryUtil.java b/src/main/java/eu/midnightdust/motschen/decorative/util/RegistryUtil.java index 8445b87..44aba32 100644 --- a/src/main/java/eu/midnightdust/motschen/decorative/util/RegistryUtil.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/util/RegistryUtil.java @@ -45,7 +45,10 @@ public class RegistryUtil { } public static Item blockItem(Block block) { - if (DecorativeConfig.polymerIntegration) return new FactoryBlockItem((Block & PolymerBlock) block, new Item.Settings()); + if (DecorativeConfig.polymerIntegration) { + if (block instanceof PolymerBlock) return new FactoryBlockItem((Block & PolymerBlock) block, new Item.Settings()); + else System.out.println(block); + } return new BlockItem(block, new Item.Settings()); } diff --git a/src/main/resources/assets/decorative/models/block/polymer/bird_bath_water.json b/src/main/resources/assets/decorative/models/block/polymer/bird_bath_water.json new file mode 100755 index 0000000..e5a584c --- /dev/null +++ b/src/main/resources/assets/decorative/models/block/polymer/bird_bath_water.json @@ -0,0 +1,17 @@ +{ + "credit": "made by Motschen", + "parent": "block/block", + "textures": { + "water": "block/water_still" + }, + "elements": [ + { + "from": [5, 8.5, 5], + "to": [11, 8.6, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [14, 16, 14]}, + "faces": { + "up": {"uv": [0, 0, 6, 6], "texture": "#water", "tintindex": 0} + } + } + ] +} \ No newline at end of file