mirror of
https://github.com/TeamMidnightDust/Decorative.git
synced 2025-12-15 12:35:10 +01:00
Solid job.
- Solid blocks are now working on Polymer
This commit is contained in:
@@ -46,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 = 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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user