diff --git a/src/main/java/com/minelittlepony/unicopia/block/BlockChitin.java b/src/main/java/com/minelittlepony/unicopia/block/BlockChitin.java index 64922218..03575956 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/BlockChitin.java +++ b/src/main/java/com/minelittlepony/unicopia/block/BlockChitin.java @@ -10,16 +10,23 @@ import com.minelittlepony.unicopia.player.PlayerSpeciesList; import net.minecraft.block.Block; import net.minecraft.block.material.MapColor; +import net.minecraft.block.properties.PropertyEnum; +import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.IStringSerializable; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class BlockChitin extends Block { + public static final PropertyEnum COVERING = PropertyEnum.create("covering", Covering.class); + public BlockChitin(String domain, String name) { super(UMaterials.hive); @@ -28,6 +35,7 @@ public class BlockChitin extends Block { setCreativeTab(CreativeTabs.BUILDING_BLOCKS); setHardness(50); setResistance(2000); + setDefaultState(blockState.getBaseState().withProperty(COVERING, Covering.UNCOVERED)); } @Override @@ -66,4 +74,42 @@ public class BlockChitin extends Block { return hardness; } + + @Override + public int getMetaFromState(IBlockState state) { + return 0; + } + + @Override + public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) { + IBlockState s = world.getBlockState(pos.up()); + Block block = s.getBlock(); + + boolean snowy = block == Blocks.SNOW || block == Blocks.SNOW_LAYER; + boolean solid = (s.isFullBlock() && s.isFullCube()) || s.isSideSolid(world, pos.up(), EnumFacing.DOWN); + + return state.withProperty(COVERING, snowy ? Covering.SNOW_COVERED : solid ? Covering.COVERED : Covering.UNCOVERED); + } + + @Override + protected BlockStateContainer createBlockState() { + return new BlockStateContainer(this, COVERING); + } + + public static enum Covering implements IStringSerializable { + COVERED, + UNCOVERED, + SNOW_COVERED; + + @Override + public String toString() { + return getName(); + } + + @Override + public String getName() { + return name().toLowerCase(); + } + + } } diff --git a/src/main/resources/assets/unicopia/blockstates/chitin_block.json b/src/main/resources/assets/unicopia/blockstates/chitin_block.json index 4640da25..a2663eda 100644 --- a/src/main/resources/assets/unicopia/blockstates/chitin_block.json +++ b/src/main/resources/assets/unicopia/blockstates/chitin_block.json @@ -1,5 +1,7 @@ { "variants": { - "normal": { "model": "unicopia:chitin_block" } + "covering=uncovered": { "model": "unicopia:chitin_block_uncovered" }, + "covering=covered": { "model": "unicopia:chitin_block_covered" }, + "covering=snow_covered": { "model": "unicopia:chitin_block_snow_covered" } } } diff --git a/src/main/resources/assets/unicopia/models/block/chitin_block.json b/src/main/resources/assets/unicopia/models/block/chitin_block.json deleted file mode 100644 index 9c8be6d6..00000000 --- a/src/main/resources/assets/unicopia/models/block/chitin_block.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "unicopia:blocks/chitin_block" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/unicopia/models/block/chitin_block_covered.json b/src/main/resources/assets/unicopia/models/block/chitin_block_covered.json new file mode 100644 index 00000000..4f6cc99c --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/chitin_block_covered.json @@ -0,0 +1,8 @@ +{ + "parent": "block/cube_bottom_top", + "textures": { + "bottom": "unicopia:blocks/chitin_block_covered", + "top": "unicopia:blocks/chitin_block_top", + "side": "unicopia:blocks/chitin_block_covered" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/unicopia/models/block/chitin_block_snow_covered.json b/src/main/resources/assets/unicopia/models/block/chitin_block_snow_covered.json new file mode 100644 index 00000000..fca60bf2 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/chitin_block_snow_covered.json @@ -0,0 +1,8 @@ +{ + "parent": "block/cube_bottom_top", + "textures": { + "bottom": "unicopia:blocks/chitin_block_covered", + "top": "unicopia:blocks/chitin_block_top", + "side": "unicopia:blocks/chitin_block_snow_covered" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/unicopia/models/block/chitin_block_uncovered.json b/src/main/resources/assets/unicopia/models/block/chitin_block_uncovered.json new file mode 100644 index 00000000..67c57089 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/chitin_block_uncovered.json @@ -0,0 +1,22 @@ +{ + "parent": "block/cube_all", + "textures": { + "bottom": "unicopia:blocks/chitin_block_covered", + "particle": "unicopia:blocks/chitin_block_uncovered", + "top": "unicopia:blocks/chitin_block_top", + "side": "unicopia:blocks/chitin_block_uncovered" + }, + "elements": [ + { "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down" }, + "up": { "texture": "#top", "cullface": "up" }, + "north": { "texture": "#side", "cullface": "north" }, + "south": { "texture": "#side", "cullface": "south" }, + "west": { "texture": "#side", "cullface": "west" }, + "east": { "texture": "#side", "cullface": "east" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/unicopia/models/item/chitin_block.json b/src/main/resources/assets/unicopia/models/item/chitin_block.json index 740d2631..63860a70 100644 --- a/src/main/resources/assets/unicopia/models/item/chitin_block.json +++ b/src/main/resources/assets/unicopia/models/item/chitin_block.json @@ -1,3 +1,3 @@ { - "parent": "unicopia:block/chitin_block" + "parent": "unicopia:block/chitin_block_uncovered" } diff --git a/src/main/resources/assets/unicopia/textures/blocks/chitin_block_bottom.png b/src/main/resources/assets/unicopia/textures/blocks/chitin_block_bottom.png new file mode 100644 index 00000000..6f1e1a72 Binary files /dev/null and b/src/main/resources/assets/unicopia/textures/blocks/chitin_block_bottom.png differ diff --git a/src/main/resources/assets/unicopia/textures/blocks/chitin_block.png b/src/main/resources/assets/unicopia/textures/blocks/chitin_block_covered.png similarity index 100% rename from src/main/resources/assets/unicopia/textures/blocks/chitin_block.png rename to src/main/resources/assets/unicopia/textures/blocks/chitin_block_covered.png diff --git a/src/main/resources/assets/unicopia/textures/blocks/chitin_block_snow_covered.png b/src/main/resources/assets/unicopia/textures/blocks/chitin_block_snow_covered.png new file mode 100644 index 00000000..b0e48a1c Binary files /dev/null and b/src/main/resources/assets/unicopia/textures/blocks/chitin_block_snow_covered.png differ diff --git a/src/main/resources/assets/unicopia/textures/blocks/chitin_block_spike.png b/src/main/resources/assets/unicopia/textures/blocks/chitin_block_spike.png new file mode 100644 index 00000000..4ce1b60a Binary files /dev/null and b/src/main/resources/assets/unicopia/textures/blocks/chitin_block_spike.png differ diff --git a/src/main/resources/assets/unicopia/textures/blocks/chitin_block_top.png b/src/main/resources/assets/unicopia/textures/blocks/chitin_block_top.png new file mode 100644 index 00000000..ef56786b Binary files /dev/null and b/src/main/resources/assets/unicopia/textures/blocks/chitin_block_top.png differ diff --git a/src/main/resources/assets/unicopia/textures/blocks/chitin_block_uncovered.png b/src/main/resources/assets/unicopia/textures/blocks/chitin_block_uncovered.png new file mode 100644 index 00000000..48cffc05 Binary files /dev/null and b/src/main/resources/assets/unicopia/textures/blocks/chitin_block_uncovered.png differ