Bird Bath on Polymer

This commit is contained in:
Martin Prokoph
2024-07-28 23:24:57 +02:00
parent 96f2dc67e3
commit 6d78a5684c
32 changed files with 344 additions and 33 deletions

View File

@@ -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<PoolShape> POOL_SHAPE = EnumProperty.of("shape", PoolShape.class);
public static final EnumProperty<Part> PART = EnumProperty.of("part", Part.class);
public static final EnumProperty<CeilingFanStage> 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));
}
}

View File

@@ -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);
}
}

View File

@@ -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<CeilingFanStage> 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();
}
}

View File

@@ -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();
}
}

View File

@@ -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<? extends HorizontalFacingBlock> getCodec() {
return null;
}
// Polymer
@Override
public BlockState getPolymerBlockState(BlockState state) {
return Blocks.BARRIER.getDefaultState();
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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<? extends HorizontalFacingBlock> getCodec() {
return null;
}
// Polymer
@Override
public BlockState getPolymerBlockState(BlockState state) {
return Blocks.BARRIER.getDefaultState();
}
}

View File

@@ -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<? extends HorizontalFacingBlock> getCodec() {
return null;
}
// Polymer
@Override
public BlockState getPolymerBlockState(BlockState state) {
return Blocks.BARRIER.getDefaultState();
}
}

View File

@@ -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();
}
}

View File

@@ -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<? extends HorizontalFacingBlock> getCodec() {
return null;
}
// Polymer
@Override
public BlockState getPolymerBlockState(BlockState state) {
return Blocks.BARRIER.getDefaultState();
}
}

View File

@@ -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();
}
}

View File

@@ -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<PoolShape> SHAPE = DecorativeMain.POOL_SHAPE;
@@ -144,4 +145,10 @@ public class PoolWall extends HorizontalFacingBlock implements Waterloggable {
protected MapCodec<? extends HorizontalFacingBlock> getCodec() {
return null;
}
// Polymer
@Override
public BlockState getPolymerBlockState(BlockState state) {
return Blocks.BARRIER.getDefaultState();
}
}

View File

@@ -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<? extends HorizontalFacingBlock> getCodec() {
return null;
}
// Polymer
@Override
public BlockState getPolymerBlockState(BlockState state) {
return Blocks.BARRIER.getDefaultState();
}
}

View File

@@ -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();
}
}

View File

@@ -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<? extends HorizontalFacingBlock> getCodec() {
return null;
}
// Polymer
@Override
public BlockState getPolymerBlockState(BlockState state) {
return Blocks.BARRIER.getDefaultState();
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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<? extends HorizontalFacingBlock> getCodec() {
return null;
}
// Polymer
@Override
public BlockState getPolymerBlockState(BlockState state) {
return Blocks.BARRIER.getDefaultState();
}
}

View File

@@ -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();
}
}

View File

@@ -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<? extends HorizontalFacingBlock> getCodec() {
return null;
}
// Polymer
@Override
public BlockState getPolymerBlockState(BlockState state) {
return Blocks.BARRIER.getDefaultState();
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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<? extends HorizontalFacingBlock> getCodec() {
return null;
}
// Polymer
@Override
public BlockState getPolymerBlockState(BlockState state) {
return Blocks.BARRIER.getDefaultState();
}
}

View File

@@ -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

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}
}

View File

@@ -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;
}
}

View File

@@ -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());
}

View File

@@ -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}
}
}
]
}