From 4b9ef01f8ac35514d969c5b0af81dd3cc6d92bbf Mon Sep 17 00:00:00 2001 From: ALongStringOfNumbers <31759736+ALongStringOfNumbers@users.noreply.github.com> Date: Sun, 22 Aug 2021 15:38:54 -0700 Subject: [PATCH] Add Rubber Planks and generic plank block (#105) --- .../java/gregtech/common/CommonProxy.java | 3 + .../gregtech/common/blocks/MetaBlocks.java | 7 ++ .../common/blocks/wood/BlockGregPlank.java | 89 ++++++++++++++++++ .../loaders/recipe/CraftingRecipeLoader.java | 5 +- .../assets/gregtech/blockstates/plank.json | 18 ++++ .../resources/assets/gregtech/lang/en_us.lang | 1 + .../blocks/wood/rubber/planks_rubber.png | Bin 411 -> 287 bytes 7 files changed, 120 insertions(+), 3 deletions(-) create mode 100644 src/main/java/gregtech/common/blocks/wood/BlockGregPlank.java create mode 100644 src/main/resources/assets/gregtech/blockstates/plank.json diff --git a/src/main/java/gregtech/common/CommonProxy.java b/src/main/java/gregtech/common/CommonProxy.java index aca30c2a96e..d9da0173efe 100644 --- a/src/main/java/gregtech/common/CommonProxy.java +++ b/src/main/java/gregtech/common/CommonProxy.java @@ -19,6 +19,7 @@ import gregtech.common.blocks.*; import gregtech.common.blocks.wood.BlockGregLeaves; import gregtech.common.blocks.wood.BlockGregLog; +import gregtech.common.blocks.wood.BlockGregPlank; import gregtech.common.blocks.wood.BlockGregSapling; import gregtech.common.items.MetaItems; import gregtech.common.pipelike.cable.BlockCable; @@ -97,6 +98,7 @@ public static void registerBlocks(RegistryEvent.Register event) { registry.register(LOG); registry.register(LEAVES); registry.register(SAPLING); + registry.register(PLANKS); registry.register(SURFACE_ROCK); COMPRESSED.values().stream().distinct().forEach(registry::register); @@ -145,6 +147,7 @@ public static void registerItems(RegistryEvent.Register event) { registry.register(createMultiTexItemBlock(LOG, state -> state.getValue(BlockGregLog.VARIANT).getName())); registry.register(createMultiTexItemBlock(LEAVES, state -> state.getValue(BlockGregLeaves.VARIANT).getName())); registry.register(createMultiTexItemBlock(SAPLING, state -> state.getValue(BlockGregSapling.VARIANT).getName())); + registry.register(createMultiTexItemBlock(PLANKS, state -> state.getValue(BlockGregPlank.VARIANT).getName())); COMPRESSED.values() .stream().distinct() diff --git a/src/main/java/gregtech/common/blocks/MetaBlocks.java b/src/main/java/gregtech/common/blocks/MetaBlocks.java index 693f28f5210..fa3718b5f52 100644 --- a/src/main/java/gregtech/common/blocks/MetaBlocks.java +++ b/src/main/java/gregtech/common/blocks/MetaBlocks.java @@ -22,6 +22,7 @@ import gregtech.common.blocks.surfacerock.TileEntitySurfaceRock; import gregtech.common.blocks.wood.BlockGregLeaves; import gregtech.common.blocks.wood.BlockGregLog; +import gregtech.common.blocks.wood.BlockGregPlank; import gregtech.common.blocks.wood.BlockGregSapling; import gregtech.common.pipelike.cable.BlockCable; import gregtech.common.pipelike.cable.Insulation; @@ -106,6 +107,7 @@ private MetaBlocks() { public static BlockGregLog LOG; public static BlockGregLeaves LEAVES; public static BlockGregSapling SAPLING; + public static BlockGregPlank PLANKS; public static BlockSurfaceRock SURFACE_ROCK; @@ -178,6 +180,8 @@ public static void init() { LEAVES.setRegistryName("leaves"); SAPLING = new BlockGregSapling(); SAPLING.setRegistryName("sapling"); + PLANKS = new BlockGregPlank(); + PLANKS.setRegistryName("plank"); SURFACE_ROCK = new BlockSurfaceRock(); SURFACE_ROCK.setRegistryName("surface_rock_new"); @@ -227,6 +231,7 @@ public static void init() { //could possibly override block methods, but since these props don't depend on state why not just use nice and simple vanilla method Blocks.FIRE.setFireInfo(LOG, 5, 5); Blocks.FIRE.setFireInfo(LEAVES, 30, 60); + Blocks.FIRE.setFireInfo(PLANKS, 5, 20); } /** @@ -336,6 +341,7 @@ public static void registerItemModels() { registerItemModelWithOverride(LOG, ImmutableMap.of(BlockGregLog.LOG_AXIS, EnumAxis.Y)); registerItemModel(LEAVES); registerItemModel(SAPLING); + registerItemModel(PLANKS); COMPRESSED.values().stream().distinct().forEach(MetaBlocks::registerItemModel); FRAMES.values().forEach(MetaBlocks::registerItemModelWithFilteredProperties); @@ -466,6 +472,7 @@ public static void registerOreDict() { OreDictUnifier.registerOre(new ItemStack(LOG, 1, GTValues.W), OrePrefix.log, Materials.Wood); OreDictUnifier.registerOre(new ItemStack(LEAVES, 1, GTValues.W), "treeLeaves"); OreDictUnifier.registerOre(new ItemStack(SAPLING, 1, GTValues.W), "treeSapling"); + OreDictUnifier.registerOre(new ItemStack(PLANKS, 1, GTValues.W), OrePrefix.plank, Materials.Wood); GameRegistry.addSmelting(LOG, new ItemStack(Items.COAL, 1, 1), 0.15F); for (Entry entry : COMPRESSED.entrySet()) { diff --git a/src/main/java/gregtech/common/blocks/wood/BlockGregPlank.java b/src/main/java/gregtech/common/blocks/wood/BlockGregPlank.java new file mode 100644 index 00000000000..f99103666d3 --- /dev/null +++ b/src/main/java/gregtech/common/blocks/wood/BlockGregPlank.java @@ -0,0 +1,89 @@ +package gregtech.common.blocks.wood; + +import gregtech.api.GregTechAPI; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +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.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IStringSerializable; +import net.minecraft.util.NonNullList; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.RayTraceResult; +import net.minecraft.world.World; + +import javax.annotation.Nonnull; + +public class BlockGregPlank extends Block { + + public static final PropertyEnum VARIANT = PropertyEnum.create("variant", PlankVariant.class); + + public BlockGregPlank() { + super(Material.WOOD); + this.setDefaultState(this.blockState.getBaseState() + .withProperty(VARIANT, PlankVariant.RUBBER_PLANK)); + setTranslationKey("gt.plank"); + this.setCreativeTab(GregTechAPI.TAB_GREGTECH); + } + + @Override + public void getSubBlocks(@Nonnull CreativeTabs itemIn, @Nonnull NonNullList items) { + for(PlankVariant plankVariant : PlankVariant.values()) { + items.add(getItem(plankVariant)); + } + } + + @Nonnull + @Override + protected BlockStateContainer createBlockState() { + return new BlockStateContainer(this, VARIANT); + } + + @Nonnull + @Override + @SuppressWarnings("deprecation") + public IBlockState getStateFromMeta(int meta) { + return getDefaultState().withProperty(VARIANT, PlankVariant.values()[meta]); + } + + @Override + public int getMetaFromState(IBlockState state) { + return state.getValue(VARIANT).ordinal(); + } + + @Nonnull + @Override + public ItemStack getPickBlock(IBlockState state, @Nonnull RayTraceResult target, @Nonnull World world, @Nonnull BlockPos pos, @Nonnull EntityPlayer player) { + return new ItemStack(Item.getItemFromBlock(this), 1, + state.getValue(VARIANT).ordinal()); + } + + public ItemStack getItem(PlankVariant variant) { + return new ItemStack(this, 1, variant.ordinal()); + } + + public ItemStack getItem(PlankVariant variant, int amount) { + return new ItemStack(this, amount, variant.ordinal()); + } + + public enum PlankVariant implements IStringSerializable { + + RUBBER_PLANK("rubber_plank"); + + private final String name; + + PlankVariant(String name) { + this.name = name; + } + + @Nonnull + @Override + public String getName() { + return name; + } + } +} diff --git a/src/main/java/gregtech/loaders/recipe/CraftingRecipeLoader.java b/src/main/java/gregtech/loaders/recipe/CraftingRecipeLoader.java index 0795b8a96a4..b022a0f6fe7 100644 --- a/src/main/java/gregtech/loaders/recipe/CraftingRecipeLoader.java +++ b/src/main/java/gregtech/loaders/recipe/CraftingRecipeLoader.java @@ -13,11 +13,10 @@ import gregtech.common.blocks.BlockTransparentCasing; import gregtech.common.blocks.MetaBlocks; import gregtech.common.blocks.wood.BlockGregLog.LogVariant; +import gregtech.common.blocks.wood.BlockGregPlank; import gregtech.common.crafting.FacadeRecipe; import gregtech.common.items.MetaItems; import gregtech.loaders.oreprocessing.ToolRecipeHandler; -import net.minecraft.block.BlockPlanks.EnumType; -import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; @@ -93,7 +92,7 @@ private static void loadCraftingRecipes() { MetaItems.CAPACITOR.getStackForm()); } - ModHandler.addShapelessRecipe("rubber_wood_planks", new ItemStack(Blocks.PLANKS, 4, EnumType.JUNGLE.getMetadata()), new ItemStack(MetaBlocks.LOG, 1, LogVariant.RUBBER_WOOD.ordinal())); + ModHandler.addShapelessRecipe("rubber_wood_planks", new ItemStack(MetaBlocks.PLANKS, 4, BlockGregPlank.PlankVariant.RUBBER_PLANK.ordinal()), new ItemStack(MetaBlocks.LOG, 1, LogVariant.RUBBER_WOOD.ordinal())); ModHandler.addShapedRecipe("paper_ring", OreDictUnifier.get(OrePrefix.ring, Materials.Paper), "k", "X", 'X', new UnificationEntry(OrePrefix.plate, Materials.Paper)); ModHandler.addShapedRecipe("rubber_ring", OreDictUnifier.get(OrePrefix.ring, Materials.Rubber), "k", "X", 'X', new UnificationEntry(OrePrefix.plate, Materials.Rubber)); diff --git a/src/main/resources/assets/gregtech/blockstates/plank.json b/src/main/resources/assets/gregtech/blockstates/plank.json new file mode 100644 index 00000000000..2bad0d52242 --- /dev/null +++ b/src/main/resources/assets/gregtech/blockstates/plank.json @@ -0,0 +1,18 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "minecraft:cube_all", + "textures": { + "all": "gregtech:blocks/rendering_error" + } + }, + "variants": { + "variant": { + "rubber_plank": { + "textures": { + "all": "gregtech:blocks/wood/rubber/planks_rubber" + } + } + } + } +} diff --git a/src/main/resources/assets/gregtech/lang/en_us.lang b/src/main/resources/assets/gregtech/lang/en_us.lang index d6d62f89030..1a9467e33ec 100644 --- a/src/main/resources/assets/gregtech/lang/en_us.lang +++ b/src/main/resources/assets/gregtech/lang/en_us.lang @@ -1977,6 +1977,7 @@ tile.gt.reinforced_stone.name=Reinforced Stone tile.gt.log.rubber_wood.name=Rubber Wood tile.gt.leaves.rubber_wood.name=Rubber Tree Leaves tile.gt.sapling.rubber_wood.name=Rubber Tree Sapling +tile.gt.plank.rubber_plank.name=Rubber Wood Planks tile.surface_rock.name=Surface Rock diff --git a/src/main/resources/assets/gregtech/textures/blocks/wood/rubber/planks_rubber.png b/src/main/resources/assets/gregtech/textures/blocks/wood/rubber/planks_rubber.png index a45821fe82202cf49cde2ec300a76a48f041ec9d..b22ada23ebc17414ad60d636901756cfa2bd7584 100644 GIT binary patch delta 259 zcmV+e0sQ`(1D^trB!A{fL_t(I5q*-e4#F@DL^JgB*kE9Qi7to{5E~!Bz%K{ARxiCq zz+jzozSzFB<^34y^Rf;&;&q*Q&pqD9p%zKRx6^#di+y8xkbA2J-^4b}A?B^YaXVCF z+z<6vs1emo7W(NI8*PZ!?*tcpXbB!z0G_7yUn7Z_5tp(=}5y&1{44Q002ov JPDHLkV1gySgH`|l delta 384 zcmV-`0e}9V0-FPnB!32COGiWi{{a60|De66lK=n!32;bRa{vGf6951U69E94oEQKA z00(qQO+^Rc0~8Dm2s?P!ga7~mC`m*?R5;6hQ#)?MFbsVPRKuvz4^Y61hi(}&bqu=a z6rH>E0zFR7kP8GkK*nqxv=}Jhx=^9b9oPplvQh$uC_j?odw-(bVOve1$C-7ltT6$@ zsQcVP4=k8)e+wK>vc@FfFlu1v^?yuSWI<;bfz?vhVU$8F+O^t6*8)wg1>D<9HF0xu zjf?jEbG~P+`%i<=i%KBR5{)!$jyr6tsdPeKm_p|I_}yOkk(1?G znu{DSYEZiW)lxgLI(YIVKRZbFov>woEasbf&O3j7O)Xe{I`F3ft-1m}zr=sI6F;AY ej{rP&s=+ULfsKlze2D4*0000