There ain't no traffic jam here

- All traffic decorations are now working properly with Polymer
This commit is contained in:
Martin Prokoph
2024-07-29 18:31:02 +02:00
parent 0a5636846c
commit 5149924bab
10 changed files with 82 additions and 28 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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