From 74c92e59393445dd462e4ceae5ffe35143febf0d Mon Sep 17 00:00:00 2001 From: Bernhard Bonigl Date: Mon, 22 Sep 2014 14:29:21 +0200 Subject: [PATCH] We now have dynamic toolparts with default textures, just like the tools themselves! --- resources/assets/tinker/lang/cs_CZ.lang | 6 +- resources/assets/tinker/lang/de_DE.lang | 6 +- resources/assets/tinker/lang/en_PT.lang | 6 +- resources/assets/tinker/lang/en_US.lang | 6 +- resources/assets/tinker/lang/it_IT.lang | 6 +- resources/assets/tinker/lang/ko_KR.lang | 6 +- resources/assets/tinker/lang/ru_RU.lang | 58 ++++---- resources/assets/tinker/lang/zh_CN.lang | 6 +- .../library/crafting/ToolBuilder.java | 2 +- .../library/tools/DynamicToolPart.java | 137 ++++++++++++++++++ .../library/tools/ToolMaterial.java | 2 +- .../java/tconstruct/tools/TinkerTools.java | 49 ++++--- .../java/tconstruct/tools/items/ToolPart.java | 5 +- 13 files changed, 216 insertions(+), 79 deletions(-) create mode 100644 src/main/java/tconstruct/library/tools/DynamicToolPart.java diff --git a/resources/assets/tinker/lang/cs_CZ.lang b/resources/assets/tinker/lang/cs_CZ.lang index 4d3641e03f4..77954406299 100644 --- a/resources/assets/tinker/lang/cs_CZ.lang +++ b/resources/assets/tinker/lang/cs_CZ.lang @@ -536,11 +536,11 @@ parttype.thaumium=Thaumiov parttype.pigiron=Prasečo železn toolpart.ToolRod=%%materialá nástrojová tyč -toolpart.PickHead=%%materialá hlava krumpáče +toolpart.PickaxeHead=%%materialá hlava krumpáče toolpart.ShovelHead=%%materialá hlava lopaty toolpart.AxeHead=%%materialá hlava sekery toolpart.Binding=%%materialé vázání -toolpart.ToughBind=%%materialé těžká vázání +toolpart.ToughBinding=%%materialé těžká vázání toolpart.ToughRod=%%materialá těžká tyč toolpart.LargePlate=%%materialý velký plát toolpart.SwordBlade=%%materialá čepel na meči @@ -553,7 +553,7 @@ toolpart.FrypanHead=%%materialá pánev toolpart.SignHead=%%materialá cedule toolpart.ChiselHead=%%materialá hlava dláta toolpart.ScytheHead=%%materialá hlava kosy -toolpart.LumberHead=%%materialá velká hlava sekery +toolpart.LumberAxeHead=%%materialá velká hlava sekery toolpart.ExcavatorHead=%%materialé rypadlo toolpart.ToolShard=%%materialý krystal toolpart.LargeSwordBlade=%%materialá velká čepel diff --git a/resources/assets/tinker/lang/de_DE.lang b/resources/assets/tinker/lang/de_DE.lang index 9f81c951874..9676ae07ed1 100644 --- a/resources/assets/tinker/lang/de_DE.lang +++ b/resources/assets/tinker/lang/de_DE.lang @@ -550,11 +550,11 @@ parttype.thaumium=Thaumium parttype.pigiron=Schweineisen toolpart.ToolRod=%%material-Werkzeuggriff -toolpart.PickHead=%%material-Spitzhackenkopf +toolpart.PickaxeHead=%%material-Spitzhackenkopf toolpart.ShovelHead=%%material-Schaufelkopf toolpart.AxeHead=%%material-Axtkopf toolpart.Binding=%%material-Werkzeugbindung -toolpart.ToughBind=Robuste %%materialbindung +toolpart.ToughBinding=Robuste %%materialbindung toolpart.ToughRod=Robuster %%materialgriff toolpart.LargePlate=Große %%materialplatte toolpart.SwordBlade=%%material-Schwertklinge @@ -567,7 +567,7 @@ toolpart.FrypanHead=%%material-Pfanne toolpart.SignHead=%%material-Schildbrett toolpart.ChiselHead=%%material-Meißelkopf toolpart.ScytheHead=%%material-Sensenkopf -toolpart.LumberHead=%%material-Breitaxtkopf +toolpart.LumberAxeHead=%%material-Breitaxtkopf toolpart.ExcavatorHead=%%material-Exkavatorkopf toolpart.ToolShard=%%materialscherbe toolpart.LargeSwordBlade=Große %%materialschwertklinge diff --git a/resources/assets/tinker/lang/en_PT.lang b/resources/assets/tinker/lang/en_PT.lang index 783f6ed2cbf..3db7bb72d39 100644 --- a/resources/assets/tinker/lang/en_PT.lang +++ b/resources/assets/tinker/lang/en_PT.lang @@ -565,11 +565,11 @@ parttype.thaumium=Thaumium parttype.pigiron=Pig Iron toolpart.ToolRod=%%material Tool Rod -toolpart.PickHead=%%material Pickaxe Head +toolpart.PickaxeHead=%%material Pickaxe Head toolpart.ShovelHead=%%material Shovel Head toolpart.AxeHead=%%material Axe Head toolpart.Binding=%%material Binding -toolpart.ToughBind=%%material Tough Binding +toolpart.ToughBinding=%%material Tough Binding toolpart.ToughRod=%%material Tough Rod toolpart.LargePlate=%%material Large Plate toolpart.SwordBlade=%%material Sword Blade @@ -582,7 +582,7 @@ toolpart.FrypanHead=%%material Pan toolpart.SignHead=%%material Sign Head toolpart.ChiselHead=%%material Chisel Head toolpart.ScytheHead=%%material Scythe Head -toolpart.LumberHead=%%material Broad Axe Head +toolpart.LumberAxeHead=%%material Broad Axe Head toolpart.ExcavatorHead=%%material Excavator Head toolpart.ToolShard=%%material Shard toolpart.LargeSwordBlade=%%material Large Sword Blade diff --git a/resources/assets/tinker/lang/en_US.lang b/resources/assets/tinker/lang/en_US.lang index d278fe7fe4f..7a32cda5066 100644 --- a/resources/assets/tinker/lang/en_US.lang +++ b/resources/assets/tinker/lang/en_US.lang @@ -566,11 +566,11 @@ parttype.thaumium=Thaumium parttype.pigiron=Pig Iron toolpart.ToolRod=%%material Tool Rod -toolpart.PickHead=%%material Pickaxe Head +toolpart.PickaxeHead=%%material Pickaxe Head toolpart.ShovelHead=%%material Shovel Head toolpart.AxeHead=%%material Axe Head toolpart.Binding=%%material Binding -toolpart.ToughBind=%%material Tough Binding +toolpart.ToughBinding=%%material Tough Binding toolpart.ToughRod=%%material Tough Rod toolpart.LargePlate=%%material Large Plate toolpart.SwordBlade=%%material Sword Blade @@ -583,7 +583,7 @@ toolpart.FrypanHead=%%material Pan toolpart.SignHead=%%material Sign Head toolpart.ChiselHead=%%material Chisel Head toolpart.ScytheHead=%%material Scythe Head -toolpart.LumberHead=%%material Broad Axe Head +toolpart.LumberAxeHead=%%material Broad Axe Head toolpart.ExcavatorHead=%%material Excavator Head toolpart.ToolShard=%%material Shard toolpart.LargeSwordBlade=%%material Large Sword Blade diff --git a/resources/assets/tinker/lang/it_IT.lang b/resources/assets/tinker/lang/it_IT.lang index bc8a1b55f97..8a11e4836b7 100644 --- a/resources/assets/tinker/lang/it_IT.lang +++ b/resources/assets/tinker/lang/it_IT.lang @@ -566,11 +566,11 @@ parttype.thaumium=di taumio parttype.pigiron=di ferro suino toolpart.ToolRod=Manico %%material -toolpart.PickHead=Testa di piccone %%material +toolpart.PickaxeHead=Testa di piccone %%material toolpart.ShovelHead=Testa di pala %%material toolpart.AxeHead=Testa d'ascia %%material toolpart.Binding=Legatura %%material -toolpart.ToughBind=Legatura resistente %%material +toolpart.ToughBinding=Legatura resistente %%material toolpart.ToughRod=Manico resistente %%material toolpart.LargePlate=Piastra grande %%material toolpart.SwordBlade=Lama di spada %%material @@ -583,7 +583,7 @@ toolpart.FrypanHead=Padella %%material toolpart.SignHead=Testa di cartello %%material toolpart.ChiselHead=Testa di cesellatore %%material toolpart.ScytheHead=Testa di falce %%material -toolpart.LumberHead=Testa d'ascia larga %%material +toolpart.LumberAxeHead=Testa d'ascia larga %%material toolpart.ExcavatorHead=Testa di vanga %%material toolpart.ToolShard=Frammento %%material toolpart.LargeSwordBlade=Grande lama di spada %%material diff --git a/resources/assets/tinker/lang/ko_KR.lang b/resources/assets/tinker/lang/ko_KR.lang index 3ed61620238..4a7734c49fe 100644 --- a/resources/assets/tinker/lang/ko_KR.lang +++ b/resources/assets/tinker/lang/ko_KR.lang @@ -564,11 +564,11 @@ parttype.thaumium=사우뮴 parttype.pigiron=돼지 선철 toolpart.ToolRod=%%material 도구 막대기 -toolpart.PickHead=%%material 곡괭이 머리 +toolpart.PickaxeHead=%%material 곡괭이 머리 toolpart.ShovelHead=%%material 삽 머리 toolpart.AxeHead=%%material 도끼 날 toolpart.Binding=%%material 도구 조임쇠 -toolpart.ToughBind=%%material 두꺼운 조임쇠 +toolpart.ToughBinding=%%material 두꺼운 조임쇠 toolpart.ToughRod=%%material 두꺼운 막대기 toolpart.LargePlate=%%material 대형 강화판 toolpart.SwordBlade=%%material 검 날 @@ -581,7 +581,7 @@ toolpart.FrypanHead=%%material 팬 toolpart.SignHead=%%material 표지판 머리 toolpart.ChiselHead=%%material 정 머리 toolpart.ScytheHead=%%material 낫 날 -toolpart.LumberHead=%%material 넓은 도끼 날 +toolpart.LumberAxeHead=%%material 넓은 도끼 날 toolpart.ExcavatorHead=%%material 굴착기 머리 toolpart.ToolShard=%%material 조각 toolpart.LargeSwordBlade=%%material 넓은 검 날 diff --git a/resources/assets/tinker/lang/ru_RU.lang b/resources/assets/tinker/lang/ru_RU.lang index ec1d06cc100..95904c7fa9c 100644 --- a/resources/assets/tinker/lang/ru_RU.lang +++ b/resources/assets/tinker/lang/ru_RU.lang @@ -566,11 +566,11 @@ parttype.thaumium=Таумический parttype.pigiron=Свиножелезный toolpart.ToolRod=%%material стержень -toolpart.PickHead=%%material обух кирки +toolpart.PickaxeHead=%%material обух кирки toolpart.ShovelHead=%%material штык лопаты toolpart.AxeHead=%%material обух топора toolpart.Binding=%%material крепление -toolpart.ToughBind=%%material прочное крепление +toolpart.ToughBinding=%%material прочное крепление toolpart.ToughRod=%%material прочный стержень toolpart.LargePlate=%%material большая пластина toolpart.SwordBlade=%%material лезвие меча @@ -583,7 +583,7 @@ toolpart.FrypanHead=%%material сковорода toolpart.SignHead=%%material табличка toolpart.ChiselHead=%%material лезвие стамески toolpart.ScytheHead=%%material лезвие косы -toolpart.LumberHead=%%material большой обух топора +toolpart.LumberAxeHead=%%material большой обух топора toolpart.ExcavatorHead=%%material пластина копалки toolpart.ToolShard=%%material осколок toolpart.LargeSwordBlade=%%material большое лезвие меча @@ -1119,11 +1119,11 @@ tool.shortbow.steel=Стальной короткий лук tool.shortbow.thaumium=Таумический короткий лук toolpart.ToolRod.netherrack=Стержень из камня Нижнего мира -toolpart.PickHead.netherrack=Обух кирки из камня Нижнего мира +toolpart.PickaxeHead.netherrack=Обух кирки из камня Нижнего мира toolpart.ShovelHead.netherrack=Штык лопаты из камня Нижнего мира toolpart.AxeHead.netherrack=Обух топора из камня Нижнего мира toolpart.Binding.netherrack=Крепление из камня Нижнего мира -toolpart.ToughBind.netherrack=Прочное крепление из камня Нижнего мира +toolpart.ToughBinding.netherrack=Прочное крепление из камня Нижнего мира toolpart.ToughRod.netherrack=Прочный стержень из камня Нижнего мира toolpart.LargePlate.netherrack=Большая пластина из камня Нижнего мира toolpart.SwordBlade.netherrack=Лезвие меча из камня Нижнего мира @@ -1136,7 +1136,7 @@ toolpart.FrypanHead.netherrack=Сковорода из камня Нижнего toolpart.SignHead.netherrack=Табличка из камня Нижнего мира toolpart.ChiselHead.netherrack=Лезвие стамески из камня Нижнего мира toolpart.ScytheHead.netherrack=Лезвие косы из камня Нижнего мира -toolpart.LumberHead.netherrack=Большой обух топора из камня Нижнего мира +toolpart.LumberAxeHead.netherrack=Большой обух топора из камня Нижнего мира toolpart.ExcavatorHead.netherrack=Пластина копалки из камня Нижнего мира toolpart.ToolShard.netherrack=Осколок из камня Нижнего мира toolpart.LargeSwordBlade.netherrack=Большое лезвие меча из камня Нижнего мира @@ -1144,11 +1144,11 @@ toolpart.HammerHead.netherrack=Боёк молота из камня Нижне toolpart.ArrowHead.netherrack=Наконечник стрелы из камня Нижнего мира toolpart.ToolRod.blueslime=Стержень из синей слизи -toolpart.PickHead.blueslime=Обух кирки из синей слизи +toolpart.PickaxeHead.blueslime=Обух кирки из синей слизи toolpart.ShovelHead.blueslime=Штык лопаты из синей слизи toolpart.AxeHead.blueslime=Обух топора из синей слизи toolpart.Binding.blueslime=Крепление из синей слизи -toolpart.ToughBind.blueslime=Прочное крепление из синей слизи +toolpart.ToughBinding.blueslime=Прочное крепление из синей слизи toolpart.ToughRod.blueslime=Прочный стержень из синей слизи toolpart.LargePlate.blueslime=Большая пластина из синей слизи toolpart.SwordBlade.blueslime=Лезвие меча из синей слизи @@ -1161,7 +1161,7 @@ toolpart.FrypanHead.blueslime=Сковорода из синей слизи toolpart.SignHead.blueslime=Табличка из синей слизи toolpart.ChiselHead.blueslime=Лезвие стамески из синей слизи toolpart.ScytheHead.blueslime=Лезвие косы из синей слизи -toolpart.LumberHead.blueslime=Большой обух топора из синей слизи +toolpart.LumberAxeHead.blueslime=Большой обух топора из синей слизи toolpart.ExcavatorHead.blueslime=Пластина копалки из синей слизи toolpart.ToolShard.blueslime=Осколок из синей слизи toolpart.LargeSwordBlade.blueslime=Большое лезвие меча из синей слизи @@ -1169,11 +1169,11 @@ toolpart.HammerHead.blueslime=Боёк молота из синей слизи toolpart.ArrowHead.blueslime=Наконечник стрелы из синей слизи toolpart.ToolRod.pigiron=Стержень из свиного железа -toolpart.PickHead.pigiron=Обух кирки из свиного железа +toolpart.PickaxeHead.pigiron=Обух кирки из свиного железа toolpart.ShovelHead.pigiron=Штык лопаты из свиного железа toolpart.AxeHead.pigiron=Обух топора из свиного железа toolpart.Binding.pigiron=Крепление из свиного железа -toolpart.ToughBind.pigiron=Прочное крепление из свиного железа +toolpart.ToughBinding.pigiron=Прочное крепление из свиного железа toolpart.ToughRod.pigiron=Прочный стержень из свиного железа toolpart.LargePlate.pigiron=Большая пластина из свиного железа toolpart.SwordBlade.pigiron=Лезвие меча из свиного железа @@ -1186,7 +1186,7 @@ toolpart.FrypanHead.pigiron=Сковорода из свиного железа toolpart.SignHead.pigiron=Табличка из свиного железа toolpart.ChiselHead.pigiron=Лезвие стамески из свиного железа toolpart.ScytheHead.pigiron=Лезвие косы из свиного железа -toolpart.LumberHead.pigiron=Большой обух топора из свиного железа +toolpart.LumberAxeHead.pigiron=Большой обух топора из свиного железа toolpart.ExcavatorHead.pigiron=Пластина копалки из свиного железа toolpart.ToolShard.pigiron=Осколок из свиного железа toolpart.LargeSwordBlade.pigiron=Большое лезвие меча из свиного железа @@ -1211,23 +1211,23 @@ toolpart.Binding.alumite=Алюмитовое крепление toolpart.Binding.steel=Стальное крепление toolpart.Binding.thaumium=Таумическое крепление -toolpart.ToughBind.wood=Деревянное прочное крепление -toolpart.ToughBind.stone=Каменное прочное крепление -toolpart.ToughBind.iron=Железное прочное крепление -toolpart.ToughBind.flint=Кремниевое прочное крепление -toolpart.ToughBind.cactus=Кактусовое прочное крепление -toolpart.ToughBind.bone=Костное прочное крепление -toolpart.ToughBind.obsidian=Обсидиановое прочное крепление -toolpart.ToughBind.slime=Слизневое прочное крепление -toolpart.ToughBind.paper=Бумажное прочное крепление -toolpart.ToughBind.cobalt=Кобальтовое прочное крепление -toolpart.ToughBind.ardite=Ардитовое прочное крепление -toolpart.ToughBind.manyullyn=Мануллиновое прочное крепление -toolpart.ToughBind.copper=Медное прочное крепление -toolpart.ToughBind.bronze=Бронзовое прочное крепление -toolpart.ToughBind.alumite=Алюмитовое прочное крепление -toolpart.ToughBind.steel=Стальное прочное крепление -toolpart.ToughBind.thaumium=Таумическое прочное крепление +toolpart.ToughBinding.wood=Деревянное прочное крепление +toolpart.ToughBinding.stone=Каменное прочное крепление +toolpart.ToughBinding.iron=Железное прочное крепление +toolpart.ToughBinding.flint=Кремниевое прочное крепление +toolpart.ToughBinding.cactus=Кактусовое прочное крепление +toolpart.ToughBinding.bone=Костное прочное крепление +toolpart.ToughBinding.obsidian=Обсидиановое прочное крепление +toolpart.ToughBinding.slime=Слизневое прочное крепление +toolpart.ToughBinding.paper=Бумажное прочное крепление +toolpart.ToughBinding.cobalt=Кобальтовое прочное крепление +toolpart.ToughBinding.ardite=Ардитовое прочное крепление +toolpart.ToughBinding.manyullyn=Мануллиновое прочное крепление +toolpart.ToughBinding.copper=Медное прочное крепление +toolpart.ToughBinding.bronze=Бронзовое прочное крепление +toolpart.ToughBinding.alumite=Алюмитовое прочное крепление +toolpart.ToughBinding.steel=Стальное прочное крепление +toolpart.ToughBinding.thaumium=Таумическое прочное крепление toolpart.SwordBlade.wood=Деревянное лезвие меча toolpart.SwordBlade.stone=Каменное лезвие меча diff --git a/resources/assets/tinker/lang/zh_CN.lang b/resources/assets/tinker/lang/zh_CN.lang index 2cdf65e6a04..74d0ad85ce1 100644 --- a/resources/assets/tinker/lang/zh_CN.lang +++ b/resources/assets/tinker/lang/zh_CN.lang @@ -566,11 +566,11 @@ parttype.thaumium=神秘 parttype.pigiron=生铁 toolpart.ToolRod=%%material手柄 -toolpart.PickHead=%%material镐头 +toolpart.PickaxeHead=%%material镐头 toolpart.ShovelHead=%%material铲刃 toolpart.AxeHead=%%material斧刃 toolpart.Binding=%%material绑定结 -toolpart.ToughBind=%%material坚韧绑定结 +toolpart.ToughBinding=%%material坚韧绑定结 toolpart.ToughRod=%%material坚韧手柄 toolpart.LargePlate=%%material大板 toolpart.SwordBlade=%%material剑刃 @@ -583,7 +583,7 @@ toolpart.FrypanHead=%%material盘 toolpart.SignHead=%%material牌板 toolpart.ChiselHead=%%material凿刃 toolpart.ScytheHead=%%material镰刀刀刃 -toolpart.LumberHead=%%material宽斧刃 +toolpart.LumberAxeHead=%%material宽斧刃 toolpart.ExcavatorHead=%%material开掘铲铲刃 toolpart.ToolShard=%%material碎片 toolpart.LargeSwordBlade=%%material大剑刃 diff --git a/src/main/java/tconstruct/library/crafting/ToolBuilder.java b/src/main/java/tconstruct/library/crafting/ToolBuilder.java index f36790e35ed..5de2435dcb7 100644 --- a/src/main/java/tconstruct/library/crafting/ToolBuilder.java +++ b/src/main/java/tconstruct/library/crafting/ToolBuilder.java @@ -432,7 +432,7 @@ public static String defaultToolName (ItemStack stack) public static String defaultToolName (ToolMaterial headMat, ToolCore tool) { String toolName = tool.getToolName().toLowerCase(); - String matName = headMat.materialName.toLowerCase().replaceAll(" ", ""); + String matName = headMat.materialName.toLowerCase().replaceAll(" ", "").replaceAll("_",""); if (StatCollector.canTranslate("tool." + toolName + "." + matName)) { diff --git a/src/main/java/tconstruct/library/tools/DynamicToolPart.java b/src/main/java/tconstruct/library/tools/DynamicToolPart.java new file mode 100644 index 00000000000..1715d8f034c --- /dev/null +++ b/src/main/java/tconstruct/library/tools/DynamicToolPart.java @@ -0,0 +1,137 @@ +package tconstruct.library.tools; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import mantle.items.abstracts.CraftingItem; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.util.StatCollector; +import tconstruct.TConstruct; +import tconstruct.library.TConstructRegistry; +import tconstruct.library.util.IToolPart; +import tconstruct.library.util.TextureHelper; +import tconstruct.tools.TinkerTools; + +import java.util.List; +import java.util.Map; + +public class DynamicToolPart extends CraftingItem implements IToolPart +{ + public String partName; + public String texture; + public IIcon defaultIcon; + + public DynamicToolPart(String texture, String name) + { + this(texture, name, "tinker"); + } + + public DynamicToolPart(String texture, String name, String domain) + { + super(null, null, "parts/", domain, TConstructRegistry.partTab); + this.setUnlocalizedName("tconstruct." + name); + this.partName = name; + this.texture = texture; + } + + // item meta = material id + @Override + public int getMaterialID (ItemStack stack) + { + if (TConstructRegistry.toolMaterials.keySet().contains(stack.getItemDamage())) + return stack.getItemDamage(); + + return -1; + } + + @Override + public String getItemStackDisplayName (ItemStack stack) + { + tconstruct.library.tools.ToolMaterial toolmat = TConstructRegistry.getMaterial(getMaterialID(stack)); + if(toolmat == null) + return super.getItemStackDisplayName(stack); + + String material = toolmat.localizationString.substring(9); // :( + + // custom name + if (StatCollector.canTranslate("toolpart." + partName + "." + material)) + { + return StatCollector.translateToLocal("toolpart." + partName + "." + material); + } + // general name + else + { + material = StatCollector.translateToLocal("material." + material); + return StatCollector.translateToLocal("toolpart." + partName).replaceAll("%%material", material); + } + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + int id = getMaterialID(stack); + if(id == -1) + return getUnlocalizedName(); + + return "toolpart." + partName + "." + TConstructRegistry.getMaterial(id).materialName; + } + + @Override + public void getSubItems (Item item, CreativeTabs tab, List list) + { + // material id == metadata + for(Integer matID : TConstructRegistry.toolMaterials.keySet()) + list.add(new ItemStack(item, 1, matID)); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons (IIconRegister iconRegister) + { + // get the biggest material index + int max = -1; + for(Integer id : TConstructRegistry.toolMaterials.keySet()) + if(id > max) + max = id; + + this.icons = new IIcon[max+1]; + + // register icon for each material that has one + for(Map.Entry entry : TConstructRegistry.toolMaterials.entrySet()) + { + String tex = modTexPrefix + ":" + folder + entry.getValue().materialName.toLowerCase() + texture; + if(TextureHelper.itemTextureExists(tex)) + this.icons[entry.getKey()] = iconRegister.registerIcon(tex); + } + + // default texture + this.defaultIcon = iconRegister.registerIcon(modTexPrefix + ":" + folder + texture); + } + + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage (int meta) + { + if(meta > icons.length) + return defaultIcon; + + if(icons[meta] == null) + return defaultIcon; + + return icons[meta]; + } + + @Override + public int getColorFromItemStack(ItemStack stack, int renderpass) { + int matId = getMaterialID(stack); + if(matId > icons.length) + return super.getColorFromItemStack(stack, renderpass); + + if(icons[matId] == null) + return TConstructRegistry.getMaterial(matId).primaryColor(); + + return super.getColorFromItemStack(stack, renderpass); + } +} diff --git a/src/main/java/tconstruct/library/tools/ToolMaterial.java b/src/main/java/tconstruct/library/tools/ToolMaterial.java index f176da1058d..2d1658ae8b7 100644 --- a/src/main/java/tconstruct/library/tools/ToolMaterial.java +++ b/src/main/java/tconstruct/library/tools/ToolMaterial.java @@ -18,7 +18,7 @@ public class ToolMaterial public final String tipStyle; public final int primaryColor; - private final String localizationString; + public final String localizationString; @Deprecated public String displayName; diff --git a/src/main/java/tconstruct/tools/TinkerTools.java b/src/main/java/tconstruct/tools/TinkerTools.java index a9332d33e0d..2153be49153 100644 --- a/src/main/java/tconstruct/tools/TinkerTools.java +++ b/src/main/java/tconstruct/tools/TinkerTools.java @@ -224,30 +224,31 @@ public void preInit (FMLPreInitializationEvent event) TinkerTools.potionLauncher = new PotionLauncher().setUnlocalizedName("tconstruct.PotionLauncher"); GameRegistry.registerItem(TinkerTools.potionLauncher, "potionLauncher"); - TinkerTools.pickaxeHead = new ToolPart("_pickaxe_head", "PickHead").setUnlocalizedName("tconstruct.PickaxeHead"); - TinkerTools.shovelHead = new ToolPart("_shovel_head", "ShovelHead").setUnlocalizedName("tconstruct.ShovelHead"); - TinkerTools.hatchetHead = new ToolPart("_axe_head", "AxeHead").setUnlocalizedName("tconstruct.AxeHead"); - TinkerTools.binding = new ToolPart("_binding", "Binding").setUnlocalizedName("tconstruct.Binding"); - TinkerTools.toughBinding = new ToolPart("_toughbind", "ToughBind").setUnlocalizedName("tconstruct.ThickBinding"); - TinkerTools.toughRod = new ToolPart("_toughrod", "ToughRod").setUnlocalizedName("tconstruct.ThickRod"); - TinkerTools.largePlate = new ToolPart("_largeplate", "LargePlate").setUnlocalizedName("tconstruct.LargePlate"); - - TinkerTools.swordBlade = new ToolPart("_sword_blade", "SwordBlade").setUnlocalizedName("tconstruct.SwordBlade"); - TinkerTools.wideGuard = new ToolPart("_large_guard", "LargeGuard").setUnlocalizedName("tconstruct.LargeGuard"); - TinkerTools.handGuard = new ToolPart("_medium_guard", "MediumGuard").setUnlocalizedName("tconstruct.MediumGuard"); - TinkerTools.crossbar = new ToolPart("_crossbar", "Crossbar").setUnlocalizedName("tconstruct.Crossbar"); - TinkerTools.knifeBlade = new ToolPart("_knife_blade", "KnifeBlade").setUnlocalizedName("tconstruct.KnifeBlade"); - TinkerTools.fullGuard = new ToolPartHidden("_full_guard", "FullGuard").setUnlocalizedName("tconstruct.FullGuard"); - - TinkerTools.frypanHead = new ToolPart("_frypan_head", "FrypanHead").setUnlocalizedName("tconstruct.FrypanHead"); - TinkerTools.signHead = new ToolPart("_battlesign_head", "SignHead").setUnlocalizedName("tconstruct.SignHead"); - TinkerTools.chiselHead = new ToolPart("_chisel_head", "ChiselHead").setUnlocalizedName("tconstruct.ChiselHead"); - - TinkerTools.scytheBlade = new ToolPart("_scythe_head", "ScytheHead").setUnlocalizedName("tconstruct.ScytheBlade"); - TinkerTools.broadAxeHead = new ToolPart("_lumberaxe_head", "LumberHead").setUnlocalizedName("tconstruct.LumberHead"); - TinkerTools.excavatorHead = new ToolPart("_excavator_head", "ExcavatorHead").setUnlocalizedName("tconstruct.ExcavatorHead"); - TinkerTools.largeSwordBlade = new ToolPart("_large_sword_blade", "LargeSwordBlade").setUnlocalizedName("tconstruct.LargeSwordBlade"); - TinkerTools.hammerHead = new ToolPart("_hammer_head", "HammerHead").setUnlocalizedName("tconstruct.HammerHead"); + //TinkerTools.pickaxeHead = new ToolPart("_pickaxe_head", "PickHead").setUnlocalizedName("tconstruct.PickaxeHead"); + TinkerTools.pickaxeHead = new DynamicToolPart("_pickaxe_head", "PickaxeHead"); + TinkerTools.shovelHead = new DynamicToolPart("_shovel_head", "ShovelHead"); + TinkerTools.hatchetHead = new DynamicToolPart("_axe_head", "AxeHead"); + TinkerTools.binding = new DynamicToolPart("_binding", "Binding"); + TinkerTools.toughBinding = new DynamicToolPart("_toughbind", "ToughBinding"); + TinkerTools.toughRod = new DynamicToolPart("_toughrod", "ToughRod"); + TinkerTools.largePlate = new DynamicToolPart("_largeplate", "LargePlate"); + + TinkerTools.swordBlade = new DynamicToolPart("_sword_blade", "SwordBlade"); + TinkerTools.wideGuard = new DynamicToolPart("_large_guard", "LargeGuard"); + TinkerTools.handGuard = new DynamicToolPart("_medium_guard", "MediumGuard"); + TinkerTools.crossbar = new DynamicToolPart("_crossbar", "Crossbar"); + TinkerTools.knifeBlade = new DynamicToolPart("_knife_blade", "KnifeBlade"); + TinkerTools.fullGuard = new ToolPartHidden("_full_guard", "FullGuard").setUnlocalizedName("tconstruct.FullGuard"); // todo + + TinkerTools.frypanHead = new DynamicToolPart("_frypan_head", "FrypanHead"); + TinkerTools.signHead = new DynamicToolPart("_battlesign_head", "SignHead"); + TinkerTools.chiselHead = new DynamicToolPart("_chisel_head", "ChiselHead"); + + TinkerTools.scytheBlade = new DynamicToolPart("_scythe_head", "ScytheHead"); + TinkerTools.broadAxeHead = new DynamicToolPart("_lumberaxe_head", "LumberAxeHead"); + TinkerTools.excavatorHead = new DynamicToolPart("_excavator_head", "ExcavatorHead"); + TinkerTools.largeSwordBlade = new DynamicToolPart("_large_sword_blade", "LargeSwordBlade"); + TinkerTools.hammerHead = new DynamicToolPart("_hammer_head", "HammerHead"); TinkerTools.bowstring = new Bowstring().setUnlocalizedName("tconstruct.Bowstring"); TinkerTools.arrowhead = new ToolPart("_arrowhead", "ArrowHead").setUnlocalizedName("tconstruct.Arrowhead"); diff --git a/src/main/java/tconstruct/tools/items/ToolPart.java b/src/main/java/tconstruct/tools/items/ToolPart.java index 69635b06312..3b5a97cff68 100644 --- a/src/main/java/tconstruct/tools/items/ToolPart.java +++ b/src/main/java/tconstruct/tools/items/ToolPart.java @@ -15,8 +15,7 @@ public class ToolPart extends CraftingItem implements IToolPart public ToolPart(String textureType, String name) { - super(toolMaterialNames, buildTextureNames(textureType), "parts/", "tinker", TConstructRegistry.materialTab); - this.setCreativeTab(TConstructRegistry.partTab); + super(toolMaterialNames, buildTextureNames(textureType), "parts/", "tinker", TConstructRegistry.partTab); this.setHasSubtypes(true); this.setMaxDamage(0); this.partName = name; @@ -34,7 +33,7 @@ public String getItemStackDisplayName (ItemStack par1ItemStack) } else { - material = StatCollector.translateToLocal("parttype." + material); + material = StatCollector.translateToLocal("material." + material); name = StatCollector.translateToLocal("toolpart." + partName); name = name.replaceAll("%%material", material); }