From d7ce35428c31b7f1e065dc36e1c72c5669f27307 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Fri, 9 Mar 2018 19:57:20 +0000 Subject: [PATCH] Add a config option to change the textures of the end ores to use the stone background. I still need to add the other ores, but this is the main one that needs doing. --- src/main/java/techreborn/blocks/BlockOre.java | 42 ++++++++++-------- .../blocks/OreBlockStateManager.java | 28 ++++++++++++ .../assets/techreborn/blockstates/ores.json | 5 +++ .../blocks/ore/tungsten_ore_stone.png | Bin 0 -> 444 bytes 4 files changed, 57 insertions(+), 18 deletions(-) create mode 100644 src/main/java/techreborn/blocks/OreBlockStateManager.java create mode 100644 src/main/resources/assets/techreborn/textures/blocks/ore/tungsten_ore_stone.png diff --git a/src/main/java/techreborn/blocks/BlockOre.java b/src/main/java/techreborn/blocks/BlockOre.java index f947f84e8..13328ee9d 100644 --- a/src/main/java/techreborn/blocks/BlockOre.java +++ b/src/main/java/techreborn/blocks/BlockOre.java @@ -58,6 +58,7 @@ import techreborn.world.config.IOreNameProvider; import java.util.List; import java.util.Random; +import java.util.stream.Collectors; @RebornRegistry(modID = ModInfo.MOD_ID) public class BlockOre extends Block implements IOreNameProvider { @@ -66,8 +67,8 @@ public class BlockOre extends Block implements IOreNameProvider { "galena", "iridium", "ruby", "sapphire", "bauxite", "pyrite", "cinnabar", "sphalerite", "tungsten", "sheldonite", "peridot", "sodalite", "lead", "silver" }; - private static final List oreNamesList = Lists.newArrayList(ArrayUtils.arrayToLowercase(ores)); - public static final PropertyString VARIANTS = new PropertyString("type", oreNamesList); + public static List oreNamesList = Lists.newArrayList(ArrayUtils.arrayToLowercase(ores)); + public static final PropertyString VARIANTS = getVarients(); @ConfigRegistry(config = "misc", category = "blocks", key = "rubyMinQuatity", comment = "Minimum quantity of Ruby gems per Ruby ore") public static int rubyMinQuatity = 1; @ConfigRegistry(config = "misc", category = "blocks", key = "rubyMaxQuantity", comment = "Maximum quantity of Ruby gems per Ruby ore") @@ -100,12 +101,13 @@ public class BlockOre extends Block implements IOreNameProvider { setHarvestLevel("pickaxe", 2); this.setDefaultState(this.getStateFromMeta(0)); for (int i = 0; i < ores.length; i++) { - ShootingStar.registerModel(new ModelCompound(ModInfo.MOD_ID, this, i).setInvVariant("type=" + ores[i]).setFileName("ores")); + ShootingStar.registerModel(new ModelCompound(ModInfo.MOD_ID, this, i).setInvVariant("type=" + OreBlockStateManager.convert(ores[i])).setFileName("ores")); } TRRecipeHandler.hideEntry(this); } public static ItemStack getOreByName(String name, int count) { + name = OreBlockStateManager.invert(name); for (int i = 0; i < ores.length; i++) { if (ores[i].equalsIgnoreCase(name)) { return new ItemStack(ModBlocks.ORE, count, i); @@ -119,6 +121,7 @@ public class BlockOre extends Block implements IOreNameProvider { } public IBlockState getBlockStateFromName(String name) { + name = OreBlockStateManager.invert(name); int index = -1; for (int i = 0; i < ores.length; i++) { if (ores[i].equalsIgnoreCase(name)) { @@ -137,36 +140,30 @@ public class BlockOre extends Block implements IOreNameProvider { String variant = state.getValue(VARIANTS); int meta = getMetaFromState(state); Random random = new Random(); - + // Secondary drop, like peridot from sapphire ore added via event handler. if (variant.equalsIgnoreCase("Ruby")) { OreDrop ruby = new OreDrop(ItemGems.getGemByName("ruby", rubyMinQuatity), rubyMaxQuantity); drops.add(ruby.getDrops(fortune, random)); - } - else if (variant.equalsIgnoreCase("Sapphire")) { + } else if (variant.equalsIgnoreCase("Sapphire")) { OreDrop sapphire = new OreDrop(ItemGems.getGemByName("sapphire", sapphireMinQuantity), sapphireMaxQuantity); drops.add(sapphire.getDrops(fortune, random)); - } - else if (variant.equalsIgnoreCase("Pyrite")) { + } else if (variant.equalsIgnoreCase("Pyrite")) { OreDrop pyriteDust = new OreDrop(ItemDusts.getDustByName("pyrite", pyriteMinQuatity), pyriteMaxQuantity); drops.add(pyriteDust.getDrops(fortune, random)); - } - else if (variant.equalsIgnoreCase("Sodalite")) { + } else if (variant.equalsIgnoreCase("Sodalite")) { OreDrop sodalite = new OreDrop(ItemDusts.getDustByName("sodalite", sodaliteMinQuatity), sodaliteMaxQuantity); - drops.add(sodalite.getDrops(fortune, random)); - } - else if (variant.equalsIgnoreCase("Cinnabar")) { + drops.add(sodalite.getDrops(fortune, random)); + } else if (variant.equalsIgnoreCase("Cinnabar")) { OreDrop cinnabar = new OreDrop(ItemDusts.getDustByName("cinnabar", cinnabarMinQuatity), cinnabarMaxQuantity); drops.add(cinnabar.getDrops(fortune, random)); - } - else if (variant.equalsIgnoreCase("Sphalerite")) { + } else if (variant.equalsIgnoreCase("Sphalerite")) { OreDrop sphalerite = new OreDrop(ItemDusts.getDustByName("sphalerite", sphaleriteMinQuatity), sphaleriteMaxQuantity); drops.add(sphalerite.getDrops(fortune, random)); - } - else { + } else { drops.add(new ItemStack(Item.getItemFromBlock(this), 1, meta)); } - + return; } @@ -216,4 +213,13 @@ public class BlockOre extends Block implements IOreNameProvider { return StringUtils.toFirstCapital(oreNamesList.get(getMetaFromState(state))); } + public static PropertyString getVarients() { + if (OreBlockStateManager.endOreStone) { + oreNamesList = BlockOre.oreNamesList.stream().map(OreBlockStateManager::convert).collect(Collectors.toList()); + return new PropertyString("type", oreNamesList); + } else { + return new PropertyString("type", BlockOre.oreNamesList); + } + } + } diff --git a/src/main/java/techreborn/blocks/OreBlockStateManager.java b/src/main/java/techreborn/blocks/OreBlockStateManager.java new file mode 100644 index 000000000..747ef1957 --- /dev/null +++ b/src/main/java/techreborn/blocks/OreBlockStateManager.java @@ -0,0 +1,28 @@ +package techreborn.blocks; + +import reborncore.common.registration.RebornRegistry; +import reborncore.common.registration.impl.ConfigRegistry; +import techreborn.lib.ModInfo; + + +//This is in its own class as not to load the block class before +@RebornRegistry(modID = ModInfo.MOD_ID, priority = 1, earlyReg = true) +public class OreBlockStateManager { + //This is a one off config, dont worry about it + @ConfigRegistry(config = "misc", category = "misc", key = "endOreStone", comment = "Set to true to render the end ores with a stone background") + public static boolean endOreStone = false; + + public static String convert(String name){ + if (OreBlockStateManager.endOreStone && name.equals("tungsten")) { + name = "tungsten_stone"; + } + return name; + } + + public static String invert(String name){ + if (name.equals("tungsten_stone")) { + name = "tungsten"; + } + return name; + } +} diff --git a/src/main/resources/assets/techreborn/blockstates/ores.json b/src/main/resources/assets/techreborn/blockstates/ores.json index ca3c59417..096a005e5 100644 --- a/src/main/resources/assets/techreborn/blockstates/ores.json +++ b/src/main/resources/assets/techreborn/blockstates/ores.json @@ -55,6 +55,11 @@ "all": "techreborn:blocks/ore/tungsten_ore" } }, + "tungsten_stone": { + "textures": { + "all": "techreborn:blocks/ore/tungsten_ore_stone" + } + }, "sheldonite": { "textures": { "all": "techreborn:blocks/ore/sheldonite_ore" diff --git a/src/main/resources/assets/techreborn/textures/blocks/ore/tungsten_ore_stone.png b/src/main/resources/assets/techreborn/textures/blocks/ore/tungsten_ore_stone.png new file mode 100644 index 0000000000000000000000000000000000000000..4eeebe39298e7d0009118c1cafa242f18a195861 GIT binary patch literal 444 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwwyG3IF_ors{aQIEGmG$4)X_)e^wt8r!+MkTHyltC>qlx$KZhQ*Z0s=zr?-9`^o; z_Lx+i|7p_9ocrIuHg3ypPyA71ciANN`qzF{Ugn1AX-~ganff}YDcE9`)aAt6!TBVwM&|goTr=Sd=fW5K+|F!r{%a-A%Ga~p zgBe+}93*m>KNP6Wf3kDZ%*J`|tT|T8?RH9juzDt!R8rKD{-w`t{I7k`VVI?-;UXn1 zoOJN_huZs(887__UcsPY+Ohw+^TQ%L5!QOGeR5q~JIePRO4z?i=b_M~6SJ2kx%4S7 kn4cTc9WB|Ba{oWW30d<8oV?RGfPu^4>FVdQ&MBb@01LLPG5`Po literal 0 HcmV?d00001