From b9ea3aaebd872872e9d928322f78350ebf5ddb1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emmanuel=20Beno=C3=AEt?= Date: Mon, 11 Jul 2016 13:06:58 +0200 Subject: [PATCH] Hevea / bamboo fence gates --- TODO.txt | 2 +- src/java/mmm/deco/DFence.java | 5 +- src/java/mmm/deco/DFenceBlock.java | 2 +- src/java/mmm/deco/DFenceGate.java | 64 ++++++++++ src/java/mmm/food/FMilkBucket.java | 4 +- src/java/mmm/utils/I_UItemModelProvider.java | 7 +- .../mmm/utils/I_UItemModelProviderBasic.java | 17 +++ src/java/mmm/utils/I_UItemWithVariants.java | 20 +++ src/java/mmm/utils/I_URequiresClientInit.java | 7 ++ .../mmm/utils/I_URequiresClientPreInit.java | 7 ++ .../mmm/utils/I_UStateMapperProvider.java | 17 +++ src/java/mmm/utils/I_UTintedBlock.java | 1 + src/java/mmm/utils/I_UTintedItem.java | 1 + .../mmm/utils/UBlockItemWithVariants.java | 29 +++-- src/java/mmm/utils/URegistry.java | 115 +++++++++--------- src/java/mmm/utils/UStateMapper.java | 22 ++++ .../blockstates/deco/fence/gate/bamboo.json | 20 +++ .../blockstates/deco/fence/gate/hevea.json | 20 +++ src/resources/assets/mmm/lang/en_US.lang | 9 ++ .../block/deco/fence/bamboo/gate_closed.json | 6 + .../block/deco/fence/bamboo/gate_open.json | 6 + .../block/deco/fence/bamboo/wall_closed.json | 6 + .../block/deco/fence/bamboo/wall_open.json | 6 + .../block/deco/fence/hevea/gate_closed.json | 6 + .../block/deco/fence/hevea/gate_open.json | 6 + .../block/deco/fence/hevea/wall_closed.json | 6 + .../block/deco/fence/hevea/wall_open.json | 6 + .../models/item/deco/fence/gate/bamboo.json | 3 + .../models/item/deco/fence/gate/hevea.json | 3 + 29 files changed, 344 insertions(+), 79 deletions(-) create mode 100644 src/java/mmm/deco/DFenceGate.java create mode 100644 src/java/mmm/utils/I_UItemModelProviderBasic.java create mode 100644 src/java/mmm/utils/I_UItemWithVariants.java create mode 100644 src/java/mmm/utils/I_URequiresClientInit.java create mode 100644 src/java/mmm/utils/I_URequiresClientPreInit.java create mode 100644 src/java/mmm/utils/I_UStateMapperProvider.java create mode 100644 src/java/mmm/utils/UStateMapper.java create mode 100644 src/resources/assets/mmm/blockstates/deco/fence/gate/bamboo.json create mode 100644 src/resources/assets/mmm/blockstates/deco/fence/gate/hevea.json create mode 100644 src/resources/assets/mmm/models/block/deco/fence/bamboo/gate_closed.json create mode 100644 src/resources/assets/mmm/models/block/deco/fence/bamboo/gate_open.json create mode 100644 src/resources/assets/mmm/models/block/deco/fence/bamboo/wall_closed.json create mode 100644 src/resources/assets/mmm/models/block/deco/fence/bamboo/wall_open.json create mode 100644 src/resources/assets/mmm/models/block/deco/fence/hevea/gate_closed.json create mode 100644 src/resources/assets/mmm/models/block/deco/fence/hevea/gate_open.json create mode 100644 src/resources/assets/mmm/models/block/deco/fence/hevea/wall_closed.json create mode 100644 src/resources/assets/mmm/models/block/deco/fence/hevea/wall_open.json create mode 100644 src/resources/assets/mmm/models/item/deco/fence/gate/bamboo.json create mode 100644 src/resources/assets/mmm/models/item/deco/fence/gate/hevea.json diff --git a/TODO.txt b/TODO.txt index bef7066..85058af 100644 --- a/TODO.txt +++ b/TODO.txt @@ -9,7 +9,7 @@ deco No Stone - Smooth + stairs + slabs Limestone Slate Basalt -deco No Wood - Doors + fences +deco No Wood - Doors Hevea Bamboo ------------------------------------------------------------------------------------------------------- diff --git a/src/java/mmm/deco/DFence.java b/src/java/mmm/deco/DFence.java index 90ec1a4..da10b59 100644 --- a/src/java/mmm/deco/DFence.java +++ b/src/java/mmm/deco/DFence.java @@ -8,12 +8,13 @@ import mmm.utils.URegistry; public class DFence { public final DFenceBlock BLOCK; + public final DFenceGate GATE; public DFence( DWoodType woodType ) { - this.BLOCK = new DFenceBlock( woodType ); - URegistry.addBlock( this.BLOCK ); + URegistry.addBlock( this.BLOCK = new DFenceBlock( woodType ) ); + URegistry.addBlock( this.GATE = new DFenceGate( woodType ) ); } } diff --git a/src/java/mmm/deco/DFenceBlock.java b/src/java/mmm/deco/DFenceBlock.java index 3a49df4..d33a321 100644 --- a/src/java/mmm/deco/DFenceBlock.java +++ b/src/java/mmm/deco/DFenceBlock.java @@ -35,7 +35,7 @@ public class DFenceBlock @Override public void registerRecipes( ) { - GameRegistry.addShapedRecipe( new ItemStack( this ) , // + GameRegistry.addShapedRecipe( new ItemStack( this , 3 ) , // "PSP" , // "PSP" , // 'P' , this.woodType.getPlanksBlock( ) , // diff --git a/src/java/mmm/deco/DFenceGate.java b/src/java/mmm/deco/DFenceGate.java new file mode 100644 index 0000000..928d4ba --- /dev/null +++ b/src/java/mmm/deco/DFenceGate.java @@ -0,0 +1,64 @@ +package mmm.deco; + + +import mmm.utils.I_URecipeRegistrar; +import mmm.utils.I_UStateMapperProvider; +import mmm.utils.URegistry; +import mmm.utils.UStateMapper; +import net.minecraft.block.BlockFenceGate; +import net.minecraft.block.BlockPlanks; +import net.minecraft.block.SoundType; +import net.minecraft.block.material.MapColor; +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.statemap.IStateMapper; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.common.registry.GameRegistry; + + + +public class DFenceGate + extends BlockFenceGate + implements I_URecipeRegistrar , I_UStateMapperProvider +{ + + private final DWoodType woodType; + + + public DFenceGate( DWoodType woodType ) + { + super( BlockPlanks.EnumType.OAK ); + this.woodType = woodType; + this.setHardness( 2.f ); + this.setResistance( 5.f ); + this.setSoundType( SoundType.WOOD ); + this.setHarvestLevel( "axe" , 0 ); + URegistry.setIdentifiers( this , "deco" , "fence" , "gate" , woodType.getSuffix( ) ); + } + + + @Override + public MapColor getMapColor( IBlockState state ) + { + return this.woodType.getMapColor( ); + } + + + @Override + public void registerRecipes( ) + { + GameRegistry.addShapedRecipe( new ItemStack( this ) , // + "SPS" , // + "SPS" , // + 'P' , this.woodType.getPlanksBlock( ) , // + 'S' , Items.STICK ); + } + + + @Override + public IStateMapper getStateMapper( ) + { + return UStateMapper.ignoreProperties( BlockFenceGate.POWERED ); + } + +} diff --git a/src/java/mmm/food/FMilkBucket.java b/src/java/mmm/food/FMilkBucket.java index 3f8343e..8fe4045 100644 --- a/src/java/mmm/food/FMilkBucket.java +++ b/src/java/mmm/food/FMilkBucket.java @@ -1,7 +1,7 @@ package mmm.food; -import mmm.utils.I_UItemModelProvider; +import mmm.utils.I_UItemModelProviderBasic; import mmm.utils.URegistry; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; @@ -12,7 +12,7 @@ import net.minecraft.item.Item; public class FMilkBucket extends Item - implements I_UItemModelProvider + implements I_UItemModelProviderBasic { public final FMilkType milkType; diff --git a/src/java/mmm/utils/I_UItemModelProvider.java b/src/java/mmm/utils/I_UItemModelProvider.java index 9a13403..cda3014 100644 --- a/src/java/mmm/utils/I_UItemModelProvider.java +++ b/src/java/mmm/utils/I_UItemModelProvider.java @@ -1,13 +1,10 @@ package mmm.utils; -import net.minecraft.client.renderer.block.model.ModelResourceLocation; - - - public interface I_UItemModelProvider + extends I_URequiresClientPreInit { - public ModelResourceLocation getModelResourceLocation( ); + // EMPTY } diff --git a/src/java/mmm/utils/I_UItemModelProviderBasic.java b/src/java/mmm/utils/I_UItemModelProviderBasic.java new file mode 100644 index 0000000..d911f5e --- /dev/null +++ b/src/java/mmm/utils/I_UItemModelProviderBasic.java @@ -0,0 +1,17 @@ +package mmm.utils; + + +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + + + +public interface I_UItemModelProviderBasic + extends I_UItemModelProvider +{ + + @SideOnly( Side.CLIENT ) + public ModelResourceLocation getModelResourceLocation( ); + +} diff --git a/src/java/mmm/utils/I_UItemWithVariants.java b/src/java/mmm/utils/I_UItemWithVariants.java new file mode 100644 index 0000000..ba64aaa --- /dev/null +++ b/src/java/mmm/utils/I_UItemWithVariants.java @@ -0,0 +1,20 @@ +package mmm.utils; + + +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + + + +public interface I_UItemWithVariants + extends I_UItemModelProvider +{ + + public int getVariantsCount( ); + + + @SideOnly( Side.CLIENT ) + public ModelResourceLocation getModelResourceLocation( int variant ); + +} diff --git a/src/java/mmm/utils/I_URequiresClientInit.java b/src/java/mmm/utils/I_URequiresClientInit.java new file mode 100644 index 0000000..d1a786f --- /dev/null +++ b/src/java/mmm/utils/I_URequiresClientInit.java @@ -0,0 +1,7 @@ +package mmm.utils; + + +public interface I_URequiresClientInit +{ + // EMPTY +} diff --git a/src/java/mmm/utils/I_URequiresClientPreInit.java b/src/java/mmm/utils/I_URequiresClientPreInit.java new file mode 100644 index 0000000..1e4b725 --- /dev/null +++ b/src/java/mmm/utils/I_URequiresClientPreInit.java @@ -0,0 +1,7 @@ +package mmm.utils; + + +public interface I_URequiresClientPreInit +{ + // EMPTY +} diff --git a/src/java/mmm/utils/I_UStateMapperProvider.java b/src/java/mmm/utils/I_UStateMapperProvider.java new file mode 100644 index 0000000..10fa9b8 --- /dev/null +++ b/src/java/mmm/utils/I_UStateMapperProvider.java @@ -0,0 +1,17 @@ +package mmm.utils; + + +import net.minecraft.client.renderer.block.statemap.IStateMapper; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + + + +public interface I_UStateMapperProvider + extends I_URequiresClientPreInit +{ + + @SideOnly( Side.CLIENT ) + IStateMapper getStateMapper( ); + +} diff --git a/src/java/mmm/utils/I_UTintedBlock.java b/src/java/mmm/utils/I_UTintedBlock.java index 7d1c254..01788f7 100644 --- a/src/java/mmm/utils/I_UTintedBlock.java +++ b/src/java/mmm/utils/I_UTintedBlock.java @@ -9,6 +9,7 @@ import net.minecraftforge.fml.relauncher.SideOnly; /** For blocks that need to register a tint */ public interface I_UTintedBlock + extends I_URequiresClientInit { @SideOnly( Side.CLIENT ) diff --git a/src/java/mmm/utils/I_UTintedItem.java b/src/java/mmm/utils/I_UTintedItem.java index 10473be..7aa8035 100644 --- a/src/java/mmm/utils/I_UTintedItem.java +++ b/src/java/mmm/utils/I_UTintedItem.java @@ -12,6 +12,7 @@ import net.minecraftforge.fml.relauncher.SideOnly; * to be tinted. */ public interface I_UTintedItem + extends I_URequiresClientInit { @SideOnly( Side.CLIENT ) diff --git a/src/java/mmm/utils/UBlockItemWithVariants.java b/src/java/mmm/utils/UBlockItemWithVariants.java index e9756d3..c038e90 100644 --- a/src/java/mmm/utils/UBlockItemWithVariants.java +++ b/src/java/mmm/utils/UBlockItemWithVariants.java @@ -8,12 +8,12 @@ import net.minecraft.item.EnumDyeColor; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.ModelLoader; public class UBlockItemWithVariants extends ItemBlock + implements I_UItemWithVariants { private final String[] baseName; private String[] variants; @@ -66,16 +66,8 @@ public class UBlockItemWithVariants sbRegPath.append( this.baseName[ i ] ); } this.setRegistryName( Mmm.ID , sbRegPath.toString( ) ); - URegistry.addItem( this , false ); + URegistry.addItem( this ); - final int len = sbRegPath.length( ); - final int nVariants = this.variants.length; - for ( int i = 0 ; i < nVariants ; i++ ) { - sbRegPath.setLength( len ); - sbRegPath.append( '/' ).append( this.variants[ i ] ); - ModelLoader.setCustomModelResourceLocation( this , i , new ModelResourceLocation( // - new ResourceLocation( Mmm.ID , sbRegPath.toString( ) ) , "inventory" ) ); - } return this; } @@ -94,4 +86,21 @@ public class UBlockItemWithVariants + EnumDyeColor.byMetadata( stack.getMetadata( ) ).getUnlocalizedName( ); } + + @Override + public int getVariantsCount( ) + { + return this.variants.length; + } + + + @Override + public ModelResourceLocation getModelResourceLocation( final int variant ) + { + return new ModelResourceLocation( // + new ResourceLocation( Mmm.ID , + this.getRegistryName( ).getResourcePath( ) + "/" + this.variants[ variant ] ) , // + "inventory" ); + } + } diff --git a/src/java/mmm/utils/URegistry.java b/src/java/mmm/utils/URegistry.java index c0a4a06..e38fdbb 100644 --- a/src/java/mmm/utils/URegistry.java +++ b/src/java/mmm/utils/URegistry.java @@ -6,7 +6,6 @@ import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; -import java.util.Map; import mmm.Mmm; import net.minecraft.block.Block; @@ -54,12 +53,12 @@ public class URegistry private static final HashSet< I_URecipeRegistrar > RECIPE_REGISTRARS = new HashSet<>( ); private static final HashSet< I_UOreGenerationRegistrar > ORE_GEN_REGISTRARS = new HashSet<>( ); - private static final HashMap< Item , Boolean > ITEMS = new HashMap< Item , Boolean >( ); + private static final HashSet< Item > ITEMS = new HashSet< Item >( ); private static final HashSet< Block > BLOCKS = new HashSet< Block >( ); - private static final ArrayList< Block > TINTED_BLOCKS = new ArrayList<>( ); - private static final ArrayList< Block > TINTED_BLOCK_ITEMS = new ArrayList<>( ); - private static final ArrayList< Item > TINTED_ITEMS = new ArrayList<>( ); + private static final ArrayList< Block > BLOCKS_CLIENT_PREINIT = new ArrayList<>( ); + private static final ArrayList< Block > BLOCKS_CLIENT_INIT = new ArrayList<>( ); + private static final ArrayList< Item > ITEMS_CLIENT_INIT = new ArrayList<>( ); private static final HashMap< Item , Object > FUELS = new HashMap<>( ); private static final FuelHandler FUEL_HANDLER = new FuelHandler( ); @@ -102,35 +101,17 @@ public class URegistry public static void addItem( final Item item ) { - URegistry.addItem( item , true ); - } - - - public static void addItem( final Item item , final boolean registerModel ) - { - if ( URegistry.ITEMS.put( item , registerModel ) == null ) { + if ( URegistry.ITEMS.add( item ) ) { GameRegistry.register( item ); - if ( item instanceof I_UTintedItem ) { - URegistry.TINTED_ITEMS.add( item ); - } URegistry.addRecipeRegistrar( item ); + if ( item instanceof I_URequiresClientInit ) { + URegistry.ITEMS_CLIENT_INIT.add( item ); + } } } public static Item addBlock( final Block block ) - { - return URegistry.addBlock( block , true ); - } - - - public static Item addBlock( final Block block , final Item blockItem ) - { - return URegistry.addBlock( block , blockItem , true ); - } - - - public static Item addBlock( final Block block , final boolean registerItemModel ) { Item item; if ( block instanceof I_UColoredBlock ) { @@ -139,29 +120,28 @@ public class URegistry item = new ItemBlock( block ); } item.setRegistryName( block.getRegistryName( ) ); - return URegistry.addBlock( block , item , registerItemModel ); + return URegistry.addBlock( block , item ); } - public static Item addBlock( final Block block , final Item blockItem , final boolean registerItemModel ) + public static Item addBlock( final Block block , final Item blockItem ) { if ( URegistry.BLOCKS.add( block ) ) { GameRegistry.register( block ); - if ( block instanceof I_UTintedBlock ) { - URegistry.TINTED_BLOCKS.add( block ); - } - if ( block instanceof I_UTintedItem ) { - URegistry.TINTED_BLOCK_ITEMS.add( block ); - } - URegistry.addRecipeRegistrar( block ); URegistry.addOreGenerationRegistrar( block ); if ( block instanceof I_UTrapBlock ) { UTrapBlocks.INSTANCE.register( (I_UTrapBlock) block ); } + if ( block instanceof I_URequiresClientPreInit ) { + URegistry.BLOCKS_CLIENT_PREINIT.add( block ); + } + if ( block instanceof I_URequiresClientInit ) { + URegistry.BLOCKS_CLIENT_INIT.add( block ); + } if ( blockItem != null ) { - URegistry.addItem( blockItem , registerItemModel ); + URegistry.addItem( blockItem ); } } return blockItem; @@ -231,19 +211,34 @@ public class URegistry @SideOnly( Side.CLIENT ) public static void preInitClient( ) { - // Register item models - for ( final Map.Entry< Item , Boolean > entry : URegistry.ITEMS.entrySet( ) ) { - if ( !entry.getValue( ) ) { + for ( final Item item : URegistry.ITEMS ) { + // Automatic model location unless there's a provider + if ( ! ( item instanceof I_UItemModelProvider ) ) { + final ModelResourceLocation location = new ModelResourceLocation( item.getRegistryName( ) , + "inventory" ); + ModelLoader.setCustomModelResourceLocation( item , 0 , location ); + } + + if ( ! ( item instanceof I_URequiresClientPreInit ) ) { continue; } - final Item item = entry.getKey( ); - ModelResourceLocation location; - if ( item instanceof I_UItemModelProvider ) { - location = ( (I_UItemModelProvider) item ).getModelResourceLocation( ); - } else { - location = new ModelResourceLocation( item.getRegistryName( ) , "inventory" ); + + // Item models + if ( item instanceof I_UItemModelProviderBasic ) { + ModelLoader.setCustomModelResourceLocation( item , 0 , + ( (I_UItemModelProviderBasic) item ).getModelResourceLocation( ) ); + } else if ( item instanceof I_UItemWithVariants ) { + final I_UItemWithVariants iwv = (I_UItemWithVariants) item; + for ( int i = 0 ; i < iwv.getVariantsCount( ) ; i++ ) { + ModelLoader.setCustomModelResourceLocation( item , i , iwv.getModelResourceLocation( i ) ); + } + } + } + + for ( final Block block : URegistry.BLOCKS_CLIENT_PREINIT ) { + if ( block instanceof I_UStateMapperProvider ) { + ModelLoader.setCustomStateMapper( block , ( (I_UStateMapperProvider) block ).getStateMapper( ) ); } - ModelLoader.setCustomModelResourceLocation( item , 0 , location ); } } @@ -254,19 +249,23 @@ public class URegistry final BlockColors blockColors = Minecraft.getMinecraft( ).getBlockColors( ); final ItemColors itemColors = Minecraft.getMinecraft( ).getItemColors( ); - // Register tinted blocks - for ( final Block tintedBlock : URegistry.TINTED_BLOCKS ) { - blockColors.registerBlockColorHandler( ( (I_UTintedBlock) tintedBlock ).getBlockTint( ) , tintedBlock ); + for ( final Block block : URegistry.BLOCKS_CLIENT_INIT ) { + // Register tinted blocks + if ( block instanceof I_UTintedBlock ) { + blockColors.registerBlockColorHandler( ( (I_UTintedBlock) block ).getBlockTint( ) , block ); + } + + // Register tinted block items + if ( block instanceof I_UTintedItem ) { + itemColors.registerItemColorHandler( ( (I_UTintedItem) block ).getItemTint( ) , block ); + } } - // Register tinted block items - for ( final Block tintedBlock : URegistry.TINTED_BLOCK_ITEMS ) { - itemColors.registerItemColorHandler( ( (I_UTintedItem) tintedBlock ).getItemTint( ) , tintedBlock ); - } - - // Register tinted items - for ( final Item tintedItem : URegistry.TINTED_ITEMS ) { - itemColors.registerItemColorHandler( ( (I_UTintedItem) tintedItem ).getItemTint( ) , tintedItem ); + for ( final Item item : URegistry.ITEMS_CLIENT_INIT ) { + // Register tinted items + if ( item instanceof I_UTintedItem ) { + itemColors.registerItemColorHandler( ( (I_UTintedItem) item ).getItemTint( ) , item ); + } } } } diff --git a/src/java/mmm/utils/UStateMapper.java b/src/java/mmm/utils/UStateMapper.java new file mode 100644 index 0000000..0c1fda2 --- /dev/null +++ b/src/java/mmm/utils/UStateMapper.java @@ -0,0 +1,22 @@ +package mmm.utils; + + +import net.minecraft.block.properties.IProperty; +import net.minecraft.client.renderer.block.statemap.IStateMapper; +import net.minecraft.client.renderer.block.statemap.StateMap; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + + + +public class UStateMapper +{ + + @SideOnly( Side.CLIENT ) + public static IStateMapper ignoreProperties( final IProperty< ? >... properties ) + { + System.err.println( "\n\nLOLWUT\n\n" ); + return new StateMap.Builder( ).ignore( properties ).build( ); + } + +} diff --git a/src/resources/assets/mmm/blockstates/deco/fence/gate/bamboo.json b/src/resources/assets/mmm/blockstates/deco/fence/gate/bamboo.json new file mode 100644 index 0000000..6942a03 --- /dev/null +++ b/src/resources/assets/mmm/blockstates/deco/fence/gate/bamboo.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "mmm:deco/fence/bamboo/gate_closed", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "mmm:deco/fence/bamboo/gate_closed", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "mmm:deco/fence/bamboo/gate_closed", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "mmm:deco/fence/bamboo/gate_closed", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "mmm:deco/fence/bamboo/gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "mmm:deco/fence/bamboo/gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "mmm:deco/fence/bamboo/gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "mmm:deco/fence/bamboo/gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "mmm:deco/fence/bamboo/wall_closed", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "mmm:deco/fence/bamboo/wall_closed", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "mmm:deco/fence/bamboo/wall_closed", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "mmm:deco/fence/bamboo/wall_closed", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "mmm:deco/fence/bamboo/wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "mmm:deco/fence/bamboo/wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "mmm:deco/fence/bamboo/wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "mmm:deco/fence/bamboo/wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/resources/assets/mmm/blockstates/deco/fence/gate/hevea.json b/src/resources/assets/mmm/blockstates/deco/fence/gate/hevea.json new file mode 100644 index 0000000..9491454 --- /dev/null +++ b/src/resources/assets/mmm/blockstates/deco/fence/gate/hevea.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "mmm:deco/fence/hevea/gate_closed", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "mmm:deco/fence/hevea/gate_closed", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "mmm:deco/fence/hevea/gate_closed", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "mmm:deco/fence/hevea/gate_closed", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "mmm:deco/fence/hevea/gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "mmm:deco/fence/hevea/gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "mmm:deco/fence/hevea/gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "mmm:deco/fence/hevea/gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "mmm:deco/fence/hevea/wall_closed", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "mmm:deco/fence/hevea/wall_closed", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "mmm:deco/fence/hevea/wall_closed", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "mmm:deco/fence/hevea/wall_closed", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "mmm:deco/fence/hevea/wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "mmm:deco/fence/hevea/wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "mmm:deco/fence/hevea/wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "mmm:deco/fence/hevea/wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/resources/assets/mmm/lang/en_US.lang b/src/resources/assets/mmm/lang/en_US.lang index 649515a..63ab107 100644 --- a/src/resources/assets/mmm/lang/en_US.lang +++ b/src/resources/assets/mmm/lang/en_US.lang @@ -179,6 +179,7 @@ tile.mmm.deco.throne.oak.red.name=Oak Throne (Red) tile.mmm.deco.throne.oak.silver.name=Oak Throne (Silver) tile.mmm.deco.throne.oak.white.name=Oak Throne (White) tile.mmm.deco.throne.oak.yellow.name=Oak Throne (Yellow) + tile.mmm.deco.throne.birch.black.name=Birch Throne (Black) tile.mmm.deco.throne.birch.blue.name=Birch Throne (Blue) tile.mmm.deco.throne.birch.brown.name=Birch Throne (Brown) @@ -195,6 +196,7 @@ tile.mmm.deco.throne.birch.red.name=Birch Throne (Red) tile.mmm.deco.throne.birch.silver.name=Birch Throne (Silver) tile.mmm.deco.throne.birch.white.name=Birch Throne (White) tile.mmm.deco.throne.birch.yellow.name=Birch Throne (Yellow) + tile.mmm.deco.throne.spruce.black.name=Spruce Throne (Black) tile.mmm.deco.throne.spruce.blue.name=Spruce Throne (Blue) tile.mmm.deco.throne.spruce.brown.name=Spruce Throne (Brown) @@ -211,6 +213,7 @@ tile.mmm.deco.throne.spruce.red.name=Spruce Throne (Red) tile.mmm.deco.throne.spruce.silver.name=Spruce Throne (Silver) tile.mmm.deco.throne.spruce.white.name=Spruce Throne (White) tile.mmm.deco.throne.spruce.yellow.name=Spruce Throne (Yellow) + tile.mmm.deco.throne.jungle.black.name=Jungle Wood Throne (Black) tile.mmm.deco.throne.jungle.blue.name=Jungle Wood Throne (Blue) tile.mmm.deco.throne.jungle.brown.name=Jungle Wood Throne (Brown) @@ -227,6 +230,7 @@ tile.mmm.deco.throne.jungle.red.name=Jungle Wood Throne (Red) tile.mmm.deco.throne.jungle.silver.name=Jungle Wood Throne (Silver) tile.mmm.deco.throne.jungle.white.name=Jungle Wood Throne (White) tile.mmm.deco.throne.jungle.yellow.name=Jungle Wood Throne (Yellow) + tile.mmm.deco.throne.dark_oak.black.name=Dark Oak Throne (Black) tile.mmm.deco.throne.dark_oak.blue.name=Dark Oak Throne (Blue) tile.mmm.deco.throne.dark_oak.brown.name=Dark Oak Throne (Brown) @@ -243,6 +247,7 @@ tile.mmm.deco.throne.dark_oak.red.name=Dark Oak Throne (Red) tile.mmm.deco.throne.dark_oak.silver.name=Dark Oak Throne (Silver) tile.mmm.deco.throne.dark_oak.white.name=Dark Oak Throne (White) tile.mmm.deco.throne.dark_oak.yellow.name=Dark Oak Throne (Yellow) + tile.mmm.deco.throne.acacia.black.name=Acacia Throne (Black) tile.mmm.deco.throne.acacia.blue.name=Acacia Throne (Blue) tile.mmm.deco.throne.acacia.brown.name=Acacia Throne (Brown) @@ -259,6 +264,7 @@ tile.mmm.deco.throne.acacia.red.name=Acacia Throne (Red) tile.mmm.deco.throne.acacia.silver.name=Acacia Throne (Silver) tile.mmm.deco.throne.acacia.white.name=Acacia Throne (White) tile.mmm.deco.throne.acacia.yellow.name=Acacia Throne (Yellow) + tile.mmm.deco.throne.bamboo.black.name=Bamboo Throne (Black) tile.mmm.deco.throne.bamboo.blue.name=Bamboo Throne (Blue) tile.mmm.deco.throne.bamboo.brown.name=Bamboo Throne (Brown) @@ -275,6 +281,7 @@ tile.mmm.deco.throne.bamboo.red.name=Bamboo Throne (Red) tile.mmm.deco.throne.bamboo.silver.name=Bamboo Throne (Silver) tile.mmm.deco.throne.bamboo.white.name=Bamboo Throne (White) tile.mmm.deco.throne.bamboo.yellow.name=Bamboo Throne (Yellow) + tile.mmm.deco.throne.hevea.black.name=Hevea Throne (Black) tile.mmm.deco.throne.hevea.blue.name=Hevea Throne (Blue) tile.mmm.deco.throne.hevea.brown.name=Hevea Throne (Brown) @@ -293,4 +300,6 @@ tile.mmm.deco.throne.hevea.white.name=Hevea Throne (White) tile.mmm.deco.throne.hevea.yellow.name=Hevea Throne (Yellow) tile.mmm.deco.fence.hevea.name=Hevea Fence +tile.mmm.deco.fence.gate.hevea.name=Hevea Fence Gate tile.mmm.deco.fence.bamboo.name=Bamboo Fence +tile.mmm.deco.fence.gate.bamboo.name=Bamboo Fence Gate diff --git a/src/resources/assets/mmm/models/block/deco/fence/bamboo/gate_closed.json b/src/resources/assets/mmm/models/block/deco/fence/bamboo/gate_closed.json new file mode 100644 index 0000000..3d04005 --- /dev/null +++ b/src/resources/assets/mmm/models/block/deco/fence/bamboo/gate_closed.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/fence_gate_closed", + "textures": { + "texture": "mmm:blocks/materials/planks/bamboo" + } +} diff --git a/src/resources/assets/mmm/models/block/deco/fence/bamboo/gate_open.json b/src/resources/assets/mmm/models/block/deco/fence/bamboo/gate_open.json new file mode 100644 index 0000000..17a8524 --- /dev/null +++ b/src/resources/assets/mmm/models/block/deco/fence/bamboo/gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/fence_gate_open", + "textures": { + "texture": "mmm:blocks/materials/planks/bamboo" + } +} diff --git a/src/resources/assets/mmm/models/block/deco/fence/bamboo/wall_closed.json b/src/resources/assets/mmm/models/block/deco/fence/bamboo/wall_closed.json new file mode 100644 index 0000000..5c551c4 --- /dev/null +++ b/src/resources/assets/mmm/models/block/deco/fence/bamboo/wall_closed.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_gate_closed", + "textures": { + "texture": "mmm:blocks/materials/planks/bamboo" + } +} diff --git a/src/resources/assets/mmm/models/block/deco/fence/bamboo/wall_open.json b/src/resources/assets/mmm/models/block/deco/fence/bamboo/wall_open.json new file mode 100644 index 0000000..7ffa5a9 --- /dev/null +++ b/src/resources/assets/mmm/models/block/deco/fence/bamboo/wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_gate_open", + "textures": { + "texture": "mmm:blocks/materials/planks/bamboo" + } +} diff --git a/src/resources/assets/mmm/models/block/deco/fence/hevea/gate_closed.json b/src/resources/assets/mmm/models/block/deco/fence/hevea/gate_closed.json new file mode 100644 index 0000000..cbd5814 --- /dev/null +++ b/src/resources/assets/mmm/models/block/deco/fence/hevea/gate_closed.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/fence_gate_closed", + "textures": { + "texture": "mmm:blocks/materials/planks/hevea" + } +} diff --git a/src/resources/assets/mmm/models/block/deco/fence/hevea/gate_open.json b/src/resources/assets/mmm/models/block/deco/fence/hevea/gate_open.json new file mode 100644 index 0000000..758a0e6 --- /dev/null +++ b/src/resources/assets/mmm/models/block/deco/fence/hevea/gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/fence_gate_open", + "textures": { + "texture": "mmm:blocks/materials/planks/hevea" + } +} diff --git a/src/resources/assets/mmm/models/block/deco/fence/hevea/wall_closed.json b/src/resources/assets/mmm/models/block/deco/fence/hevea/wall_closed.json new file mode 100644 index 0000000..ca4be00 --- /dev/null +++ b/src/resources/assets/mmm/models/block/deco/fence/hevea/wall_closed.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_gate_closed", + "textures": { + "texture": "mmm:blocks/materials/planks/hevea" + } +} diff --git a/src/resources/assets/mmm/models/block/deco/fence/hevea/wall_open.json b/src/resources/assets/mmm/models/block/deco/fence/hevea/wall_open.json new file mode 100644 index 0000000..ddfbcab --- /dev/null +++ b/src/resources/assets/mmm/models/block/deco/fence/hevea/wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_gate_open", + "textures": { + "texture": "mmm:blocks/materials/planks/hevea" + } +} diff --git a/src/resources/assets/mmm/models/item/deco/fence/gate/bamboo.json b/src/resources/assets/mmm/models/item/deco/fence/gate/bamboo.json new file mode 100644 index 0000000..82501e0 --- /dev/null +++ b/src/resources/assets/mmm/models/item/deco/fence/gate/bamboo.json @@ -0,0 +1,3 @@ +{ + "parent": "mmm:block/deco/fence/bamboo/gate_closed" +} diff --git a/src/resources/assets/mmm/models/item/deco/fence/gate/hevea.json b/src/resources/assets/mmm/models/item/deco/fence/gate/hevea.json new file mode 100644 index 0000000..7971d17 --- /dev/null +++ b/src/resources/assets/mmm/models/item/deco/fence/gate/hevea.json @@ -0,0 +1,3 @@ +{ + "parent": "mmm:block/deco/fence/hevea/gate_closed" +}