From 41794bf93eca150213e7d19e417181c8a41e0848 Mon Sep 17 00:00:00 2001 From: KeyLime17 Date: Tue, 25 Jun 2024 23:09:28 -0400 Subject: [PATCH] Added banners Organized Files --- .gradle/8.2.1/checksums/checksums.lock | Bin 17 -> 17 bytes .gradle/8.2.1/fileHashes/fileHashes.lock | 2 +- .../modules/CinderLoE-Git.ideVirtualMain.iml | 1 + gradle.properties | 2 +- .../com/zivilon/cinder_loe/CinderLoE.java | 70 ++++++--- .../com/zivilon/cinder_loe/Materials.java | 3 +- .../cinder_loe/blocks/VerticalWeaponRack.java | 24 +++ .../character/CharacterEventListener.java | 6 +- .../client/model/ModelBreeKettleHelmet.java | 38 +++-- .../client/model/ModelFangornAuroch.java | 3 - .../client/model/ModelFangornElk.java | 3 +- .../client/model/ModelFangornWolf.java | 4 +- .../client/model/Modelverticalweaponrack.java | 92 +++++++++++ .../client/render/RenderBattleNun.java | 4 +- .../client/render/RenderDarkSpider.java | 14 ++ .../client/render/RenderFangornAuroch.java | 2 +- .../client/render/RenderFangornBear.java | 3 +- .../client/render/RenderFangornElk.java | 5 +- .../client/render/RenderFangornWolf.java | 5 - .../client/render/RenderLimwaith.java | 3 +- .../client/render/RenderLimwaithShaman.java | 9 +- .../block/Renderverticalweaponrack.java | 144 ++++++++++++++++++ .../cinder_loe/coremod/LOTRBannerAdder.java | 4 + .../cinder_loe/coremod/LOTRWeaponLinker.java | 2 +- .../zivilon/cinder_loe/entity/DarkSpider.java | 90 +++++++++++ .../cinder_loe/entity/SpeechBankModifier.java | 2 + .../entity/corrupt/CorruptDwarf.java | 4 +- .../cinder_loe/entity/corrupt/CorruptElf.java | 4 +- .../entity/corrupt/CorruptHobbit.java | 4 +- .../cinder_loe/entity/corrupt/CorruptMan.java | 4 +- .../cinder_loe/entity/corrupt/CorruptOrc.java | 4 +- .../entity/{ => npc}/ArnorBannerBearer.java | 2 +- .../entity/{ => npc}/ArnorCaptain.java | 3 +- .../entity/{ => npc}/ArnorSoldier.java | 2 +- .../entity/{ => npc}/ArnorSoldierArcher.java | 9 +- .../entity/{ => npc}/BattleNun.java | 8 +- .../entity/{ => npc}/BreeCaptain.java | 2 +- .../entity/{ => npc}/BreeCrossbowman.java | 5 +- .../entity/{ => npc}/BreeOutrider.java | 2 +- .../entity/{ => npc}/BreeSoldier.java | 2 +- .../{ => npc}/BreeSoldierBannerBearer.java | 2 +- .../entity/{ => npc}/DwarfLevy.java | 2 +- .../entity/{ => npc}/FangornAnimal.java | 2 +- .../entity/{ => npc}/FangornAuroch.java | 9 +- .../entity/{ => npc}/FangornBear.java | 5 +- .../entity/{ => npc}/FangornElk.java | 8 +- .../entity/{ => npc}/FangornWildBoar.java | 10 +- .../entity/{ => npc}/FangornWolf.java | 13 +- .../entity/{ => npc}/HaradLevy.java | 2 +- .../cinder_loe/entity/{ => npc}/Limwaith.java | 2 +- .../{ => npc}/LimwaithBannerBearer.java | 11 +- .../entity/{ => npc}/LimwaithBlowgunner.java | 10 +- .../entity/{ => npc}/LimwaithBoneWarrior.java | 2 +- .../entity/{ => npc}/LimwaithChieftain.java | 3 +- .../entity/{ => npc}/LimwaithWarrior.java | 35 +---- .../entity/{ => npc}/RedDwarfArbalest.java | 2 +- .../{ => npc}/RedDwarfBannerBearer.java | 12 +- .../entity/{ => npc}/RedDwarfCommander.java | 2 +- .../entity/{ => npc}/RedDwarfWarrior.java | 2 +- .../entity/trader/BladorthinSmith.java | 106 +++++++++++++ .../{ => trader}/LimwaithFishmonger.java | 7 +- .../entity/{ => trader}/LimwaithShaman.java | 6 +- .../entity/{ => trader}/RedDwarfSmith.java | 2 +- .../cinder_loe/items/RadagastStaff.java | 16 +- .../cinder_loe/items/UnnamedSpear.java | 37 +++++ .../mixins/MixinLOTRArmorModels.java | 4 - .../mixins/MixinLOTRContainerAnvil.java | 4 +- .../MixinLOTRTileEntityDwarvenForge.java | 28 +++- .../mixins/MixinLOTRTileEntityForgeBase.java | 14 ++ .../java/com/zivilon/cinder_loe/recipes.java | 4 + .../assets/cinder_loe/lang/en_US.lang | 7 + .../cinder_loe/mob/spider/spider_dark.png | Bin 0 -> 9212 bytes .../{corrupt => corruptSpeak/all}/hostile.txt | 0 .../{corrupt => corruptSpeak/all}/neutral.txt | 0 .../assets/lotr/item/banner/banner_blue.png | Bin 0 -> 8204 bytes .../assets/lotr/item/banner/banner_green.png | Bin 0 -> 8342 bytes .../lotr/item/banner/banner_limwaith.png | Bin 0 -> 9508 bytes .../assets/lotr/item/banner/banner_red.png | Bin 0 -> 8325 bytes .../assets/lotr/item/verticalweaponRack.png | Bin 0 -> 7246 bytes .../lotr/textures/items/banner_limwaith.png | Bin 0 -> 5325 bytes .../textures/items/large/spearUnnamed.png | Bin 0 -> 7339 bytes .../items/large/spearUnnamed.png.mcmeta | 30 ++++ .../lotr/textures/items/spearUnnamed.png | Bin 0 -> 4496 bytes 83 files changed, 743 insertions(+), 246 deletions(-) create mode 100644 src/main/java/com/zivilon/cinder_loe/blocks/VerticalWeaponRack.java create mode 100644 src/main/java/com/zivilon/cinder_loe/client/model/Modelverticalweaponrack.java create mode 100644 src/main/java/com/zivilon/cinder_loe/client/render/RenderDarkSpider.java create mode 100644 src/main/java/com/zivilon/cinder_loe/client/render/block/Renderverticalweaponrack.java create mode 100644 src/main/java/com/zivilon/cinder_loe/entity/DarkSpider.java rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/ArnorBannerBearer.java (94%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/ArnorCaptain.java (96%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/ArnorSoldier.java (98%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/ArnorSoldierArcher.java (81%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/BattleNun.java (83%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/BreeCaptain.java (98%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/BreeCrossbowman.java (89%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/BreeOutrider.java (99%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/BreeSoldier.java (96%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/BreeSoldierBannerBearer.java (93%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/DwarfLevy.java (98%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/FangornAnimal.java (98%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/FangornAuroch.java (89%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/FangornBear.java (96%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/FangornElk.java (89%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/FangornWildBoar.java (87%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/FangornWolf.java (82%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/HaradLevy.java (98%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/Limwaith.java (98%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/LimwaithBannerBearer.java (71%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/LimwaithBlowgunner.java (87%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/LimwaithBoneWarrior.java (97%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/LimwaithChieftain.java (95%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/LimwaithWarrior.java (58%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/RedDwarfArbalest.java (97%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/RedDwarfBannerBearer.java (71%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/RedDwarfCommander.java (97%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => npc}/RedDwarfWarrior.java (98%) create mode 100644 src/main/java/com/zivilon/cinder_loe/entity/trader/BladorthinSmith.java rename src/main/java/com/zivilon/cinder_loe/entity/{ => trader}/LimwaithFishmonger.java (91%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => trader}/LimwaithShaman.java (96%) rename src/main/java/com/zivilon/cinder_loe/entity/{ => trader}/RedDwarfSmith.java (99%) create mode 100644 src/main/java/com/zivilon/cinder_loe/items/UnnamedSpear.java create mode 100644 src/main/resources/assets/cinder_loe/mob/spider/spider_dark.png rename src/main/resources/assets/cinder_loe/speech/{corrupt => corruptSpeak/all}/hostile.txt (100%) rename src/main/resources/assets/cinder_loe/speech/{corrupt => corruptSpeak/all}/neutral.txt (100%) create mode 100644 src/main/resources/assets/lotr/item/banner/banner_blue.png create mode 100644 src/main/resources/assets/lotr/item/banner/banner_green.png create mode 100644 src/main/resources/assets/lotr/item/banner/banner_limwaith.png create mode 100644 src/main/resources/assets/lotr/item/banner/banner_red.png create mode 100644 src/main/resources/assets/lotr/item/verticalweaponRack.png create mode 100644 src/main/resources/assets/lotr/textures/items/banner_limwaith.png create mode 100644 src/main/resources/assets/lotr/textures/items/large/spearUnnamed.png create mode 100644 src/main/resources/assets/lotr/textures/items/large/spearUnnamed.png.mcmeta create mode 100644 src/main/resources/assets/lotr/textures/items/spearUnnamed.png diff --git a/.gradle/8.2.1/checksums/checksums.lock b/.gradle/8.2.1/checksums/checksums.lock index 975eff9171fb5a360e44afdfa16554f82ad38bc7..62b96453b767b08b5d9eb4d956dcee5371ac552d 100644 GIT binary patch literal 17 VcmZQRdH MIXIN + MCP 1 diff --git a/gradle.properties b/gradle.properties index 0c79463..e846d4a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ modName = CinderLoE -modVersion = 1.2.3 +modVersion = 1.2.4 # This is a case-sensitive string to identify your mod. Convention is to use lower case. modId = cinder_loe diff --git a/src/main/java/com/zivilon/cinder_loe/CinderLoE.java b/src/main/java/com/zivilon/cinder_loe/CinderLoE.java index a1e0f4c..420c611 100644 --- a/src/main/java/com/zivilon/cinder_loe/CinderLoE.java +++ b/src/main/java/com/zivilon/cinder_loe/CinderLoE.java @@ -8,13 +8,16 @@ import com.zivilon.cinder_loe.client.render.corrupt.*; import com.zivilon.cinder_loe.command.CommandCinderCharacter; import com.zivilon.cinder_loe.entity.*; import com.zivilon.cinder_loe.entity.corrupt.*; +import com.zivilon.cinder_loe.entity.npc.*; +import com.zivilon.cinder_loe.entity.trader.BladorthinSmith; +import com.zivilon.cinder_loe.entity.trader.LimwaithFishmonger; +import com.zivilon.cinder_loe.entity.trader.LimwaithShaman; +import com.zivilon.cinder_loe.entity.trader.RedDwarfSmith; import com.zivilon.cinder_loe.items.*; import com.zivilon.cinder_loe.tileentity.*; import com.zivilon.cinder_loe.util.Utilities; -import com.zivilon.cinder_loe.ItemRegistration; import com.zivilon.cindercore.CinderCore; import lotr.common.item.*; -import net.minecraft.item.ItemSeedFood; import net.minecraft.potion.Potion; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -77,11 +80,11 @@ import net.minecraftforge.client.ClientCommandHandler; @Mod( modid = "cinder_loe", - version = "1.2.3", + version = "1.2.4", name = "CinderLoE", dependencies = "required-after:spongemixins@[1.1.0,);required-after:lotr", acceptedMinecraftVersions = "[1.7.10]", - acceptableRemoteVersions = "[1.2.3]") + acceptableRemoteVersions = "[1.2.4]") public class CinderLoE { @Instance("cinder_loe") @@ -91,8 +94,6 @@ public class CinderLoE { // LOTR Materials public static LOTRMaterial MATERIAL_RED_DWARF; - public static LOTRMaterial WIZARD; - public static LOTRMaterial MATERIAL_LIMWAITH_BONE; public static LOTRMaterial MATERIAL_BONEMOLD; public static LOTRMaterial MATERIAL_LIMWAITH_WOOD; public static LOTRMaterial EVENT; @@ -123,6 +124,7 @@ public class CinderLoE { public static Block bronzeChain; public static Block plaster; public static Block voidblock; + // public static Block verticalWeaponRack; //Food Crop blocks public static Block onionCrop; @@ -139,6 +141,7 @@ public class CinderLoE { public static Item frostblade; public static Item daggervoid; public static Item spearsolidgold; + public static Item spearUnnamed; public static Item whip; public static Item swordAsh; public static Item staffAsh; @@ -302,13 +305,24 @@ public class CinderLoE { event.registerServerCommand(new CommandCinderCharacter()); } - public void registerEntities() { // Last ID added: 41 + public void registerEntities() { // Last ID added: 43 GameRegistry.registerTileEntity(TileEntityMistBlock.class, "TileEntityMistBlock"); int entityID = 7320; // Always increment entityID by 1 over the last entity to ensure unique IDs // EntityRegistry.registerModEntity(HaradLevy.class, "HaradLevy", (entityID + 36), this, 64, 1, true); // EntityRegistry.registerModEntity(DwarfLevy.class, "DwarfLevy", (entityID + 37), this, 64, 1, true); + // Traders + EntityRegistry.registerModEntity(RedDwarfSmith.class, "RedDwarfSmith", (entityID + 29), this, 64, 1, true); + EntityRegistry.registerModEntity(LimwaithFishmonger.class, "LimwaithFishmonger", (entityID + 33), this, 64, 1, true); + EntityRegistry.registerModEntity(LimwaithShaman.class, "LimwaithShaman", (entityID + 34), this, 64, 1, true); + EntityRegistry.registerModEntity(BladorthinSmith.class, "BladorthinSmith", (entityID + 43), this, 64, 1, true); + + + // Others + + EntityRegistry.registerModEntity(DarkSpider.class, "DarkSpider", (entityID + 42), this, 64, 1, true); + EntityRegistry.registerModEntity(CorruptDwarf.class, "CorruptDwarf", (entityID + 36), this, 64, 1, true); EntityRegistry.registerModEntity(CorruptElf.class, "CorruptElf", (entityID + 37), this, 64, 1, true); EntityRegistry.registerModEntity(CorruptEnt.class, "CorruptEnt", (entityID + 38), this, 64, 1, true); @@ -324,7 +338,6 @@ public class CinderLoE { EntityRegistry.registerModEntity(RedDwarfArbalest.class, "RedDwarfArbalest", (entityID + 3), this, 64, 1, true); EntityRegistry.registerModEntity(RedDwarfBannerBearer.class, "RedDwarfBannerBearer", (entityID + 4), this, 64, 1, true); EntityRegistry.registerModEntity(RedDwarfCommander.class, "RedDwarfCommander", (entityID + 5), this, 64, 1, true); - EntityRegistry.registerModEntity(RedDwarfSmith.class, "RedDwarfSmith", (entityID + 29), this, 64, 1, true); EntityRegistry.registerModEntity(FangornBear.class, "FangornBear", (entityID + 6), this, 64, 1, true); EntityRegistry.registerModEntity(FangornWildBoar.class, "FangornWildBoar", (entityID + 7), this, 64, 1, true); @@ -338,8 +351,6 @@ public class CinderLoE { EntityRegistry.registerModEntity(LimwaithBoneWarrior.class, "LimwaithBoneWarrior", (entityID + 32), this, 64, 1, true); EntityRegistry.registerModEntity(LimwaithBlowgunner.class, "LimwaithBlowgunner", (entityID + 12), this, 64, 1, true); EntityRegistry.registerModEntity(LimwaithBannerBearer.class, "LimwaithBannerBearer", (entityID + 13), this, 64, 1, true); - EntityRegistry.registerModEntity(LimwaithFishmonger.class, "LimwaithFishmonger", (entityID + 33), this, 64, 1, true); - EntityRegistry.registerModEntity(LimwaithShaman.class, "LimwaithShaman", (entityID + 34), this, 64, 1, true); EntityRegistry.registerModEntity(LimwaithChieftain.class, "LimwaithChieftain", (entityID + 14), this, 64, 1, true); EntityRegistry.registerModEntity(Wraith.class, "Wraith", (entityID + 15), this, 64, 1, true); @@ -402,6 +413,10 @@ public class CinderLoE { // Unique dwarvenBrickRuned = (new RunedDwarvenBrick()); GameRegistry.registerBlock(dwarvenBrickRuned, "dwarvenBrickRuned"); + // verticalWeaponRack = new VerticalWeaponRack(); + // GameRegistry.registerTileEntity(LOTRTileEntityWeaponRack.class, "verticalWeaponRack"); + // GameRegistry.registerBlock(verticalWeaponRack, "verticalWeaponRack"); + // Barrel fishBarrel = (new FishBarrel()); @@ -511,7 +526,7 @@ public class CinderLoE { * Item Registation, add up the "last ID added" upon adding a new item * Weapons will need to be linked */ - // Last ID added: 96 + // Last ID added: 97 // ==Food Items== ItemRegistration.registerItem(onion, "onion", 89); @@ -582,6 +597,7 @@ public class CinderLoE { frostblade = (new LOTRItemSword(EVENT)).setUnlocalizedName("lotr:frostblade").setTextureName("lotr:frostblade"); daggervoid = (new VoidDagger(EVENT)).addWeaponDamage(5.0F).setUnlocalizedName("lotr:daggerVoid").setTextureName("lotr:daggerVoid").setCreativeTab(null); spearsolidgold = (new LOTRItemSpear(EVENT)).setUnlocalizedName("lotr:spearsolidgold").setTextureName("lotr:spearsolidgold").setCreativeTab(null); + spearUnnamed = (new UnnamedSpear(EVENT)).setUnlocalizedName("lotr:spearUnnamed").setTextureName("lotr:spearUnnamed").setCreativeTab(null); whip = (new Whip()).setUnlocalizedName("lotr:whip").setTextureName("lotr:whip"); @@ -589,10 +605,12 @@ public class CinderLoE { ItemRegistration.registerItem(frostblade, "frostblade", 30); ItemRegistration.registerItem(daggervoid, "daggerVoid", 96); ItemRegistration.registerItem(spearsolidgold, "spearsolidgold", 31); + ItemRegistration.registerItem(spearUnnamed, "spearUnnamed", 97); ItemRegistration.registerItem(whip, "whip", 32); linkLOTRWeapon(frostblade, "frostblade"); linkLOTRWeapon(daggervoid, "daggerVoid"); linkLOTRWeapon(spearsolidgold, "spearsolidgold"); + linkLOTRWeapon(spearUnnamed, "spearUnnamed"); linkLOTRWeapon(whip, "whip"); //ASH @@ -682,10 +700,9 @@ public class CinderLoE { bonemold = new Item().setUnlocalizedName("lotr:bonemold").setTextureName("lotr:bonemold").setCreativeTab((CreativeTabs) materials); ItemRegistration.registerItem(bonemold, "bonemold", 83); - MATERIAL_LIMWAITH_BONE = getLOTRMaterialByName("LIMWAITH_BONE"); MATERIAL_LIMWAITH_WOOD = getLOTRMaterialByName("LIMWAITH_WOOD"); MATERIAL_BONEMOLD = getLOTRMaterialByName("BONEMOLD"); - if (MATERIAL_LIMWAITH_WOOD != null && MATERIAL_LIMWAITH_BONE != null) { + if (MATERIAL_LIMWAITH_WOOD != null && MATERIAL_BONEMOLD != null) { helmetLimwaith = (new LOTRItemArmor(MATERIAL_LIMWAITH_WOOD, 0)).setUnlocalizedName("lotr:helmetLimwaith").setTextureName("lotr:helmetLimwaith"); bodyLimwaith = (new LOTRItemArmor(MATERIAL_LIMWAITH_WOOD, 1)).setUnlocalizedName("lotr:bodyLimwaith").setTextureName("lotr:bodyLimwaith"); legsLimwaith = (new LOTRItemArmor(MATERIAL_LIMWAITH_WOOD, 2)).setUnlocalizedName("lotr:legsLimwaith").setTextureName("lotr:legsLimwaith"); @@ -696,12 +713,12 @@ public class CinderLoE { legsboneLimwaith = (new LOTRItemArmor(MATERIAL_BONEMOLD, 2)).setUnlocalizedName("lotr:legsboneLimwaith").setTextureName("lotr:legsboneLimwaith"); bootsboneLimwaith = (new LOTRItemArmor(MATERIAL_BONEMOLD, 3)).setUnlocalizedName("lotr:bootsboneLimwaith").setTextureName("lotr:bootsboneLimwaith"); - spearLimwaith = (new LOTRItemSpear(MATERIAL_LIMWAITH_BONE)).setUnlocalizedName("lotr:spearLimwaith").setTextureName("lotr:spearLimwaith"); - truncheonLimwaith = (new LOTRItemSword(MATERIAL_LIMWAITH_BONE)).setUnlocalizedName("lotr:truncheonLimwaith").setTextureName("lotr:truncheonLimwaith"); - battleaxeLimwaith = (new LOTRItemBattleaxe(MATERIAL_LIMWAITH_BONE)).setUnlocalizedName("lotr:battleaxeLimwaith").setTextureName("lotr:battleaxeLimwaith"); - tridentLimwaith = (new LOTRItemTrident(MATERIAL_LIMWAITH_BONE)).setUnlocalizedName("lotr:tridentLimwaith").setTextureName("lotr:tridentLimwaith"); - daggerLimwaith = (new LOTRItemDagger(MATERIAL_LIMWAITH_BONE)).setUnlocalizedName("lotr:daggerLimwaith").setTextureName("lotr:daggerLimwaith"); - daggerLimwaithPoisoned = (new LOTRItemDagger(MATERIAL_LIMWAITH_BONE, LOTRItemDagger.DaggerEffect.POISON)).setUnlocalizedName("lotr:daggerLimwaithPoisoned").setTextureName("lotr:daggerLimwaithPoisoned"); + spearLimwaith = (new LOTRItemSpear(MATERIAL_BONEMOLD)).setUnlocalizedName("lotr:spearLimwaith").setTextureName("lotr:spearLimwaith"); + truncheonLimwaith = (new LOTRItemSword(MATERIAL_BONEMOLD)).setUnlocalizedName("lotr:truncheonLimwaith").setTextureName("lotr:truncheonLimwaith"); + battleaxeLimwaith = (new LOTRItemBattleaxe(MATERIAL_BONEMOLD)).setUnlocalizedName("lotr:battleaxeLimwaith").setTextureName("lotr:battleaxeLimwaith"); + tridentLimwaith = (new LOTRItemTrident(MATERIAL_BONEMOLD)).setUnlocalizedName("lotr:tridentLimwaith").setTextureName("lotr:tridentLimwaith"); + daggerLimwaith = (new LOTRItemDagger(MATERIAL_BONEMOLD)).setUnlocalizedName("lotr:daggerLimwaith").setTextureName("lotr:daggerLimwaith"); + daggerLimwaithPoisoned = (new LOTRItemDagger(MATERIAL_BONEMOLD, LOTRItemDagger.DaggerEffect.POISON)).setUnlocalizedName("lotr:daggerLimwaithPoisoned").setTextureName("lotr:daggerLimwaithPoisoned"); blowgunLimwaith = (new LOTRItemBlowgun(LOTRMaterial.TAUREDAIN)).setUnlocalizedName("lotr:blowgunLimwaith").setTextureName("lotr:blowgunLimwaith"); ItemRegistration.registerItem(helmetLimwaith, "helmetLimwaith", 47); @@ -736,7 +753,7 @@ public class CinderLoE { MATERIAL_BREE = getLOTRMaterialByName("BREE"); if (MATERIAL_BREE != null) { helmetBreeKettle = (new LOTRItemArmor(MATERIAL_BREE, 0, "helmet")).setUnlocalizedName("lotr:helmetBreeKettle").setTextureName("lotr:breekettlehelmet"); - helmetBree = (new LOTRItemArmor(MATERIAL_BREE, 0, "helmet")).setUnlocalizedName("lotr:helmetBree").setTextureName("lotr:helmetBree"); + helmetBree = (new LOTRItemArmor(MATERIAL_BREE, 0)).setUnlocalizedName("lotr:helmetBree").setTextureName("lotr:helmetBree"); bodyBree = (new LOTRItemArmor(MATERIAL_BREE, 1)).setUnlocalizedName("lotr:bodyBree").setTextureName("lotr:bodyBree"); legsBree = (new LOTRItemArmor(MATERIAL_BREE, 2)).setUnlocalizedName("lotr:legsBree").setTextureName("lotr:legsBree"); bootsBree = (new LOTRItemArmor(MATERIAL_BREE, 3)).setUnlocalizedName("lotr:bootsBree").setTextureName("lotr:bootsBree"); @@ -798,6 +815,10 @@ public class CinderLoE { // RenderingRegistry.registerEntityRenderingHandler(HaradLevy.class, new LOTRRenderNearHaradrim()); // RenderingRegistry.registerEntityRenderingHandler(DwarfLevy.class, new LOTRRenderDwarf()); + RenderingRegistry.registerEntityRenderingHandler(BladorthinSmith.class, new LOTRRenderDorwinionElfVintner()); + + RenderingRegistry.registerEntityRenderingHandler(DarkSpider.class, new RenderDarkSpider()); + RenderingRegistry.registerEntityRenderingHandler(CorruptDwarf.class, new RenderCorruptDwarf()); RenderingRegistry.registerEntityRenderingHandler(CorruptElf.class, new RenderCorruptElf()); RenderingRegistry.registerEntityRenderingHandler(CorruptEnt.class, new RenderCorruptEnt()); @@ -976,6 +997,7 @@ public class CinderLoE { CinderCore.registerItemFallback(Block.getIdFromBlock(reeflessCoral), Block.getIdFromBlock(LOTRMod.coralReef), "cinder_loe", "1.2"); CinderCore.registerItemFallback(Block.getIdFromBlock(plaster), Block.getIdFromBlock(Blocks.brick_block), "cinder_loe", "1.2.1"); CinderCore.registerItemFallback(Block.getIdFromBlock(voidblock), Block.getIdFromBlock(Blocks.coal_block), "cinder_loe", "1.2.1"); + // CinderCore.registerItemFallback(Block.getIdFromBlock(verticalWeaponRack), Block.getIdFromBlock(Blocks.fence), "cinder_loe", "1.2.4"); // == Red Dwarf Items== CinderCore.registerItemFallback(Item.getIdFromItem(redDwarfSteel), Item.getIdFromItem(LOTRMod.dwarfSteel), "cinder_loe", "1.0"); CinderCore.registerItemFallback(Item.getIdFromItem(spearRedDwarf), Item.getIdFromItem(LOTRMod.spearDwarven), "cinder_loe", "1.0"); @@ -1002,6 +1024,7 @@ public class CinderLoE { CinderCore.registerItemFallback(Item.getIdFromItem(frostblade), Item.getIdFromItem(LOTRMod.swordMithril), "cinder_loe", "1.0"); CinderCore.registerItemFallback(Item.getIdFromItem(daggervoid), Item.getIdFromItem(LOTRMod.daggerMithril), "cinder_loe", "1.2.3"); CinderCore.registerItemFallback(Item.getIdFromItem(spearsolidgold), Item.getIdFromItem(LOTRMod.spearMithril), "cinder_loe", "1.1"); + CinderCore.registerItemFallback(Item.getIdFromItem(spearUnnamed), Item.getIdFromItem(LOTRMod.spearMithril), "cinder_loe", "1.2.4"); CinderCore.registerItemFallback(Item.getIdFromItem(whip), Item.getIdFromItem(LOTRMod.balrogWhip), "cinder_loe", "1.2"); // == Ash Forged == CinderCore.registerItemFallback(Item.getIdFromItem(ingotAsh), Item.getIdFromItem(LOTRMod.galvorn), "cinder_loe", "1.2"); @@ -1080,6 +1103,9 @@ public class CinderLoE { // CinderCore.registerEntityFallback(HaradLevy.class, LOTREntityNearHaradrim.class, "cinder_loe", "1.2.3"); // CinderCore.registerEntityFallback(DwarfLevy.class, LOTREntityDwarf.class, "cinder_loe", "1.2.3"); + CinderCore.registerEntityFallback(DarkSpider.class, LOTREntityUtumnoIceSpider.class, "cinder_loe", "1.2.4"); + + CinderCore.registerEntityFallback(BladorthinSmith.class, LOTREntityDorwinionElf.class, "cinder_loe", "1.2.4"); CinderCore.registerEntityFallback(CorruptDwarf.class, LOTREntityDwarf.class, "cinder_loe", "1.2.3"); CinderCore.registerEntityFallback(CorruptElf.class, LOTREntityTormentedElf.class, "cinder_loe", "1.2.3"); @@ -1129,6 +1155,10 @@ public class CinderLoE { CinderCore.registerEntityFallback(BreeOutrider.class, LOTREntityBreeMan.class, "cinder_loe", "1.1"); CinderCore.registerCustomFallback(42, 16, "banner", "cinder_loe", "1.2"); + CinderCore.registerCustomFallback(43, 16, "banner", "cinder_loe", "1.2.4"); + CinderCore.registerCustomFallback(44, 16, "banner", "cinder_loe", "1.2.4"); + CinderCore.registerCustomFallback(45, 16, "banner", "cinder_loe", "1.2.4"); + CinderCore.registerCustomFallback(46, 16, "banner", "cinder_loe", "1.2.4"); } // Create unit trade entries here, out of the way of important code diff --git a/src/main/java/com/zivilon/cinder_loe/Materials.java b/src/main/java/com/zivilon/cinder_loe/Materials.java index 21ddfda..0a4b80b 100644 --- a/src/main/java/com/zivilon/cinder_loe/Materials.java +++ b/src/main/java/com/zivilon/cinder_loe/Materials.java @@ -14,9 +14,8 @@ public class Materials { public static void registerMaterials() { modifyMaterial("RED_DWARF", 700, 3.0F, 0.7F, 3, 7.0F, 10, CinderLoE.redDwarfSteel); modifyMaterial("WIZARD", 1000, 3.0F, 0.7F, 3, 7.0F, 10, null); - modifyMaterial("LIMWAITH_BONE", 250, 2.0F, 0.7F, 2, 6.0F, 10, null); modifyMaterial("BONEMOLD", 350, 2.0F, 0.6F, 2, 6.0F, 10, CinderLoE.bonemold); - modifyMaterial("LIMWAITH_WOOD", 230, 1.5F, 0.5F, 2, 5.0F, 10, null); + modifyMaterial("LIMWAITH_WOOD", 230, 1.5F, 0.5F, 2, 5.0F, 10, Item.getItemFromBlock(LOTRMod.driedReeds)); modifyMaterial("EVENT", 2400, 5.0F, 0.0F, 0, 9.0F, 10, null); modifyMaterial("BREE", 350, 2.5F, 0.6F, 2, 6.0F, 10, Items.iron_ingot); modifyMaterial("BATTLENUN", 300, 3F, 0.6F, 2, 6.0F, 10, Items.iron_ingot); diff --git a/src/main/java/com/zivilon/cinder_loe/blocks/VerticalWeaponRack.java b/src/main/java/com/zivilon/cinder_loe/blocks/VerticalWeaponRack.java new file mode 100644 index 0000000..3cde8ed --- /dev/null +++ b/src/main/java/com/zivilon/cinder_loe/blocks/VerticalWeaponRack.java @@ -0,0 +1,24 @@ +package com.zivilon.cinder_loe.blocks; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import lotr.common.block.LOTRBlockWeaponRack; +import lotr.common.tileentity.LOTRTileEntityWeaponRack; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.init.Blocks; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +public class VerticalWeaponRack extends LOTRBlockWeaponRack { + public VerticalWeaponRack() { + super(); + this.setHardness(0.5f); + this.setResistance(1.0f); + this.setStepSound(Block.soundTypeWood); + } +} diff --git a/src/main/java/com/zivilon/cinder_loe/character/CharacterEventListener.java b/src/main/java/com/zivilon/cinder_loe/character/CharacterEventListener.java index 9a881c7..b7c00d0 100644 --- a/src/main/java/com/zivilon/cinder_loe/character/CharacterEventListener.java +++ b/src/main/java/com/zivilon/cinder_loe/character/CharacterEventListener.java @@ -2,12 +2,9 @@ package com.zivilon.cinder_loe.character; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.eventhandler.EventPriority; -import cpw.mods.fml.common.FMLCommonHandler; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingHurtEvent; -import net.minecraft.command.IEntitySelector; -import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.passive.EntityAnimal; @@ -19,8 +16,7 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; -import com.zivilon.cinder_loe.character.CharacterRoleAPI; -import com.zivilon.cinder_loe.entity.FangornAnimal; +import com.zivilon.cinder_loe.entity.npc.FangornAnimal; public class CharacterEventListener { diff --git a/src/main/java/com/zivilon/cinder_loe/client/model/ModelBreeKettleHelmet.java b/src/main/java/com/zivilon/cinder_loe/client/model/ModelBreeKettleHelmet.java index baddf15..b7835de 100644 --- a/src/main/java/com/zivilon/cinder_loe/client/model/ModelBreeKettleHelmet.java +++ b/src/main/java/com/zivilon/cinder_loe/client/model/ModelBreeKettleHelmet.java @@ -1,32 +1,46 @@ package com.zivilon.cinder_loe.client.model; -import net.minecraft.client.model.ModelBiped; +import lotr.client.model.LOTRModelBiped; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; -/** - * Created using Tabula 4.1.1 - */ -public class ModelBreeKettleHelmet extends ModelBiped { +public class ModelBreeKettleHelmet extends LOTRModelBiped { public ModelRenderer shape9; public ModelBreeKettleHelmet(float f) { - super(f); + super(f); // Call the parent constructor to initialize the biped parts + this.textureWidth = 64; this.textureHeight = 32; - this.bipedHead = new ModelRenderer(this, 0, 0); - this.bipedHead.setRotationPoint(0.0F, 0.0F, 0.0F); - this.bipedHead.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, 1.0F); + + // Define the shape9 part and attach it to bipedHead this.shape9 = new ModelRenderer(this, 0, 16); this.shape9.setRotationPoint(0.0F, 0.0F, 0.0F); - this.shape9.addBox(-7.0F, -4.75F, -7.0F, 14, 0, 14, 1.75F); - this.bipedHead.addChild(shape9); + //shape9.addBox(0F, -13F, -4F, 0, 4, 10); + this.shape9.addBox(-7.0F, -6.0F, -7.0F, 14, 0, 14, 0.0F); + + // Clear any previously defined parts for the bipedHead + this.bipedHead.cubeList.clear(); + + // Define the main helmet part and attach shape9 to it + this.bipedHead = new ModelRenderer(this, 0, 0); + this.bipedHead.setRotationPoint(0.0F, 0.0F, 0.0F); + // this.bipedHead.addBox(-4.5F, -9.0F, -4.5F, 9, 9, 9, 0.5F); // Adjusted position and scale + this.bipedHead.addBox(-4F, -8F, -4F, 8, 8, 8, f); // Adjusted position and scale (f) + this.bipedHead.addChild(this.shape9); + + // Clear unnecessary parts + this.bipedHeadwear.cubeList.clear(); + this.bipedBody.cubeList.clear(); + this.bipedRightArm.cubeList.clear(); + this.bipedLeftArm.cubeList.clear(); + this.bipedRightLeg.cubeList.clear(); + this.bipedLeftLeg.cubeList.clear(); } @Override public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { this.bipedHead.render(f5); -// this.shape9.render(f5); } /** diff --git a/src/main/java/com/zivilon/cinder_loe/client/model/ModelFangornAuroch.java b/src/main/java/com/zivilon/cinder_loe/client/model/ModelFangornAuroch.java index 7fdd37f..2921aa7 100644 --- a/src/main/java/com/zivilon/cinder_loe/client/model/ModelFangornAuroch.java +++ b/src/main/java/com/zivilon/cinder_loe/client/model/ModelFangornAuroch.java @@ -4,9 +4,6 @@ import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; import net.minecraft.util.MathHelper; -import org.lwjgl.opengl.GL11; - -import com.zivilon.cinder_loe.entity.FangornAuroch; public class ModelFangornAuroch extends ModelBase { public ModelRenderer body; diff --git a/src/main/java/com/zivilon/cinder_loe/client/model/ModelFangornElk.java b/src/main/java/com/zivilon/cinder_loe/client/model/ModelFangornElk.java index 50e1a37..80829f9 100644 --- a/src/main/java/com/zivilon/cinder_loe/client/model/ModelFangornElk.java +++ b/src/main/java/com/zivilon/cinder_loe/client/model/ModelFangornElk.java @@ -1,6 +1,5 @@ package com.zivilon.cinder_loe.client.model; -import lotr.client.LOTRTickHandlerClient; import lotr.common.LOTRMod; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; @@ -8,7 +7,7 @@ import net.minecraft.entity.Entity; import net.minecraft.util.MathHelper; import org.lwjgl.opengl.GL11; -import com.zivilon.cinder_loe.entity.FangornElk; +import com.zivilon.cinder_loe.entity.npc.FangornElk; public class ModelFangornElk extends ModelBase { private ModelRenderer body; diff --git a/src/main/java/com/zivilon/cinder_loe/client/model/ModelFangornWolf.java b/src/main/java/com/zivilon/cinder_loe/client/model/ModelFangornWolf.java index c08dc8b..6560992 100644 --- a/src/main/java/com/zivilon/cinder_loe/client/model/ModelFangornWolf.java +++ b/src/main/java/com/zivilon/cinder_loe/client/model/ModelFangornWolf.java @@ -4,12 +4,10 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.passive.EntityWolf; import net.minecraft.util.MathHelper; -import org.lwjgl.opengl.GL11; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; -import com.zivilon.cinder_loe.entity.FangornWolf; +import com.zivilon.cinder_loe.entity.npc.FangornWolf; @SideOnly(Side.CLIENT) public class ModelFangornWolf extends ModelBase { diff --git a/src/main/java/com/zivilon/cinder_loe/client/model/Modelverticalweaponrack.java b/src/main/java/com/zivilon/cinder_loe/client/model/Modelverticalweaponrack.java new file mode 100644 index 0000000..eaf1b54 --- /dev/null +++ b/src/main/java/com/zivilon/cinder_loe/client/model/Modelverticalweaponrack.java @@ -0,0 +1,92 @@ +package com.zivilon.cinder_loe.client.model; + + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +/** + * Vertical Weapon rack - Cleric_red + * Created using Tabula 4.1.1 + */ +public class Modelverticalweaponrack extends ModelBase { + public ModelRenderer Post; + public ModelRenderer Plate; + public ModelRenderer Post_1; + public ModelRenderer Base; + public ModelRenderer HolderBottom; + public ModelRenderer HolderBottom_1; + public ModelRenderer HolderBottom_2; + public ModelRenderer HolderTop; + public ModelRenderer HolderTop_1; + public ModelRenderer HolderTop_2; + public boolean onWall = true; + + public Modelverticalweaponrack() { + this.textureWidth = 64; + this.textureHeight = 32; + this.HolderBottom_2 = new ModelRenderer(this, 0, 17); + this.HolderBottom_2.setRotationPoint(-1.0F, 20.0F, 2.0F); + this.HolderBottom_2.addBox(0.0F, 0.0F, 0.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(HolderBottom_2, 0.0F, 1.5707963267948966F, 0.0F); + this.Base = new ModelRenderer(this, 0, 0); + this.Base.setRotationPoint(-8.0F, 10.0F, 2.5F); + this.Base.addBox(0.0F, 0.0F, 0.0F, 5, 14, 2, 0.0F); + this.setRotateAngle(Base, 0.0F, 1.5707963267948966F, 0.0F); + this.HolderTop_1 = new ModelRenderer(this, 0, 17); + this.HolderTop_1.setRotationPoint(-1.0F, 12.0F, -1.0F); + this.HolderTop_1.addBox(0.0F, 0.0F, 0.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(HolderTop_1, 0.0F, 1.5707963267948966F, 0.0F); + this.HolderTop = new ModelRenderer(this, 5, 17); + this.HolderTop.setRotationPoint(-1.0F, 12.0F, 2.0F); + this.HolderTop.addBox(0.0F, 0.0F, 0.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(HolderTop, 0.0F, 1.5707963267948966F, 0.0F); + this.Post_1 = new ModelRenderer(this, 14, 0); + this.Post_1.setRotationPoint(-6.0F, 20.0F, 1.0F); + this.Post_1.addBox(0.0F, 0.0F, 0.0F, 2, 2, 3, 0.0F); + this.setRotateAngle(Post_1, 0.0F, 1.5707963267948966F, 0.0F); + this.Plate = new ModelRenderer(this, 24, 0); + this.Plate.setRotationPoint(-3.0F, 10.0F, 1.5F); + this.Plate.addBox(0.0F, 0.0F, 0.0F, 3, 14, 1, 0.0F); + this.setRotateAngle(Plate, 0.0F, 1.5707963267948966F, 0.0F); + this.HolderTop_2 = new ModelRenderer(this, 0, 17); + this.HolderTop_2.setRotationPoint(-2.0F, 12.0F, 2.0F); + this.HolderTop_2.addBox(0.0F, 0.0F, 0.0F, 4, 2, 1, 0.0F); + this.setRotateAngle(HolderTop_2, 0.0F, 1.5707963267948966F, 0.0F); + this.HolderBottom = new ModelRenderer(this, 5, 17); + this.HolderBottom.setRotationPoint(-1.0F, 20.0F, -1.0F); + this.HolderBottom.addBox(0.0F, 0.0F, 0.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(HolderBottom, 0.0F, 1.5707963267948966F, 0.0F); + this.HolderBottom_1 = new ModelRenderer(this, 0, 17); + this.HolderBottom_1.setRotationPoint(-2.0F, 20.0F, 2.0F); + this.HolderBottom_1.addBox(0.0F, 0.0F, 0.0F, 4, 2, 1, 0.0F); + this.setRotateAngle(HolderBottom_1, 0.0F, 1.5707963267948966F, 0.0F); + this.Post = new ModelRenderer(this, 14, 0); + this.Post.setRotationPoint(-6.0F, 12.0F, 1.0F); + this.Post.addBox(0.0F, 0.0F, 0.0F, 2, 2, 3, 0.0F); + this.setRotateAngle(Post, 0.0F, 1.5707963267948966F, 0.0F); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + this.HolderBottom_2.render(f5); + this.Base.render(f5); + this.HolderTop_1.render(f5); + this.HolderTop.render(f5); + this.Post_1.render(f5); + this.Plate.render(f5); + this.HolderTop_2.render(f5); + this.HolderBottom.render(f5); + this.HolderBottom_1.render(f5); + this.Post.render(f5); + } + + /** + * This is a helper function from Tabula to set the rotation of model parts + */ + public void setRotateAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } +} diff --git a/src/main/java/com/zivilon/cinder_loe/client/render/RenderBattleNun.java b/src/main/java/com/zivilon/cinder_loe/client/render/RenderBattleNun.java index d4097a8..2be6d72 100644 --- a/src/main/java/com/zivilon/cinder_loe/client/render/RenderBattleNun.java +++ b/src/main/java/com/zivilon/cinder_loe/client/render/RenderBattleNun.java @@ -1,6 +1,6 @@ package com.zivilon.cinder_loe.client.render; -import com.zivilon.cinder_loe.entity.BattleNun; +import com.zivilon.cinder_loe.entity.npc.BattleNun; import lotr.client.model.LOTRModelHuman; import lotr.client.render.entity.LOTRRenderBiped; import lotr.client.render.entity.LOTRRandomSkins; @@ -12,8 +12,6 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.util.ResourceLocation; -import com.zivilon.cinder_loe.entity.Limwaith; - public class RenderBattleNun extends LOTRRenderBiped { public static LOTRRandomSkins skinsFemale; diff --git a/src/main/java/com/zivilon/cinder_loe/client/render/RenderDarkSpider.java b/src/main/java/com/zivilon/cinder_loe/client/render/RenderDarkSpider.java new file mode 100644 index 0000000..0dbe36d --- /dev/null +++ b/src/main/java/com/zivilon/cinder_loe/client/render/RenderDarkSpider.java @@ -0,0 +1,14 @@ +package com.zivilon.cinder_loe.client.render; + +import lotr.client.render.entity.LOTRRenderSpiderBase; +import lotr.client.render.entity.LOTRRenderUtumnoIceSpider; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderDarkSpider extends LOTRRenderUtumnoIceSpider { + private static ResourceLocation spiderSkin = new ResourceLocation("cinder_loe:mob/spider/spider_dark.png"); + + protected ResourceLocation getEntityTexture(Entity entity) { + return spiderSkin; + } +} \ No newline at end of file diff --git a/src/main/java/com/zivilon/cinder_loe/client/render/RenderFangornAuroch.java b/src/main/java/com/zivilon/cinder_loe/client/render/RenderFangornAuroch.java index ab03624..dc0b76b 100644 --- a/src/main/java/com/zivilon/cinder_loe/client/render/RenderFangornAuroch.java +++ b/src/main/java/com/zivilon/cinder_loe/client/render/RenderFangornAuroch.java @@ -8,7 +8,7 @@ import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; import com.zivilon.cinder_loe.client.model.ModelFangornAuroch; -import com.zivilon.cinder_loe.entity.FangornAuroch; +import com.zivilon.cinder_loe.entity.npc.FangornAuroch; public class RenderFangornAuroch extends RenderLiving { public static LOTRRandomSkins aurochsSkins; diff --git a/src/main/java/com/zivilon/cinder_loe/client/render/RenderFangornBear.java b/src/main/java/com/zivilon/cinder_loe/client/render/RenderFangornBear.java index 8876ae0..12d0daa 100644 --- a/src/main/java/com/zivilon/cinder_loe/client/render/RenderFangornBear.java +++ b/src/main/java/com/zivilon/cinder_loe/client/render/RenderFangornBear.java @@ -1,11 +1,10 @@ package com.zivilon.cinder_loe.client.render; -import com.zivilon.cinder_loe.entity.FangornBear; +import com.zivilon.cinder_loe.entity.npc.FangornBear; import java.util.HashMap; import java.util.Map; import lotr.client.model.LOTRModelBear; -import lotr.client.render.entity.LOTRRenderBear; import lotr.common.entity.animal.LOTREntityBear; import net.minecraft.client.model.ModelBase; import net.minecraft.client.renderer.entity.RenderLiving; diff --git a/src/main/java/com/zivilon/cinder_loe/client/render/RenderFangornElk.java b/src/main/java/com/zivilon/cinder_loe/client/render/RenderFangornElk.java index 16f3ced..f7d3824 100644 --- a/src/main/java/com/zivilon/cinder_loe/client/render/RenderFangornElk.java +++ b/src/main/java/com/zivilon/cinder_loe/client/render/RenderFangornElk.java @@ -2,16 +2,13 @@ package com.zivilon.cinder_loe.client.render; import lotr.common.entity.LOTRRandomSkinEntity; import lotr.client.render.entity.LOTRRandomSkins; -import lotr.common.entity.animal.LOTREntityElk; -import lotr.common.entity.npc.LOTRNPCMount; import net.minecraft.client.model.ModelBase; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.ResourceLocation; import com.zivilon.cinder_loe.client.model.ModelFangornElk; -import com.zivilon.cinder_loe.entity.FangornElk; +import com.zivilon.cinder_loe.entity.npc.FangornElk; public class RenderFangornElk extends RenderLiving { private static LOTRRandomSkins elkSkins; diff --git a/src/main/java/com/zivilon/cinder_loe/client/render/RenderFangornWolf.java b/src/main/java/com/zivilon/cinder_loe/client/render/RenderFangornWolf.java index 05153c4..454233e 100644 --- a/src/main/java/com/zivilon/cinder_loe/client/render/RenderFangornWolf.java +++ b/src/main/java/com/zivilon/cinder_loe/client/render/RenderFangornWolf.java @@ -1,15 +1,10 @@ package com.zivilon.cinder_loe.client.render; -import lotr.common.entity.npc.LOTRNPCMount; -import lotr.client.render.entity.LOTRRenderHorse; - import net.minecraft.client.model.ModelBase; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.ResourceLocation; -import com.zivilon.cinder_loe.entity.FangornWolf; import com.zivilon.cinder_loe.client.model.ModelFangornWolf; public class RenderFangornWolf extends RenderLiving { diff --git a/src/main/java/com/zivilon/cinder_loe/client/render/RenderLimwaith.java b/src/main/java/com/zivilon/cinder_loe/client/render/RenderLimwaith.java index 783c0e5..75d923b 100644 --- a/src/main/java/com/zivilon/cinder_loe/client/render/RenderLimwaith.java +++ b/src/main/java/com/zivilon/cinder_loe/client/render/RenderLimwaith.java @@ -4,7 +4,6 @@ import lotr.client.model.LOTRModelHuman; import lotr.client.render.entity.LOTRRenderBiped; import lotr.client.render.entity.LOTRRandomSkins; import lotr.common.entity.LOTRRandomSkinEntity; -import lotr.common.entity.npc.LOTREntityMoredain; import lotr.common.entity.npc.LOTREntityNPC; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelBiped; @@ -12,7 +11,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.util.ResourceLocation; -import com.zivilon.cinder_loe.entity.Limwaith; +import com.zivilon.cinder_loe.entity.npc.Limwaith; public class RenderLimwaith extends LOTRRenderBiped { public static LOTRRandomSkins skinsMale; diff --git a/src/main/java/com/zivilon/cinder_loe/client/render/RenderLimwaithShaman.java b/src/main/java/com/zivilon/cinder_loe/client/render/RenderLimwaithShaman.java index 8968d03..6efa0d2 100644 --- a/src/main/java/com/zivilon/cinder_loe/client/render/RenderLimwaithShaman.java +++ b/src/main/java/com/zivilon/cinder_loe/client/render/RenderLimwaithShaman.java @@ -1,16 +1,9 @@ package com.zivilon.cinder_loe.client.render; -import com.zivilon.cinder_loe.entity.Limwaith; -import lotr.client.model.LOTRModelHuman; +import com.zivilon.cinder_loe.entity.npc.Limwaith; import lotr.client.render.entity.LOTRRandomSkins; -import lotr.client.render.entity.LOTRRenderBiped; -import lotr.common.entity.LOTRRandomSkinEntity; -import lotr.common.entity.npc.LOTREntityNPC; import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelBiped; -import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; -import net.minecraft.util.ResourceLocation; public class RenderLimwaithShaman extends RenderLimwaith { private static LOTRRandomSkins outfits; diff --git a/src/main/java/com/zivilon/cinder_loe/client/render/block/Renderverticalweaponrack.java b/src/main/java/com/zivilon/cinder_loe/client/render/block/Renderverticalweaponrack.java new file mode 100644 index 0000000..dcbc34e --- /dev/null +++ b/src/main/java/com/zivilon/cinder_loe/client/render/block/Renderverticalweaponrack.java @@ -0,0 +1,144 @@ +package com.zivilon.cinder_loe.client.render.block; + +import com.zivilon.cinder_loe.client.model.Modelverticalweaponrack; +import com.zivilon.cinder_loe.tileentity.TileEntityMistBlock; +import lotr.client.model.LOTRModelWeaponRack; +import lotr.client.render.item.LOTRRenderBow; +import lotr.common.tileentity.LOTRTileEntityWeaponRack; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.IItemRenderer; +import org.lwjgl.opengl.GL11; + +public class Renderverticalweaponrack extends TileEntitySpecialRenderer { + private static ResourceLocation rackTexture = new ResourceLocation("lotr:item/verticalweaponRack.png"); + private static Modelverticalweaponrack rackModel = new Modelverticalweaponrack(); + public void renderTileEntityAt(TileEntity tileentity, double d, double d1, double d2, float f) { + LOTRTileEntityWeaponRack weaponRack = (LOTRTileEntityWeaponRack)tileentity; + GL11.glPushMatrix(); + GL11.glDisable((int)2884); + GL11.glEnable((int)32826); + GL11.glEnable((int)3008); + GL11.glTranslatef((float)((float)d + 0.5f), (float)((float)d1 + 1.5f), (float)((float)d2 + 0.5f)); + int meta = weaponRack.getBlockMetadata(); + int dir = meta & 3; + boolean wall = (meta & 4) != 0; + switch (dir) { + case 0: { + GL11.glRotatef((float)0.0f, (float)0.0f, (float)1.0f, (float)0.0f); + break; + } + case 1: { + GL11.glRotatef((float)270.0f, (float)0.0f, (float)1.0f, (float)0.0f); + break; + } + case 2: { + GL11.glRotatef((float)180.0f, (float)0.0f, (float)1.0f, (float)0.0f); + break; + } + case 3: { + GL11.glRotatef((float)90.0f, (float)0.0f, (float)1.0f, (float)0.0f); + } + } + if (wall) { + GL11.glTranslatef((float)0.0f, (float)0.375f, (float)-0.5f); + } + GL11.glScalef((float)-1.0f, (float)-1.0f, (float)1.0f); + float scale = 0.0625f; + this.bindTexture(rackTexture); + Renderverticalweaponrack.rackModel.onWall = wall; + rackModel.render(null, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, scale); + ItemStack weaponItem = weaponRack.getWeaponItem(); + if (weaponItem != null) { + float weaponScale = 0.625f; + GL11.glScalef((float)weaponScale, (float)weaponScale, (float)weaponScale); + GL11.glScalef((float)-1.0f, (float)1.0f, (float)1.0f); + GL11.glTranslatef((float)0.0f, (float)0.52f, (float)0.0f); + if (wall) { + GL11.glTranslatef((float)0.0f, (float)1.1f, (float)0.51f); + } + GL11.glRotatef((float)45.0f, (float)0.0f, (float)0.0f, (float)1.0f); + GL11.glTranslatef((float)0.9375f, (float)0.0625f, (float)0.0f); + GL11.glRotatef((float)-335.0f, (float)0.0f, (float)0.0f, (float)1.0f); + GL11.glRotatef((float)-50.0f, (float)0.0f, (float)1.0f, (float)0.0f); + GL11.glScalef((float)0.6666667f, (float)0.6666667f, (float)0.6666667f); + GL11.glTranslatef((float)0.0f, (float)0.3f, (float)0.0f); + RenderManager renderManager = RenderManager.instance; + int passes = 1; + if (weaponItem.getItem().requiresMultipleRenderPasses()) { + passes = weaponItem.getItem().getRenderPasses(weaponItem.getItemDamage()); + } + LOTRRenderBow.renderingWeaponRack = true; + for (int pass = 0; pass < passes; ++pass) { + int color = weaponItem.getItem().getColorFromItemStack(weaponItem, pass); + float r = (float)(color >> 16 & 0xFF) / 255.0f; + float g = (float)(color >> 8 & 0xFF) / 255.0f; + float b = (float)(color & 0xFF) / 255.0f; + GL11.glColor4f((float)r, (float)g, (float)b, (float)1.0f); + renderManager.itemRenderer.renderItem(weaponRack.getEntityForRender(), weaponItem, 0, IItemRenderer.ItemRenderType.EQUIPPED); + } + LOTRRenderBow.renderingWeaponRack = false; + } + GL11.glEnable((int)2884); + GL11.glDisable((int)32826); + GL11.glPopMatrix(); + this.renderWeaponName(weaponRack, d + 0.5, d1 + 0.75, d2 + 0.5); + } + + private void renderWeaponName(LOTRTileEntityWeaponRack rack, double d, double d1, double d2) { + MovingObjectPosition mop = Minecraft.getMinecraft().objectMouseOver; + if (mop != null && mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && mop.blockX == rack.xCoord && mop.blockY == rack.yCoord && mop.blockZ == rack.zCoord) { + ItemStack weaponItem = rack.getWeaponItem(); + if (Minecraft.isGuiEnabled() && weaponItem != null && weaponItem.hasDisplayName()) { + float f2; + RenderManager renderManager = RenderManager.instance; + FontRenderer fontRenderer = this.func_147498_b(); + float f = 1.6f; + float f1 = 0.016666668f * f; + double dSq = renderManager.livingPlayer.getDistanceSq((double)rack.xCoord + 0.5, (double)rack.yCoord + 0.5, (double)rack.zCoord); + if (dSq < (double)((f2 = 64.0f) * f2)) { + String name = weaponItem.getDisplayName(); + GL11.glPushMatrix(); + GL11.glTranslatef((float)((float)d), (float)((float)d1 + 0.5f), (float)((float)d2)); + GL11.glNormal3f((float)0.0f, (float)1.0f, (float)0.0f); + GL11.glRotatef((float)(-renderManager.playerViewY), (float)0.0f, (float)1.0f, (float)0.0f); + GL11.glRotatef((float)renderManager.playerViewX, (float)1.0f, (float)0.0f, (float)0.0f); + GL11.glScalef((float)(-f1), (float)(-f1), (float)f1); + GL11.glDisable((int)2896); + GL11.glDepthMask((boolean)false); + GL11.glDisable((int)2929); + GL11.glEnable((int)3042); + OpenGlHelper.glBlendFunc((int)770, (int)771, (int)1, (int)0); + Tessellator tessellator = Tessellator.instance; + int b0 = 0; + GL11.glDisable((int)3553); + tessellator.startDrawingQuads(); + int j = fontRenderer.getStringWidth(name) / 2; + tessellator.setColorRGBA_F(0.0f, 0.0f, 0.0f, 0.25f); + tessellator.addVertex((double)(-j - 1), (double)(-1 + b0), 0.0); + tessellator.addVertex((double)(-j - 1), (double)(8 + b0), 0.0); + tessellator.addVertex((double)(j + 1), (double)(8 + b0), 0.0); + tessellator.addVertex((double)(j + 1), (double)(-1 + b0), 0.0); + tessellator.draw(); + GL11.glEnable((int)3553); + fontRenderer.drawString(name, -fontRenderer.getStringWidth(name) / 2, b0, 0x20FFFFFF); + GL11.glEnable((int)2929); + GL11.glDepthMask((boolean)true); + fontRenderer.drawString(name, -fontRenderer.getStringWidth(name) / 2, b0, -1); + GL11.glEnable((int)2896); + GL11.glDisable((int)3042); + GL11.glColor4f((float)1.0f, (float)1.0f, (float)1.0f, (float)1.0f); + GL11.glPopMatrix(); + } + } + } + } +} diff --git a/src/main/java/com/zivilon/cinder_loe/coremod/LOTRBannerAdder.java b/src/main/java/com/zivilon/cinder_loe/coremod/LOTRBannerAdder.java index e158c8d..55d227f 100644 --- a/src/main/java/com/zivilon/cinder_loe/coremod/LOTRBannerAdder.java +++ b/src/main/java/com/zivilon/cinder_loe/coremod/LOTRBannerAdder.java @@ -26,6 +26,10 @@ public class LOTRBannerAdder implements IClassTransformer { custom_banners = new ArrayList<>(); // Arguments: enum name, texture name, ID, faction name register("RED_DWARF", "redDwarf", 42, "DURINS_FOLK"); + register("LIMWAITH", "limwaith", 43, "MORWAITH"); + register("RED", "red", 44, "GONDOR"); + register("BLUE", "blue", 45, "GONDOR"); + register("GREEN", "green", 46, "GONDOR"); // register("TEST", "test", 43, "GONDOR"); } diff --git a/src/main/java/com/zivilon/cinder_loe/coremod/LOTRWeaponLinker.java b/src/main/java/com/zivilon/cinder_loe/coremod/LOTRWeaponLinker.java index 4c95630..7df320c 100644 --- a/src/main/java/com/zivilon/cinder_loe/coremod/LOTRWeaponLinker.java +++ b/src/main/java/com/zivilon/cinder_loe/coremod/LOTRWeaponLinker.java @@ -22,7 +22,7 @@ public class LOTRWeaponLinker implements IClassTransformer { "spearRedDwarf", "crossbowRedDwarf", "swordRedDwarf", "battleaxeRedDwarf", "pikeRedDwarf", "daggerRedDwarf", "daggerRedDwarfPoisoned", "hammerRedDwarf", "radagastStaff", "alatarStaff", "pallandoStaff", "sarumanStaff", "spearLimwaith", "tridentLimwaith", "daggerLimwaith", "daggerLimwaithPoisoned", "truncheonLimwaith", "battleaxeLimwaith", "blowgunLimwaith", - "frostblade", "spearsolidgold", "whip", + "frostblade", "spearsolidgold", "whip", "spearUnnamed", "swordBree", "maceArnor", "daggerAsh","bowAsh","hammerAsh","pikeAsh","battleaxeAsh","swordAsh","spearAsh", "staffAsh"); diff --git a/src/main/java/com/zivilon/cinder_loe/entity/DarkSpider.java b/src/main/java/com/zivilon/cinder_loe/entity/DarkSpider.java new file mode 100644 index 0000000..2a0ceed --- /dev/null +++ b/src/main/java/com/zivilon/cinder_loe/entity/DarkSpider.java @@ -0,0 +1,90 @@ +package com.zivilon.cinder_loe.entity; + +import com.zivilon.cinder_loe.CinderLoE; +import lotr.common.LOTRFoods; +import lotr.common.LOTRMod; +import lotr.common.entity.ai.*; +import lotr.common.entity.animal.LOTREntityHorse; +import lotr.common.entity.npc.*; +import lotr.common.fac.LOTRFaction; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.*; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; + +import java.util.Arrays; +import java.util.List; + +public class DarkSpider extends LOTREntitySpiderBase { + public static int VENOM_DARK = 3; + public DarkSpider(World world) { + super(world); + } + @Override + protected int getRandomSpiderScale() { + return this.rand.nextInt(4); + } + @Override + protected int getRandomSpiderType() { + return VENOM_DARK; + } + @Override + public LOTRFaction getFaction() { + return LOTRFaction.UTUMNO; + } + + @Override + public boolean attackEntityAsMob(Entity entity) { + if (super.attackEntityAsMob(entity)) { + if (entity instanceof EntityLivingBase) { + ((EntityLivingBase) entity).addPotionEffect(new PotionEffect(Potion.blindness.id, 200, 0)); + } + return true; + } + return false; + } + @Override + protected boolean canRideSpider() { + return false; + } + @Override + public void attackEntityWithRangedAttack(EntityLivingBase p_82196_1_, float p_82196_2_) { + } + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + if (source.getEntity() instanceof EntityLivingBase) { + EntityLivingBase attacker = (EntityLivingBase) source.getEntity(); + if (attacker instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) attacker; + if (this.getSpiderScale() > 4 && this.rand.nextDouble() < 0.5) { + spawnDarkSpiders(player); + } + } + } + return super.attackEntityFrom(source, amount); + } + private void spawnDarkSpiders(EntityPlayer player) { + World world = player.worldObj; + for (int i = 0; i < 10; i++) { + DarkSpider babySpider = new DarkSpider(world); + babySpider.setLocationAndAngles(player.posX, player.posY, player.posZ, player.rotationYaw, 0.0F); + babySpider.setSpiderScale(0); + babySpider.setHealth(10); + world.spawnEntityInWorld(babySpider); + } + } + @Override + public ItemStack getPickedResult(MovingObjectPosition target) { + return null; + } +} diff --git a/src/main/java/com/zivilon/cinder_loe/entity/SpeechBankModifier.java b/src/main/java/com/zivilon/cinder_loe/entity/SpeechBankModifier.java index 30386ed..41e8133 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/SpeechBankModifier.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/SpeechBankModifier.java @@ -77,6 +77,8 @@ public class SpeechBankModifier { speechBanks.put("arnorSoldier/soldier/friendly", loadSpeechLines("arnorSoldier/soldier/friendly")); speechBanks.put("arnorSoldier/soldier/hired", loadSpeechLines("arnorSoldier/soldier/hired")); speechBanks.put("arnorSoldier/soldier/hostile", loadSpeechLines("arnorSoldier/soldier/hostile")); + speechBanks.put("corruptSpeak/all/neutral", loadSpeechLines("corruptSpeak/all/neutral")); + speechBanks.put("corruptSpeak/all/hostile", loadSpeechLines("corruptSpeak/all/hostile")); return speechBanks; } diff --git a/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptDwarf.java b/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptDwarf.java index 93b24db..23547e9 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptDwarf.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptDwarf.java @@ -56,8 +56,8 @@ public class CorruptDwarf extends LOTREntityDwarf { @Override public String getSpeechBank(EntityPlayer entityplayer) { if (this.isFriendlyAndAligned(entityplayer)) { - return "corrupt/neutral"; + return "corruptSpeak/all/neutral"; } - return "corrupt/hostile"; + return "corruptSpeak/all/hostile"; } } diff --git a/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptElf.java b/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptElf.java index a8c6dc7..765578f 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptElf.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptElf.java @@ -86,9 +86,9 @@ public class CorruptElf extends LOTREntityElf { @Override public String getSpeechBank(EntityPlayer entityplayer) { if (this.isFriendlyAndAligned(entityplayer)) { - return "corrupt/neutral"; + return "corruptSpeak/all/neutral"; } - return "corrupt/hostile"; + return "corruptSpeak/all/hostile"; } @Override diff --git a/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptHobbit.java b/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptHobbit.java index f7dbbab..36021e6 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptHobbit.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptHobbit.java @@ -81,9 +81,9 @@ public class CorruptHobbit extends LOTREntityHobbitBounder { @Override public String getSpeechBank(EntityPlayer entityplayer) { if (this.isFriendlyAndAligned(entityplayer)) { - return "corrupt/neutral"; + return "corruptSpeak/all/neutral"; } - return "corrupt/hostile"; + return "corruptSpeak/all/hostile"; } @Override protected void dropFewItems(boolean flag, int i) { diff --git a/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptMan.java b/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptMan.java index f3ac4a0..a61ff5b 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptMan.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptMan.java @@ -86,9 +86,9 @@ public class CorruptMan extends LOTREntityGondorMan { @Override public String getSpeechBank(EntityPlayer entityplayer) { if (this.isFriendlyAndAligned(entityplayer)) { - return "corrupt/neutral"; + return "corruptSpeak/all/neutral"; } - return "corrupt/hostile"; + return "corruptSpeak/all/hostile"; } @Override public LOTRMiniQuest createMiniQuest() { diff --git a/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptOrc.java b/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptOrc.java index 2b7e6a0..6c973fb 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptOrc.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/corrupt/CorruptOrc.java @@ -63,9 +63,9 @@ public class CorruptOrc extends LOTREntityOrc { @Override public String getSpeechBank(EntityPlayer entityplayer) { if (this.isFriendlyAndAligned(entityplayer)) { - return "corrupt/neutral"; + return "corruptSpeak/all/neutral"; } - return "corrupt/hostile"; + return "corruptSpeak/all/hostile"; } @Override public float getAlignmentBonus() { diff --git a/src/main/java/com/zivilon/cinder_loe/entity/ArnorBannerBearer.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/ArnorBannerBearer.java similarity index 94% rename from src/main/java/com/zivilon/cinder_loe/entity/ArnorBannerBearer.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/ArnorBannerBearer.java index bd73ba8..e0b7f95 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/ArnorBannerBearer.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/ArnorBannerBearer.java @@ -1,4 +1,4 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import com.zivilon.cinder_loe.CinderLoE; import lotr.common.entity.npc.LOTRBannerBearer; diff --git a/src/main/java/com/zivilon/cinder_loe/entity/ArnorCaptain.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/ArnorCaptain.java similarity index 96% rename from src/main/java/com/zivilon/cinder_loe/entity/ArnorCaptain.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/ArnorCaptain.java index 7f892f0..d21019a 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/ArnorCaptain.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/ArnorCaptain.java @@ -1,4 +1,4 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import com.zivilon.cinder_loe.CinderLoE; import lotr.common.LOTRCapes; @@ -7,7 +7,6 @@ import lotr.common.LOTRMod; import lotr.common.entity.npc.LOTRUnitTradeEntries; import lotr.common.entity.npc.LOTRUnitTradeable; import lotr.common.world.spawning.LOTRInvasions; -import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.IEntityLivingData; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/zivilon/cinder_loe/entity/ArnorSoldier.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/ArnorSoldier.java similarity index 98% rename from src/main/java/com/zivilon/cinder_loe/entity/ArnorSoldier.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/ArnorSoldier.java index e9aeda5..5dc2415 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/ArnorSoldier.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/ArnorSoldier.java @@ -1,4 +1,4 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import lotr.common.entity.ai.LOTREntityAIAttackOnCollide; import lotr.common.entity.npc.LOTREntityDunedain; diff --git a/src/main/java/com/zivilon/cinder_loe/entity/ArnorSoldierArcher.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/ArnorSoldierArcher.java similarity index 81% rename from src/main/java/com/zivilon/cinder_loe/entity/ArnorSoldierArcher.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/ArnorSoldierArcher.java index 91f964a..be47169 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/ArnorSoldierArcher.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/ArnorSoldierArcher.java @@ -1,18 +1,11 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; -import com.zivilon.cinder_loe.CinderLoE; import lotr.common.LOTRMod; -import lotr.common.LOTRShields; import lotr.common.entity.ai.LOTREntityAIRangedAttack; import lotr.common.entity.npc.LOTREntityNPC; -import lotr.common.entity.projectile.LOTREntityDart; -import lotr.common.item.LOTRItemBlowgun; -import lotr.common.item.LOTRItemDart; import net.minecraft.entity.*; import net.minecraft.entity.ai.EntityAIBase; -import net.minecraft.entity.ai.EntityAISwimming; import net.minecraft.item.ItemStack; -import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; public class ArnorSoldierArcher extends ArnorSoldier { diff --git a/src/main/java/com/zivilon/cinder_loe/entity/BattleNun.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/BattleNun.java similarity index 83% rename from src/main/java/com/zivilon/cinder_loe/entity/BattleNun.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/BattleNun.java index 6b767bd..b50d298 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/BattleNun.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/BattleNun.java @@ -1,15 +1,9 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import com.zivilon.cinder_loe.CinderLoE; -import lotr.common.LOTRAchievement; -import lotr.common.LOTRShields; -import lotr.common.entity.npc.LOTREntityDunedain; -import lotr.common.entity.npc.LOTREntityMoredain; -import lotr.common.entity.npc.LOTRNPCMount; import lotr.common.quest.LOTRMiniQuest; import lotr.common.quest.LOTRMiniQuestFactory; import net.minecraft.entity.IEntityLivingData; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/zivilon/cinder_loe/entity/BreeCaptain.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/BreeCaptain.java similarity index 98% rename from src/main/java/com/zivilon/cinder_loe/entity/BreeCaptain.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/BreeCaptain.java index 1d4239e..8788ced 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/BreeCaptain.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/BreeCaptain.java @@ -1,4 +1,4 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import com.zivilon.cinder_loe.CinderLoE; import lotr.common.LOTRAchievement; diff --git a/src/main/java/com/zivilon/cinder_loe/entity/BreeCrossbowman.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/BreeCrossbowman.java similarity index 89% rename from src/main/java/com/zivilon/cinder_loe/entity/BreeCrossbowman.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/BreeCrossbowman.java index 6f6af37..74ed3b3 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/BreeCrossbowman.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/BreeCrossbowman.java @@ -1,8 +1,6 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; -import com.zivilon.cinder_loe.CinderLoE; import lotr.common.LOTRMod; -import lotr.common.entity.ai.LOTREntityAIAttackOnCollide; import lotr.common.entity.ai.LOTREntityAIRangedAttack; import lotr.common.entity.npc.LOTREntityNPC; import net.minecraft.entity.EntityLiving; @@ -10,7 +8,6 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.IEntityLivingData; import net.minecraft.entity.ai.EntityAIBase; import net.minecraft.item.ItemStack; -import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; public class BreeCrossbowman extends BreeSoldier { diff --git a/src/main/java/com/zivilon/cinder_loe/entity/BreeOutrider.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/BreeOutrider.java similarity index 99% rename from src/main/java/com/zivilon/cinder_loe/entity/BreeOutrider.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/BreeOutrider.java index 412c90b..bc162bc 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/BreeOutrider.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/BreeOutrider.java @@ -1,4 +1,4 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import com.zivilon.cinder_loe.CinderLoE; import lotr.common.*; diff --git a/src/main/java/com/zivilon/cinder_loe/entity/BreeSoldier.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/BreeSoldier.java similarity index 96% rename from src/main/java/com/zivilon/cinder_loe/entity/BreeSoldier.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/BreeSoldier.java index f38af2b..6d06285 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/BreeSoldier.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/BreeSoldier.java @@ -1,4 +1,4 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import com.zivilon.cinder_loe.CinderLoE; import lotr.common.LOTRMod; diff --git a/src/main/java/com/zivilon/cinder_loe/entity/BreeSoldierBannerBearer.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/BreeSoldierBannerBearer.java similarity index 93% rename from src/main/java/com/zivilon/cinder_loe/entity/BreeSoldierBannerBearer.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/BreeSoldierBannerBearer.java index 00b21b8..ad53c97 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/BreeSoldierBannerBearer.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/BreeSoldierBannerBearer.java @@ -1,4 +1,4 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import lotr.common.entity.npc.LOTRBannerBearer; import lotr.common.item.LOTRItemBanner; diff --git a/src/main/java/com/zivilon/cinder_loe/entity/DwarfLevy.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/DwarfLevy.java similarity index 98% rename from src/main/java/com/zivilon/cinder_loe/entity/DwarfLevy.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/DwarfLevy.java index 29a3d5c..55dbf2d 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/DwarfLevy.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/DwarfLevy.java @@ -1,4 +1,4 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import com.zivilon.cinder_loe.CinderLoE; import lotr.common.LOTRMod; diff --git a/src/main/java/com/zivilon/cinder_loe/entity/FangornAnimal.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/FangornAnimal.java similarity index 98% rename from src/main/java/com/zivilon/cinder_loe/entity/FangornAnimal.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/FangornAnimal.java index e13fc52..e073486 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/FangornAnimal.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/FangornAnimal.java @@ -1,4 +1,4 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import lotr.common.LOTRAchievement; import lotr.common.LOTRFoods; diff --git a/src/main/java/com/zivilon/cinder_loe/entity/FangornAuroch.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/FangornAuroch.java similarity index 89% rename from src/main/java/com/zivilon/cinder_loe/entity/FangornAuroch.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/FangornAuroch.java index 4bc6a30..7894ac7 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/FangornAuroch.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/FangornAuroch.java @@ -1,23 +1,16 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import lotr.common.LOTRMod; -import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IEntityLivingData; import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.EntityAIBase; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; import net.minecraft.world.World; import net.minecraft.util.MovingObjectPosition; -import java.util.List; - import com.zivilon.cinder_loe.CinderLoE; -import com.zivilon.cinder_loe.entity.FangornAnimal; public class FangornAuroch extends FangornAnimal { public FangornAuroch(World world) { diff --git a/src/main/java/com/zivilon/cinder_loe/entity/FangornBear.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/FangornBear.java similarity index 96% rename from src/main/java/com/zivilon/cinder_loe/entity/FangornBear.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/FangornBear.java index 8ab23b0..866f8c4 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/FangornBear.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/FangornBear.java @@ -1,4 +1,4 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import lotr.common.LOTRMod; import lotr.common.entity.animal.LOTREntityBear; @@ -7,8 +7,6 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.IEntityLivingData; import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.EntityAIBase; -import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; @@ -18,7 +16,6 @@ import net.minecraft.world.World; import java.util.List; import com.zivilon.cinder_loe.CinderLoE; -import com.zivilon.cinder_loe.entity.FangornAnimal; public class FangornBear extends FangornAnimal { public FangornBear(World world) { diff --git a/src/main/java/com/zivilon/cinder_loe/entity/FangornElk.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/FangornElk.java similarity index 89% rename from src/main/java/com/zivilon/cinder_loe/entity/FangornElk.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/FangornElk.java index aff8ddc..0d6657e 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/FangornElk.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/FangornElk.java @@ -1,24 +1,18 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import lotr.common.LOTRMod; -import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IEntityLivingData; import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.EntityAIBase; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; -import java.util.List; import java.util.UUID; import com.zivilon.cinder_loe.CinderLoE; -import com.zivilon.cinder_loe.entity.FangornAnimal; public class FangornElk extends FangornAnimal { public FangornElk(World world) { diff --git a/src/main/java/com/zivilon/cinder_loe/entity/FangornWildBoar.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/FangornWildBoar.java similarity index 87% rename from src/main/java/com/zivilon/cinder_loe/entity/FangornWildBoar.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/FangornWildBoar.java index 239ec53..c1c4d6c 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/FangornWildBoar.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/FangornWildBoar.java @@ -1,23 +1,15 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; -import lotr.common.LOTRMod; -import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IEntityLivingData; import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.EntityAIBase; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; -import java.util.List; - import com.zivilon.cinder_loe.CinderLoE; -import com.zivilon.cinder_loe.entity.FangornAnimal; public class FangornWildBoar extends FangornAnimal { public FangornWildBoar(World world) { diff --git a/src/main/java/com/zivilon/cinder_loe/entity/FangornWolf.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/FangornWolf.java similarity index 82% rename from src/main/java/com/zivilon/cinder_loe/entity/FangornWolf.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/FangornWolf.java index a71243e..efc7e64 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/FangornWolf.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/FangornWolf.java @@ -1,23 +1,12 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; -import lotr.common.LOTRMod; -import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IEntityLivingData; import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.EntityAIBase; import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; import net.minecraft.world.World; -import java.util.List; - -import com.zivilon.cinder_loe.CinderLoE; -import com.zivilon.cinder_loe.entity.FangornAnimal; - public class FangornWolf extends FangornAnimal { public FangornWolf(World world) { super(world); diff --git a/src/main/java/com/zivilon/cinder_loe/entity/HaradLevy.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/HaradLevy.java similarity index 98% rename from src/main/java/com/zivilon/cinder_loe/entity/HaradLevy.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/HaradLevy.java index f7b004e..154c2cb 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/HaradLevy.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/HaradLevy.java @@ -1,4 +1,4 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import com.zivilon.cinder_loe.CinderLoE; import lotr.common.LOTRMod; diff --git a/src/main/java/com/zivilon/cinder_loe/entity/Limwaith.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/Limwaith.java similarity index 98% rename from src/main/java/com/zivilon/cinder_loe/entity/Limwaith.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/Limwaith.java index 7dfaccc..47e2442 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/Limwaith.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/Limwaith.java @@ -1,4 +1,4 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import lotr.common.entity.npc.LOTREntityMoredain; import lotr.common.entity.npc.LOTRNPCMount; diff --git a/src/main/java/com/zivilon/cinder_loe/entity/LimwaithBannerBearer.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/LimwaithBannerBearer.java similarity index 71% rename from src/main/java/com/zivilon/cinder_loe/entity/LimwaithBannerBearer.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/LimwaithBannerBearer.java index a7645da..5a56611 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/LimwaithBannerBearer.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/LimwaithBannerBearer.java @@ -1,12 +1,12 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import lotr.common.entity.npc.LOTRBannerBearer; import lotr.common.item.LOTRItemBanner; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; import net.minecraft.util.MovingObjectPosition; import net.minecraft.item.ItemStack; -import com.zivilon.cinder_loe.entity.LimwaithWarrior; import com.zivilon.cinder_loe.CinderLoE; public class LimwaithBannerBearer extends LimwaithWarrior implements LOTRBannerBearer { @@ -15,10 +15,15 @@ public class LimwaithBannerBearer extends LimwaithWarrior implements LOTRBannerB } public LOTRItemBanner.BannerType getBannerType() { - return LOTRItemBanner.BannerType.MOREDAIN; + return LOTRItemBanner.BannerType.forID(43); } @Override public ItemStack getPickedResult(MovingObjectPosition target) { return new ItemStack(CinderLoE.limwaithBannerBearerSpawnEgg, 1); } + + @Override + public void attackEntityWithRangedAttack(EntityLivingBase p_82196_1_, float p_82196_2_) { + + } } diff --git a/src/main/java/com/zivilon/cinder_loe/entity/LimwaithBlowgunner.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/LimwaithBlowgunner.java similarity index 87% rename from src/main/java/com/zivilon/cinder_loe/entity/LimwaithBlowgunner.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/LimwaithBlowgunner.java index 3b1f43b..871b0bd 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/LimwaithBlowgunner.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/LimwaithBlowgunner.java @@ -1,4 +1,4 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import lotr.common.LOTRMod; import lotr.common.entity.ai.LOTREntityAIRangedAttack; @@ -7,23 +7,15 @@ import lotr.common.item.LOTRItemBlowgun; import lotr.common.item.LOTRItemDart; import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.IEntityLivingData; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.EntityAIBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; import net.minecraft.item.ItemStack; -import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.StatCollector; import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; import com.zivilon.cinder_loe.CinderLoE; -import com.zivilon.cinder_loe.entity.Limwaith; public class LimwaithBlowgunner extends Limwaith { public LimwaithBlowgunner(World world) { diff --git a/src/main/java/com/zivilon/cinder_loe/entity/LimwaithBoneWarrior.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/LimwaithBoneWarrior.java similarity index 97% rename from src/main/java/com/zivilon/cinder_loe/entity/LimwaithBoneWarrior.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/LimwaithBoneWarrior.java index 7d00cfb..acc542a 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/LimwaithBoneWarrior.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/LimwaithBoneWarrior.java @@ -1,4 +1,4 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import com.zivilon.cinder_loe.CinderLoE; import lotr.common.LOTRShields; diff --git a/src/main/java/com/zivilon/cinder_loe/entity/LimwaithChieftain.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/LimwaithChieftain.java similarity index 95% rename from src/main/java/com/zivilon/cinder_loe/entity/LimwaithChieftain.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/LimwaithChieftain.java index b3d0823..cca0039 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/LimwaithChieftain.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/LimwaithChieftain.java @@ -1,4 +1,4 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.IEntityLivingData; @@ -12,7 +12,6 @@ import lotr.common.entity.npc.LOTRUnitTradeable; import lotr.common.entity.npc.LOTRUnitTradeEntries; import lotr.common.world.spawning.LOTRInvasions; -import com.zivilon.cinder_loe.entity.LimwaithWarrior; import com.zivilon.cinder_loe.CinderLoE; public class LimwaithChieftain extends LimwaithBoneWarrior implements LOTRUnitTradeable { diff --git a/src/main/java/com/zivilon/cinder_loe/entity/LimwaithWarrior.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/LimwaithWarrior.java similarity index 58% rename from src/main/java/com/zivilon/cinder_loe/entity/LimwaithWarrior.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/LimwaithWarrior.java index 981dfcc..26b703d 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/LimwaithWarrior.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/LimwaithWarrior.java @@ -1,45 +1,12 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; -import lotr.common.entity.npc.LOTREntityMoredain; -import lotr.common.entity.npc.LOTRNPCMount; -import lotr.common.LOTRAchievement; -import lotr.common.LOTRFoods; -import lotr.common.LOTRMod; import lotr.common.LOTRShields; -import lotr.common.entity.ai.LOTREntityAIAttackOnCollide; -import lotr.common.entity.ai.LOTREntityAIDrink; -import lotr.common.entity.ai.LOTREntityAIEat; -import lotr.common.entity.ai.LOTREntityAIFollowHiringPlayer; -import lotr.common.entity.ai.LOTREntityAIHiredRemainStill; -import lotr.common.entity.animal.LOTREntityZebra; -import lotr.common.fac.LOTRFaction; -import lotr.common.quest.LOTRMiniQuest; -import lotr.common.quest.LOTRMiniQuestFactory; -import lotr.common.world.structure.LOTRChestContents; -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; import net.minecraft.entity.IEntityLivingData; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.EntityAIBase; -import net.minecraft.entity.ai.EntityAILookIdle; -import net.minecraft.entity.ai.EntityAIOpenDoor; -import net.minecraft.entity.ai.EntityAISwimming; -import net.minecraft.entity.ai.EntityAIWander; -import net.minecraft.entity.ai.EntityAIWatchClosest; -import net.minecraft.entity.ai.EntityAIWatchClosest2; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; import net.minecraft.item.ItemStack; -import net.minecraft.util.MathHelper; -import net.minecraft.util.StatCollector; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; import com.zivilon.cinder_loe.CinderLoE; -import com.zivilon.cinder_loe.entity.Limwaith; public class LimwaithWarrior extends Limwaith { public LimwaithWarrior(World world) { diff --git a/src/main/java/com/zivilon/cinder_loe/entity/RedDwarfArbalest.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/RedDwarfArbalest.java similarity index 97% rename from src/main/java/com/zivilon/cinder_loe/entity/RedDwarfArbalest.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/RedDwarfArbalest.java index 775b33b..b86eb2e 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/RedDwarfArbalest.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/RedDwarfArbalest.java @@ -1,4 +1,4 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import lotr.common.entity.npc.LOTREntityDwarfAxeThrower; import lotr.common.LOTRMod; diff --git a/src/main/java/com/zivilon/cinder_loe/entity/RedDwarfBannerBearer.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/RedDwarfBannerBearer.java similarity index 71% rename from src/main/java/com/zivilon/cinder_loe/entity/RedDwarfBannerBearer.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/RedDwarfBannerBearer.java index 7df9cff..6b0023a 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/RedDwarfBannerBearer.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/RedDwarfBannerBearer.java @@ -1,8 +1,7 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; -import lotr.common.LOTRMod; import lotr.common.item.LOTRItemBanner; -import net.minecraft.entity.IEntityLivingData; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import lotr.common.entity.npc.LOTRBannerBearer; @@ -16,10 +15,15 @@ public class RedDwarfBannerBearer extends RedDwarfWarrior implements LOTRBannerB } public LOTRItemBanner.BannerType getBannerType() { - return LOTRItemBanner.BannerType.DWARF; + return LOTRItemBanner.BannerType.forID(42); } @Override public ItemStack getPickedResult(MovingObjectPosition target) { return new ItemStack(CinderLoE.redDwarfBannerBearerSpawnEgg, 1); } + + @Override + public void attackEntityWithRangedAttack(EntityLivingBase p_82196_1_, float p_82196_2_) { + + } } \ No newline at end of file diff --git a/src/main/java/com/zivilon/cinder_loe/entity/RedDwarfCommander.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/RedDwarfCommander.java similarity index 97% rename from src/main/java/com/zivilon/cinder_loe/entity/RedDwarfCommander.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/RedDwarfCommander.java index dfba8a2..0888b6c 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/RedDwarfCommander.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/RedDwarfCommander.java @@ -1,4 +1,4 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import lotr.common.LOTRMod; import net.minecraft.entity.IEntityLivingData; diff --git a/src/main/java/com/zivilon/cinder_loe/entity/RedDwarfWarrior.java b/src/main/java/com/zivilon/cinder_loe/entity/npc/RedDwarfWarrior.java similarity index 98% rename from src/main/java/com/zivilon/cinder_loe/entity/RedDwarfWarrior.java rename to src/main/java/com/zivilon/cinder_loe/entity/npc/RedDwarfWarrior.java index d423e4d..4005ae1 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/RedDwarfWarrior.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/npc/RedDwarfWarrior.java @@ -1,4 +1,4 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.npc; import lotr.common.entity.npc.LOTREntityDwarfWarrior; import lotr.common.LOTRMod; diff --git a/src/main/java/com/zivilon/cinder_loe/entity/trader/BladorthinSmith.java b/src/main/java/com/zivilon/cinder_loe/entity/trader/BladorthinSmith.java new file mode 100644 index 0000000..b801263 --- /dev/null +++ b/src/main/java/com/zivilon/cinder_loe/entity/trader/BladorthinSmith.java @@ -0,0 +1,106 @@ +package com.zivilon.cinder_loe.entity.trader; + +import com.zivilon.cinder_loe.CinderLoE; +import lotr.common.LOTRFoods; +import lotr.common.LOTRLevelData; +import lotr.common.LOTRMod; +import lotr.common.entity.npc.*; +import lotr.common.entity.npc.LOTRTradeEntries.TradeType; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.IEntityLivingData; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; + +public class BladorthinSmith extends LOTREntityDorwinionElf implements LOTRTradeable.Smith { + public static LOTRTradeEntries BLADORTHIN_SMITH_BUY; + public static LOTRTradeEntries BLADORTHIN_SMITH_SELL; + + public BladorthinSmith(World world) { + super(world); + } + + public IEntityLivingData onSpawnWithEgg(IEntityLivingData data) { + data = super.onSpawnWithEgg(data); + this.npcItemsInv.setMeleeWeapon(new ItemStack(LOTRMod.blacksmithHammer)); + this.npcItemsInv.setIdleItem(this.npcItemsInv.getMeleeWeapon()); + return data; + } + + public LOTRTradeEntries getBuyPool() { + return BLADORTHIN_SMITH_BUY; + } + + public LOTRTradeEntries getSellPool() { + return BLADORTHIN_SMITH_SELL; + } + + public float getAlignmentBonus() { + return 2.0F; + } + + protected void dropFewItems(boolean flag, int i) { + super.dropFewItems(flag, i); + } + + public boolean canTradeWith(EntityPlayer entityplayer) { + return (LOTRLevelData.getData(entityplayer).getAlignment(getFaction()) >= 100.0F && isFriendlyAndAligned(entityplayer)); + } + + static { + BLADORTHIN_SMITH_BUY = new LOTRTradeEntries(TradeType.BUY, + new LOTRTradeEntry[] { + new LOTRTradeEntry(new ItemStack(LOTRMod.dorwinionTable), 100), + new LOTRTradeEntry(new ItemStack(LOTRMod.swordDorwinionElf), 18), + new LOTRTradeEntry(new ItemStack(LOTRMod.daggerDorwinionElf), 14), + new LOTRTradeEntry(new ItemStack(LOTRMod.spearBladorthin), 20), + new LOTRTradeEntry(new ItemStack(LOTRMod.helmetDorwinionElf), 18), + new LOTRTradeEntry(new ItemStack(LOTRMod.bodyDorwinionElf), 25), + new LOTRTradeEntry(new ItemStack(LOTRMod.legsDorwinionElf), 22), + new LOTRTradeEntry(new ItemStack(LOTRMod.bootsDorwinionElf), 16), + new LOTRTradeEntry(new ItemStack(LOTRMod.dorwinionElfBow), 15), + new LOTRTradeEntry(new ItemStack(Items.arrow, 4), 3) + } + ); + + BLADORTHIN_SMITH_SELL = new LOTRTradeEntries(TradeType.SELL, + new LOTRTradeEntry[] { + new LOTRTradeEntry(new ItemStack(Blocks.iron_ore), 5), + new LOTRTradeEntry(new ItemStack(Blocks.gold_ore), 15), + new LOTRTradeEntry(new ItemStack(LOTRMod.oreCopper), 5), + new LOTRTradeEntry(new ItemStack(LOTRMod.oreTin), 5), + new LOTRTradeEntry(new ItemStack(Items.iron_ingot), 3), + new LOTRTradeEntry(new ItemStack(LOTRMod.elfSteel), 3), + new LOTRTradeEntry(new ItemStack(LOTRMod.bronze), 3), + new LOTRTradeEntry(new ItemStack(Items.gold_ingot), 15), + new LOTRTradeEntry(new ItemStack(LOTRMod.diamond), 25), + new LOTRTradeEntry(new ItemStack(LOTRMod.emerald), 15), + new LOTRTradeEntry(new ItemStack(LOTRMod.ruby), 12), + new LOTRTradeEntry(new ItemStack(LOTRMod.opal), 10), + new LOTRTradeEntry(new ItemStack(LOTRMod.amber), 10), + new LOTRTradeEntry(new ItemStack(LOTRMod.topaz), 8), + new LOTRTradeEntry(new ItemStack(Items.coal, 2, Short.MAX_VALUE), 1), + new LOTRTradeEntry(new ItemStack(Items.lava_bucket), 16), + new LOTRTradeEntry(new ItemStack(Items.stick, 8), 1), + new LOTRTradeEntry(new ItemStack(Items.string, 3), 1), + new LOTRTradeEntry(new ItemStack(LOTRMod.mithrilNugget), 35) + } + ); + } + + @Override + public void onPlayerTrade(EntityPlayer entityplayer, TradeType type, ItemStack itemstack) { + } + + @Override + public void attackEntityWithRangedAttack(EntityLivingBase p_82196_1_, float p_82196_2_) { + } + @Override + public ItemStack getPickedResult(MovingObjectPosition target) { + return null; + } +} diff --git a/src/main/java/com/zivilon/cinder_loe/entity/LimwaithFishmonger.java b/src/main/java/com/zivilon/cinder_loe/entity/trader/LimwaithFishmonger.java similarity index 91% rename from src/main/java/com/zivilon/cinder_loe/entity/LimwaithFishmonger.java rename to src/main/java/com/zivilon/cinder_loe/entity/trader/LimwaithFishmonger.java index e1b61d8..4af380c 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/LimwaithFishmonger.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/trader/LimwaithFishmonger.java @@ -1,18 +1,15 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.trader; import com.zivilon.cinder_loe.CinderLoE; +import com.zivilon.cinder_loe.entity.npc.Limwaith; import lotr.common.LOTRLevelData; import lotr.common.LOTRMod; -import lotr.common.entity.npc.LOTREntityDwarf; import lotr.common.entity.npc.LOTRTradeEntries; import lotr.common.entity.npc.LOTRTradeEntries.TradeType; -import lotr.common.entity.npc.LOTRTradeEntry; import lotr.common.entity.npc.LOTRTradeable; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.IEntityLivingData; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/zivilon/cinder_loe/entity/LimwaithShaman.java b/src/main/java/com/zivilon/cinder_loe/entity/trader/LimwaithShaman.java similarity index 96% rename from src/main/java/com/zivilon/cinder_loe/entity/LimwaithShaman.java rename to src/main/java/com/zivilon/cinder_loe/entity/trader/LimwaithShaman.java index d5b0b96..17f31bc 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/LimwaithShaman.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/trader/LimwaithShaman.java @@ -1,15 +1,13 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.trader; import com.zivilon.cinder_loe.CinderLoE; -import lotr.common.LOTRFoods; +import com.zivilon.cinder_loe.entity.npc.Limwaith; import lotr.common.LOTRLevelData; import lotr.common.LOTRMod; -import lotr.common.entity.npc.LOTREntityDwarf; import lotr.common.entity.npc.LOTRTradeEntries; import lotr.common.entity.npc.LOTRTradeEntries.TradeType; import lotr.common.entity.npc.LOTRTradeEntry; import lotr.common.entity.npc.LOTRTradeable; -import lotr.common.item.LOTRItemMug; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.IEntityLivingData; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/zivilon/cinder_loe/entity/RedDwarfSmith.java b/src/main/java/com/zivilon/cinder_loe/entity/trader/RedDwarfSmith.java similarity index 99% rename from src/main/java/com/zivilon/cinder_loe/entity/RedDwarfSmith.java rename to src/main/java/com/zivilon/cinder_loe/entity/trader/RedDwarfSmith.java index a02002d..f7680b0 100644 --- a/src/main/java/com/zivilon/cinder_loe/entity/RedDwarfSmith.java +++ b/src/main/java/com/zivilon/cinder_loe/entity/trader/RedDwarfSmith.java @@ -1,4 +1,4 @@ -package com.zivilon.cinder_loe.entity; +package com.zivilon.cinder_loe.entity.trader; import lotr.common.entity.npc.LOTRTradeEntries; import lotr.common.entity.npc.LOTRTradeEntries.TradeType; diff --git a/src/main/java/com/zivilon/cinder_loe/items/RadagastStaff.java b/src/main/java/com/zivilon/cinder_loe/items/RadagastStaff.java index b13c219..d01d670 100644 --- a/src/main/java/com/zivilon/cinder_loe/items/RadagastStaff.java +++ b/src/main/java/com/zivilon/cinder_loe/items/RadagastStaff.java @@ -1,28 +1,22 @@ package com.zivilon.cinder_loe.items; -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import lotr.common.LOTRCreativeTabs; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.passive.EntityAnimal; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import com.zivilon.cinder_loe.util.BlockPos; -import com.zivilon.cinder_loe.items.WizardStaff; -import com.zivilon.cinder_loe.entity.FangornBear; -import com.zivilon.cinder_loe.entity.FangornWildBoar; -import com.zivilon.cinder_loe.entity.FangornAuroch; -import com.zivilon.cinder_loe.entity.FangornElk; -import com.zivilon.cinder_loe.entity.FangornAnimal; +import com.zivilon.cinder_loe.entity.npc.FangornBear; +import com.zivilon.cinder_loe.entity.npc.FangornWildBoar; +import com.zivilon.cinder_loe.entity.npc.FangornAuroch; +import com.zivilon.cinder_loe.entity.npc.FangornElk; +import com.zivilon.cinder_loe.entity.npc.FangornAnimal; -import lotr.common.item.LOTRMaterial; import java.util.Random; diff --git a/src/main/java/com/zivilon/cinder_loe/items/UnnamedSpear.java b/src/main/java/com/zivilon/cinder_loe/items/UnnamedSpear.java new file mode 100644 index 0000000..877da04 --- /dev/null +++ b/src/main/java/com/zivilon/cinder_loe/items/UnnamedSpear.java @@ -0,0 +1,37 @@ +package com.zivilon.cinder_loe.items; + +import lotr.common.item.LOTRItemSpear; +import lotr.common.item.LOTRItemSword; +import lotr.common.item.LOTRMaterial; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +public class UnnamedSpear extends LOTRItemSpear { + private static final double ARMOR_DAMAGE = 0.025; // Default is 5% + + public UnnamedSpear(LOTRMaterial material) { + super(material); + } + + @Override + public boolean hitEntity(ItemStack itemStack, EntityLivingBase target, EntityLivingBase attacker) { + if (target instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) target; + for (int i = 0; i < 4; i++) { + ItemStack armorPiece = player.getCurrentArmor(i); + if (armorPiece != null) { + int currentDurabilty = armorPiece.getMaxDamage() - armorPiece.getItemDamage(); + int damageAmount = (int) (currentDurabilty * ARMOR_DAMAGE); + + if (damageAmount < 1) { + damageAmount = 1; + } + + armorPiece.damageItem(damageAmount, player); + } + } + } + return true; + } +} diff --git a/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRArmorModels.java b/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRArmorModels.java index ff3ff06..f6c3eca 100644 --- a/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRArmorModels.java +++ b/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRArmorModels.java @@ -4,7 +4,6 @@ import com.zivilon.cinder_loe.CinderLoE; import com.zivilon.cinder_loe.client.model.ModelBreeKettleHelmet; import com.zivilon.cinder_loe.client.model.ModelRedDwarfHelmet; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Shadow; import java.util.HashMap; @@ -28,8 +27,6 @@ import lotr.client.model.LOTRModelHarnedorChestplate; import lotr.client.model.LOTRModelHarnedorHelmet; import lotr.client.model.LOTRModelHeadPlate; import lotr.client.model.LOTRModelHighElvenHelmet; -import lotr.client.model.LOTRModelHighElvenHelmet; -import lotr.client.model.LOTRModelHighElvenHelmet; import lotr.client.model.LOTRModelLeatherHat; import lotr.client.model.LOTRModelMoredainLionHelmet; import lotr.client.model.LOTRModelMorgulHelmet; @@ -42,7 +39,6 @@ import lotr.client.model.LOTRModelTauredainChieftainHelmet; import lotr.client.model.LOTRModelTauredainGoldHelmet; import lotr.client.model.LOTRModelUmbarHelmet; import lotr.client.model.LOTRModelUrukHelmet; -import lotr.client.model.LOTRModelUrukHelmet; import lotr.client.model.LOTRModelWingedHelmet; import lotr.common.LOTRMod; diff --git a/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRContainerAnvil.java b/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRContainerAnvil.java index db8a133..5f84c47 100644 --- a/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRContainerAnvil.java +++ b/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRContainerAnvil.java @@ -55,7 +55,7 @@ public class MixinLOTRContainerAnvil { return (materialItem.getItem() == CinderLoE.redDwarfSteel); if (material == CinderLoE.MATERIAL_ASH.toToolMaterial()) return (materialItem.getItem() == CinderLoE.ingotAsh); - if (material == CinderLoE.MATERIAL_LIMWAITH_BONE.toToolMaterial()) + if (material == CinderLoE.MATERIAL_BONEMOLD.toToolMaterial()) return (materialItem.getItem() == CinderLoE.bonemold); if (material == CinderLoE.EVENT.toToolMaterial()) return LOTRMod.isOreNameEqual(materialItem, "ice"); @@ -73,6 +73,8 @@ public class MixinLOTRContainerAnvil { return (materialItem.getItem() == Items.iron_ingot); if (armorMaterial == CinderLoE.MATERIAL_BATTLENUN.toArmorMaterial()) return (materialItem.getItem() == Items.iron_ingot); + if (armorMaterial == CinderLoE.MATERIAL_BONEMOLD.toArmorMaterial()) + return (materialItem.getItem() == CinderLoE.bonemold); } return false; diff --git a/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRTileEntityDwarvenForge.java b/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRTileEntityDwarvenForge.java index 4631a3e..1b86f7f 100644 --- a/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRTileEntityDwarvenForge.java +++ b/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRTileEntityDwarvenForge.java @@ -1,5 +1,6 @@ package com.zivilon.cinder_loe.mixins; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.init.Items; @@ -18,17 +19,18 @@ import java.lang.reflect.Field; import com.zivilon.cinder_loe.CinderLoE; import lotr.common.LOTRMod; +import org.spongepowered.asm.mixin.Unique; @Mixin(LOTRTileEntityDwarvenForge.class) public abstract class MixinLOTRTileEntityDwarvenForge { protected boolean isCopper(ItemStack itemstack) { return (LOTRMod.isOreNameEqual(itemstack, "oreCopper") || LOTRMod.isOreNameEqual(itemstack, "ingotCopper")); } - + protected boolean isTin(ItemStack itemstack) { return (LOTRMod.isOreNameEqual(itemstack, "oreTin") || LOTRMod.isOreNameEqual(itemstack, "ingotTin")); } - + protected boolean isIron(ItemStack itemstack) { return (LOTRMod.isOreNameEqual(itemstack, "oreIron") || LOTRMod.isOreNameEqual(itemstack, "ingotIron")); } @@ -36,6 +38,15 @@ public abstract class MixinLOTRTileEntityDwarvenForge { protected boolean isCoal(ItemStack itemstack) { return (itemstack.getItem() == Items.coal); } + @Unique + protected boolean cinderLoE_Git$isMithril(ItemStack itemstack) { + return itemstack.getItem() == Item.getItemFromBlock(LOTRMod.oreMithril) || itemstack.getItem() == LOTRMod.mithril; + } + + @Unique + protected boolean cinderLoE_Git$isCoalBlock(ItemStack itemstack) { + return itemstack.getItem() == Item.getItemFromBlock(Blocks.coal_block); + } protected boolean isGoldNugget(ItemStack itemstack) { return (itemstack.getItem() == Items.gold_nugget); @@ -44,16 +55,17 @@ public abstract class MixinLOTRTileEntityDwarvenForge { @Overwrite(remap = false) protected ItemStack getAlloySmeltingResult(ItemStack itemstack, ItemStack alloyItem) { if (isIron(itemstack) && isCoal(alloyItem)) - return new ItemStack(LOTRMod.dwarfSteel); + return new ItemStack(LOTRMod.dwarfSteel); if (isIron(itemstack) && alloyItem.getItem() == LOTRMod.quenditeCrystal) - return new ItemStack(LOTRMod.galvorn); + return new ItemStack(LOTRMod.galvorn); if (isIron(itemstack) && alloyItem.getItem() == Item.getItemFromBlock(LOTRMod.rock) && alloyItem.getItemDamage() == 3) - return new ItemStack(LOTRMod.blueDwarfSteel); + return new ItemStack(LOTRMod.blueDwarfSteel); if (isCopper(itemstack) && alloyItem.getItem() == Item.getItemById(371)) - return new ItemStack(CinderLoE.redDwarfSteel); + return new ItemStack(CinderLoE.redDwarfSteel); if ((isCopper(itemstack) && isTin(alloyItem)) || (isTin(itemstack) && isCopper(alloyItem))) - return new ItemStack(LOTRMod.bronze, 2); + return new ItemStack(LOTRMod.bronze, 2); + if (this.cinderLoE_Git$isMithril(itemstack) && this.cinderLoE_Git$isCoalBlock(alloyItem)) + return new ItemStack(CinderLoE.ingotAsh, 1); return null; } } - diff --git a/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRTileEntityForgeBase.java b/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRTileEntityForgeBase.java index a337b4e..458892e 100644 --- a/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRTileEntityForgeBase.java +++ b/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRTileEntityForgeBase.java @@ -4,6 +4,7 @@ import com.zivilon.cinder_loe.CinderLoE; import lotr.common.LOTRMod; import lotr.common.tileentity.LOTRTileEntityAlloyForgeBase; import net.minecraft.init.Blocks; +import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import org.spongepowered.asm.mixin.Mixin; @@ -21,6 +22,15 @@ public abstract class MixinLOTRTileEntityForgeBase { protected boolean cinderLoE_Git$isCoalBlock(ItemStack itemstack) { return itemstack.getItem() == Item.getItemFromBlock(Blocks.coal_block); } + protected boolean isCopper(ItemStack itemstack) { + return (LOTRMod.isOreNameEqual(itemstack, "oreCopper") || LOTRMod.isOreNameEqual(itemstack, "ingotCopper")); + } + protected boolean isTin(ItemStack itemstack) { + return (LOTRMod.isOreNameEqual(itemstack, "oreTin") || LOTRMod.isOreNameEqual(itemstack, "ingotTin")); + } + protected boolean isGoldNugget(ItemStack itemstack) { + return (itemstack.getItem() == Items.gold_nugget); + } /** * @author Keylime @@ -30,7 +40,11 @@ public abstract class MixinLOTRTileEntityForgeBase { protected ItemStack getAlloySmeltingResult(ItemStack itemstack, ItemStack alloyItem) { if (this.cinderLoE_Git$isMithril(itemstack) && this.cinderLoE_Git$isCoalBlock(alloyItem)) return new ItemStack(CinderLoE.ingotAsh, 1); + if ((isCopper(itemstack) && isTin(alloyItem)) || (isTin(itemstack) && isCopper(alloyItem))) + return new ItemStack(LOTRMod.bronze, 2); return null; } } + + diff --git a/src/main/java/com/zivilon/cinder_loe/recipes.java b/src/main/java/com/zivilon/cinder_loe/recipes.java index 63dcd2e..18ae65a 100644 --- a/src/main/java/com/zivilon/cinder_loe/recipes.java +++ b/src/main/java/com/zivilon/cinder_loe/recipes.java @@ -141,6 +141,8 @@ public class recipes { GameRegistry.addShapelessRecipe(new ItemStack(CinderLoE.redDwarfSteel, 9), new Object[] { new ItemStack(CinderLoE.blockRedDwarfSteel) }); GameRegistry.addRecipe(new ItemStack(CinderLoE.blockRedDwarfSteel, 1), new Object[] { "XXX", "XXX", "XXX", Character.valueOf('X'), CinderLoE.redDwarfSteel }); + LOTRRecipes.dwarvenRecipes.add(new ShapedOreRecipe(new ItemStack(LOTRMod.banner, 1, 42), new Object[] { " YR", " X ", " Z ", + Character.valueOf('X'), "stickWood", Character.valueOf('Y'), Blocks.wool, Character.valueOf('Z'), "plankWood", Character.valueOf('R'), "dyeRed"})); GameRegistry.addRecipe(new LOTRRecipePoisonWeapon(CinderLoE.daggerRedDwarf, CinderLoE.daggerRedDwarfPoisoned)); } @@ -185,6 +187,8 @@ public class recipes { Character.valueOf('X'), "bone", Character.valueOf('Y'), CinderLoE.bonemold})); LOTRRecipes.moredainRecipes.add(new ShapedOreRecipe(new ItemStack(CinderLoE.bootsboneLimwaith), new Object[] { "Y Y", "X X", Character.valueOf('X'), "bone", Character.valueOf('Y'), CinderLoE.bonemold})); + LOTRRecipes.moredainRecipes.add(new ShapedOreRecipe(new ItemStack(LOTRMod.banner, 1, 43), new Object[] { " YR", " X ", " Z ", + Character.valueOf('X'), "stickWood", Character.valueOf('Y'), Blocks.wool, Character.valueOf('Z'), "plankWood", Character.valueOf('R'), LOTRMod.reeds})); } public static void registerBreeRecipes() { diff --git a/src/main/resources/assets/cinder_loe/lang/en_US.lang b/src/main/resources/assets/cinder_loe/lang/en_US.lang index 98eeaa9..e84478a 100644 --- a/src/main/resources/assets/cinder_loe/lang/en_US.lang +++ b/src/main/resources/assets/cinder_loe/lang/en_US.lang @@ -19,6 +19,7 @@ tile.lotr:cobbleDrystone.name=Cobbled Drystone tile.lotr:plaster.name=Plaster tile.lotr:voidblock.name=Void +item.lotr:spearUnnamed.name=Drannach Oriour item.lotr:frostblade.name=Frostblade item.lotr:whip.name=Whip item.lotr:daggerVoid.name=Voidal Dagger @@ -93,6 +94,10 @@ item.lotr:pikeAsh.name=Ash-Forged Pike item.lotr:spearAsh.name=Ash-Forged Spear item.lotr:banner.redDwarf.name=Banner of the Orocani +item.lotr:banner.limwaith.name=Banner of the Limwaith +item.lotr:banner.red.name=Red Flag +item.lotr:banner.blue.name=Blue Flag +item.lotr:banner.green.name=Green Flag item.spawn_egg_fangornauroch.name=Spawn Fangorn Auroch item.spawn_egg_fangornbear.name=Spawn Fangorn Bear @@ -127,6 +132,7 @@ item.spawn_egg_limwaithshaman.name=Spawn Limwaith Shaman item.spawn_egg_limwaithfishmonger.name=Spawn Limwaith Fishmonger item.spawn_egg_limwaithbonewarrior.name=Spawn Limwaith Warrior +entity.cinder_loe.DarkSpider.name=Dark Spider entity.cinder_loe.CorruptMan.name=Corrupt Man entity.cinder_loe.CorruptDwarf.name=Corrupt Dwarf entity.cinder_loe.CorruptElf.name=Corrupt Elf @@ -134,6 +140,7 @@ entity.cinder_loe.CorruptEnt.name=Corrupt Ent entity.cinder_loe.CorruptHobit.name=Corrupt Hobbit entity.cinder_loe.CorruptOrc.name=Corrupt Orc +entity.cinder_loe.BladorthinSmith.name=Bladorthin Smith entity.cinder_loe.RedDwarfSmith.name=Red Dwarf Smith entity.cinder_loe.RedDwarfWarrior.name=Red Dwarf Warrior diff --git a/src/main/resources/assets/cinder_loe/mob/spider/spider_dark.png b/src/main/resources/assets/cinder_loe/mob/spider/spider_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..4f70135f284a8d86e3287c4b4343b9586d26fe19 GIT binary patch literal 9212 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 CCI4ao literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/lotr/item/banner/banner_limwaith.png b/src/main/resources/assets/lotr/item/banner/banner_limwaith.png new file mode 100644 index 0000000000000000000000000000000000000000..ca0dbea0bc4f2e769ae706d48ab107db6eae8484 GIT binary patch literal 9508 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 YnwfSU94{{&Y+3+l9V6{BO}lIV1EK%$`v3p{ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/lotr/item/banner/banner_red.png b/src/main/resources/assets/lotr/item/banner/banner_red.png new file mode 100644 index 0000000000000000000000000000000000000000..d91b42f658f1ee898e6d31ea262d746cc76093f6 GIT binary patch literal 8325 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/lotr/item/verticalweaponRack.png b/src/main/resources/assets/lotr/item/verticalweaponRack.png new file mode 100644 index 0000000000000000000000000000000000000000..c7e0de76f84b8bc7deb389f4f17acd430db13efb GIT binary patch literal 7246 zcmeHMXH-*5*A9p@6;T8%ln_8b2n0eXA&68dQluyyQcfgN0!ipi>Aff*O;H3yngSxy zMJb{bMXDkSQYXPh@4epjy?^dn-}~>Lwaz(nX7+w&?`Q9swI_)*GB~}D^(ZR@ z0@&^5v z8_Lw9eWC9wq9jy>m^UTD1M{D=m2LRlBy*E^%na5v5#M4mtAKy8o?`+2AhlSiqcz)>m#U>`aAOF12JNImP zPxHO#`kV9K%lnG=Pu`n#$X%68BK6CtjGOwRkgBI3JwXo7MkEjTvkH~b8@0N#in6gY7r2cO&cKd1 zU0f{o&Iu`(y*M`C?B29jC@D(Z{&mi-bGod7x&^NJg$~BOMVf_j(-xHH=~T%<%~Ec$ z&nGM?V!0{je3H`(`mFVeD|&}<92zE8F1fvZma|iXr9btv4*FbAGRXy(xC3_eJq`+^bV`?-AW_>q4)Su z!~=tmD?FlaB_<~QZI1RlcY534S!%##nV7nA6shOne`olayX{H|N^?V3DHo6!mZ*Tg z(6@=!esNTgJ41b_?~DKbS#70jd5#Pil4XC~pyeP{f@7c?RmB`{ri9d}o48*$>Lyiq z!2TO`T6r>Av;A4R9g9eavh4opGUqfUYo(JRG2@N~mKTIgr&(EO@2XmX6UoLx@V=pw zun8pxew4=(9>^WF?OR+Xcbc5&p~R}S6>f6EAs6!|t>udysCzMr}Ms>Y{pG48yTGsfF!@WnCx-(?Kj~nC`uR#~)&`*qlI1|ft+P*@!aZ%FbkRZ8 zk7nCG)?%QT5j=vjYBuTk7mI=&JX!`maBqx#iHJ%4I&*ioiM>u;xJz!q6u_O*0X;D! zjAlBfp$C1Ln=55^C=9i{6wMm>rY;@7bVv>I%HebU!{Z{J9pXaIfqq1Jmhh7FoQjHV zfLiS0gz&*S=DH#6TdJQpK4jY-PgiwPJ1fJIu+bwgs75c6sLG&KtlB4&y$HuQ5t_e)*$H#q$j&+Ilv0Eu=?8O)ni^xv)Qr&a& zCXx2+2@(qDtDhqKD@4ygFKdKR)6d7xIjWyLTp@BpHNGxaZuA+2@8QCnfdie1WDLnn zO8d%$z!9E10ccOI3V3puX4TU3PeRPv*LgqOaiq5{i&|SVDLzi+=;zoA&oD)y4+P!^>n+VNTMSS72~2-OX8` z^|%(2W}J}n*-Sn~#>w<4`!m_|j;ZffF77&eTO~xm_WoidUm9BQQMk$}f>r3uSV*6Z z$Bp&uxz?w(qp$;H)h0QX%qbw!O^5 z)*j!z46}nbhPN711tWWCytgMm&+j!G37w>Gei6&N=i%1_8X?)LBQgCQq+qo^L2lk@ zn>ffWmJAugQ`QmtJ)q^wsRD7RHQxNMS6*RqLWkL|A75Pbphd{M44P-U@G{{QdsV@p zh`~jDq6#}~VHh~d8Mn4J5&Ch=keWL3y6EpN95xCglUX{|M zZ4`W*c1dxag*#$NaH!#=t)0|kIqrDPW2nliaY_#nx=UTk7$D=w64d1*s z6I)$~iRs8kE(7CKR?EhzPKV2RFCAw0v3PY(-u7W|ULa#iy%a6najAwC!*51gS7mE^ znKRbwX{RmYUd?44d0a?0AlHVt(p=xiF_rC!EOlOd`qhiqY_1G1_+~f$wjz_?{h@-u zvy}e#`LDK)t=Y*jOrERR+}Fw*e0{7k%>)9W3ni(m8|kR4|4|cxl~AUCqO$hWQ#{Rf zCeE5CvOU-jv>9EOh=@|q<&3t!^?=jT9Z|KoCtX%ZOfoLWv9U3}xga>Yyo9YJ2)ar) zI`tvv6HIthO6)nlyb@(;4Ly z>od2eSF6Lr?|EWx^llDi-9FuxzIQI7iF!s}VszhVn!es-tsxI#w~oL`5kC1(K~3@2 z*K7hlW_p@`NK+L|P8DH082z0q#VVC^Z?adqLQekC@jaw#oSjygy~d%anKrw_&n}AV zl)UEAI;0mNz;;09glIOy9;_wG_>7Q)N_UIO*y_izD{W>Bg01w=jRX_}=2TYS6{lsS z)2`AVxVg~$P(_PwOVa4xo8^^K=YB)TEYdX>^<(@fVqM3l;%;c%rD5j}qt$oYd>@aq zAy#wr!p5|1)72!IYO`L+1D7sa-Sq94E-sCK%>>o7fxm|^g+DgGQP%&qwx+P6GO$Z_ zZJo|^i;@v3nL`4L*TW>RNHy0#gT|AcC9woD4v_S6b_I)A2n3_z<%-2S0yHQNxIl7I zhRxPAz@Q|8GVDA`AEEE64mgmseJFs5kAW%P#}ThcfT^5h#dx7X0B3-Pg?c$Vxlqww z%CH?=G}zwmmV!ZdL}-r6Fmrt)s5+SfKxHLmB@u8?A7`Lm?2+#u{3`AiytW zm;;UGik6b{^z@YUL`sq=7o?;W6&0lrGEy=!a8LqH^>(3Qz2GiX!EK127#aW-Pa(O| zNMsl2HYOHFcBd)BVBk3P5Br>5_4WURccK1b0pvr<3+pN+Es2nFc9!~GgG$r%06~5k z^j|foreLivWeiZs?i4(r=>fRV1b>Gh;Q!Qjb*DJ(xI@580ZxE3C`tuqmHyk5r*-s= z{?yo}-~!3nbw>*%`)`so67esx{$|_u$c{U|8v?5TiTgL{KYZU22Bq}%(HdmD`?h&H z8p^Qk`OyS2o#X@#5(OTm1;EnC6jL(U zNg1|n6m(m2C&8hZpJCA^Q9%js?VSIW^(KJZ&##}0z=^ao1cmM-E*gvfISCc(0T6a3 z0`-0l;T^Cp7XWaD|4OMp`bqyKT+&D^5`n}?!%+${vS7HR<={9R5sW=nQ3gwpLEv$6 zKOO%Qok}LsJh2o&^#bTA=na@cJKjJ=e~~HncWXQyfNiD_AUr}2E-h~=EsI7;qorkF zQoo#)+FsLtc#DzxKYU~MINZ)X+%)giw#XnupYrBV42MwQ0wL$o_k?KI7I?jQ4R_5?oByrow; z>SX=spv|Y}v8>tA+03}cZrwcWm3E=3HszH}-;!urcTP4^5<3LnX1f{A9W22 zKA5q!&Rn&OOhSHX)h_5<@7YuzVH|q%bAM&s?SbNBWUe#chC90IJ}=df8!QJfra=ye`GaZ}a^0rPezbolx##=$mE)6gU;UQek!u&H z7%LPA6_(kSagV5hS<@Zp_rvu{gE?HMMa2%2o-PypCw9FVi+O-eIvO(fl4Nj0$xk@Z z_`d6IhRsLabwa{jye$(&8Ygc_Nz2{I%IO(R=)^uD3g#I{J+o=-Sa~nH7Ma)k`SsAO z0482^@yK43{IGX1vwyRe;6%9H%!qg-zn)KUQXMvHGRqeHY1ll2deIW{_+(Mc9H!^# zmw_QSkGhs%gRI1d577R8cJxMK;ZCx+n2vABLdXPZa%x ztEdh7fvGaxDO$yT)d%m_S%@H0L>Jp^R1e2IZN2+3*vhWGw?^rj6j!XJ_l7OPV2C=| z-{M=18(~S69T^S?9Ni4QrNz4c`e2*BYbJU^V2-nsQ#9AXospqFyXw8Vj;i83_q|KH ziac9JxRxTmNjLY*kaly+X}&hm42*bGkV^WyW^pKz%T7l(G5(%VuL5kbw_PCKq*Vt| zC5ZGWyK{)|^1V63MmRKtUHfzCx%jHe{@k;0w>;Y$iergr%j=D$UsmOB3|clX@YS8S zWf@Q~xqjpUS08<+B8`~%1plV!N@AMAk3@7_N!is0r*e6&e19`+T0839sLRIw$N zwpBx)l;m}zwGnzI-iUr!e!Kbd{;(Kh^+|+5`4L3*apiNFwL%C{wFU zYHI=BHj^qUETW!7WpkFOQ;ky8ziOX*$XG0tqmpS3vtPLNi*}e#cARMD*5*0m&b?<{ z7&@`(iE?p1;TS&gB}EIpSk# zwrHyD?99x`QnN$nORUARMYF9XKYH_7I_C8=F)>-!cocgXbKHD_$a&{-6*!{GZXcuS z7%LsNwB#Q4RG@=M9Te9~k+3Kuv|SMf8{XNgdp7yF`%9Ma+y4);0p>bHeSOFYu+0qK U+gG>A)$Ny#rh!I@ntjlJ0QG?cQvd(} literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/lotr/textures/items/banner_limwaith.png b/src/main/resources/assets/lotr/textures/items/banner_limwaith.png new file mode 100644 index 0000000000000000000000000000000000000000..11bec22cc900bbef49088e1a46fd8e66cb154d96 GIT binary patch literal 5325 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/lotr/textures/items/large/spearUnnamed.png b/src/main/resources/assets/lotr/textures/items/large/spearUnnamed.png new file mode 100644 index 0000000000000000000000000000000000000000..060c6edbbb086f9dafb16e69e8b811426920d1d6 GIT binary patch literal 7339 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 literal 0 HcmV?d00001