2
0
Fork 0

Merge remote-tracking branch 'origin/main'

main
KeyLime17 4 months ago
commit 0435805069

@ -15,6 +15,7 @@ import com.zivilon.cinder_loe.entity.animals.Monkey;
import com.zivilon.cinder_loe.entity.boss.CryptBoss; import com.zivilon.cinder_loe.entity.boss.CryptBoss;
import com.zivilon.cinder_loe.entity.corrupt.*; import com.zivilon.cinder_loe.entity.corrupt.*;
import com.zivilon.cinder_loe.entity.npc.*; import com.zivilon.cinder_loe.entity.npc.*;
import com.zivilon.cinder_loe.entity.npc.boss.*;
import com.zivilon.cinder_loe.entity.npc.dwarf.RedDwarfArbalest; import com.zivilon.cinder_loe.entity.npc.dwarf.RedDwarfArbalest;
import com.zivilon.cinder_loe.entity.npc.dwarf.RedDwarfBannerBearer; import com.zivilon.cinder_loe.entity.npc.dwarf.RedDwarfBannerBearer;
import com.zivilon.cinder_loe.entity.npc.dwarf.RedDwarfCommander; import com.zivilon.cinder_loe.entity.npc.dwarf.RedDwarfCommander;
@ -404,7 +405,7 @@ public class CinderLoE {
// event.registerServerCommand(new CommandMobileSound()); // event.registerServerCommand(new CommandMobileSound());
} }
public void registerEntities() { // Last ID added: 83 public void registerEntities() { // Last ID added: 84
///GameRegistry.registerTileEntity(TileEntityMistBlock.class, "TileEntityMistBlock"); ///GameRegistry.registerTileEntity(TileEntityMistBlock.class, "TileEntityMistBlock");
///.registerBlock(TileEntityRustedSword, "TileEntityRustedSword"); ///.registerBlock(TileEntityRustedSword, "TileEntityRustedSword");
@ -463,7 +464,7 @@ public class CinderLoE {
EntityRegistry.registerModEntity(Monkey.class, "Monkey", (entityID + 62), this, 64, 1, true); EntityRegistry.registerModEntity(Monkey.class, "Monkey", (entityID + 62), this, 64, 1, true);
EntityRegistry.registerModEntity(CryptBoss.class, "CryptBoss", (entityID + 66), this, 64, 1, true); EntityRegistry.registerModEntity(CryptBoss.class, "CryptBoss", (entityID + 66), this, 64, 1, true);
EntityRegistry.registerModEntity(EntityMorgulBlast.class, "EntityMorgulBlast", (entityID + 65), this, 64, 1, true); EntityRegistry.registerModEntity(EntityMorgulBlast.class, "EntityMorgulBlast", (entityID + 65), this, 64, 1, true);
EntityRegistry.registerModEntity(StrongHillTrollChieftain.class, "StrongHillTrollChieftain", (entityID + 84), this, 64, 1, true);
// Faction Units // Faction Units
@ -1227,6 +1228,7 @@ public class CinderLoE {
RenderingRegistry.registerEntityRenderingHandler(EsgarothSoldier.class, new LOTRRenderDaleMan()); RenderingRegistry.registerEntityRenderingHandler(EsgarothSoldier.class, new LOTRRenderDaleMan());
RenderingRegistry.registerEntityRenderingHandler(MorgulOrc.class, new LOTRRenderOrc()); RenderingRegistry.registerEntityRenderingHandler(MorgulOrc.class, new LOTRRenderOrc());
RenderingRegistry.registerEntityRenderingHandler(NorthernOrc.class, new LOTRRenderOrc()); RenderingRegistry.registerEntityRenderingHandler(NorthernOrc.class, new LOTRRenderOrc());
RenderingRegistry.registerEntityRenderingHandler(StrongHillTrollChieftain.class, new LOTRRenderMountainTrollChieftain());
} }
} }

@ -20,38 +20,38 @@ public class LOTRMaterialTransformer implements IClassTransformer {
reader.accept(classNode, 0); reader.accept(classNode, 0);
modifyMaterial("ANGMAR", 350, 0.6F, classNode); //Original Durability = 350 | Add 81 | 162 if Upgraded Armory | 1/4 (Unupgraded) modifyMaterial("ANGMAR", 350, 0.6F, 2.5F, classNode); //Original Durability = 350 | Add 81 | 162 if Upgraded Armory | 1/4 (Unupgraded)
modifyMaterial("URUK", 550, 0.7F, classNode); //Original Durability = 550 | Add 56 | 112 if Upgraded Armory | 1/4 (Unupgraded) modifyMaterial("URUK", 550, 0.7F, 3.0F, classNode); //Original Durability = 550 | Add 56 | 112 if Upgraded Armory | 1/4 (Unupgraded)
modifyMaterial("BLACK_URUK", 550, 0.7F, classNode); //Original Durability = 550 | Add 56 | 112 if Upgraded Armory | 2/4 (Unupgraded) modifyMaterial("BLACK_URUK", 550, 0.7F, 3.0F, classNode); //Original Durability = 550 | Add 56 | 112 if Upgraded Armory | 2/4 (Unupgraded)
modifyMaterial("HALF_TROLL", 350, 0.6F, classNode); //Original Durability = 300 | Add 87 | 175 if Upgraded Armory | 1/4 (Unupgraded) modifyMaterial("HALF_TROLL", 350, 0.6F, 2.5F, classNode); //Original Durability = 300 | Add 87 | 175 if Upgraded Armory | 1/4 (Unupgraded)
// Good Humans // Good Humans
modifyMaterial("DALE", 350, 0.6F, classNode); //Original Durability = 300 | Add 87 | 175 if Upgraded Armory | 1/4 (Unupgraded) modifyMaterial("DALE", 350, 0.6F, 2.5F, classNode); //Original Durability = 300 | Add 87 | 175 if Upgraded Armory | 1/4 (Unupgraded)
modifyMaterial("GONDOR", 450, 0.6F, classNode); //Original Durability = 450 | Add 68 | 137 if Upgraded Armory | 3/4 (Unupgraded) modifyMaterial("GONDOR", 450, 0.6F, 2.5F, classNode); //Original Durability = 450 | Add 68 | 137 if Upgraded Armory | 3/4 (Unupgraded)
modifyMaterial("DORWINION_ELF", 500, 0.6F, classNode); //Original Durability = 500 | Add 62 | 125 if Upgraded Armory | 3/4 (Unupgraded) modifyMaterial("DORWINION_ELF", 500, 0.6F, 3.0F, classNode); //Original Durability = 500 | Add 62 | 125 if Upgraded Armory | 3/4 (Unupgraded)
modifyMaterial("ROHAN", 350, 0.6F, classNode); //Original Durability = 300 | Add 87 | 175 if Upgraded Armory | 0/4 modifyMaterial("ROHAN", 350, 0.6F, 2.5F, classNode); //Original Durability = 300 | Add 87 | 175 if Upgraded Armory | 0/4
modifyMaterial("TAUREDAIN", 350, 0.6F, classNode); //Original Durability = 300 | Add 87 | 175 if Upgraded Armory | 0/4 modifyMaterial("TAUREDAIN", 350, 0.6F, 2.5F, classNode); //Original Durability = 300 | Add 87 | 175 if Upgraded Armory | 0/4
modifyMaterial("DORWINION", 400, 0.6F, classNode); //Original Durability = 400 | Add 75 | 150 if Upgraded Armory | 0/4 modifyMaterial("DORWINION", 400, 0.6F, 2.5F, classNode); //Original Durability = 400 | Add 75 | 150 if Upgraded Armory | 0/4
modifyMaterial("LOSSARNACH", 350, 0.6F, classNode); //Original Durability = 300 | Add 87 | 175 if Upgraded Armory 0/4 modifyMaterial("LOSSARNACH", 350, 0.6F, 2.5F, classNode); //Original Durability = 300 | Add 87 | 175 if Upgraded Armory 0/4
modifyMaterial("LAMEDON", 350, 0.6F, classNode); //Original Durability = 300 | Add 87 | 175 if Upgraded Armory | 0/4 modifyMaterial("LAMEDON", 350, 0.6F, 2.0F, classNode); //Original Durability = 300 | Add 87 | 175 if Upgraded Armory | 0/4
// Evil Humans // Evil Humans
modifyMaterial("RHUN_GOLD", 450, 0.6F, classNode); //Original Durability = 450 | Add 68 | 137 if Upgraded Armory | 0/4 modifyMaterial("RHUN_GOLD", 450, 0.6F, 2.5F, classNode); //Original Durability = 450 | Add 68 | 137 if Upgraded Armory | 0/4
modifyMaterial("RHUN", 400, 0.6F, classNode); //Original Durability = 400 | Add 75 | 150 if Upgraded Armory | 0/4 modifyMaterial("RHUN", 400, 0.6F, 2.5F, classNode); //Original Durability = 400 | Add 75 | 150 if Upgraded Armory | 0/4
modifyMaterial("DUNLENDING", 350, 0.6F, classNode); //Original Durability = 250 | Add 93 | 187 if Upgraded Armory | 1/4 (Unupgraded) modifyMaterial("DUNLENDING", 350, 0.6F, 2.0F, classNode); //Original Durability = 250 | Add 93 | 187 if Upgraded Armory | 1/4 (Unupgraded)
modifyMaterial("NEAR_HARAD", 450, 0.6F, classNode); //Original Durability = 300 | Add 87 | 175 if Upgraded Armory | 3/4 (Unupgraded) modifyMaterial("NEAR_HARAD", 450, 0.6F, 2.5F, classNode); //Original Durability = 300 | Add 87 | 175 if Upgraded Armory | 3/4 (Unupgraded)
modifyMaterial("HARNEDOR", 350, 0.6F, classNode); //Original Durability = 250 | Add 93 | 187 if Upgraded Armory | 0/4 modifyMaterial("HARNEDOR", 350, 0.6F, 2.0F, classNode); //Original Durability = 250 | Add 93 | 187 if Upgraded Armory | 0/4
modifyMaterial("CORSAIR", 350, 0.6F, classNode); //Original Durability = 300 | Add 87 | 175 if Upgraded Armory | 0/4 modifyMaterial("CORSAIR", 350, 0.6F, 2.5F, classNode); //Original Durability = 300 | Add 87 | 175 if Upgraded Armory | 0/4
modifyMaterial("GULF_HARAD", 350, 0.6F, classNode); //Original Durability = 350 | Add 81 | 162 if Upgraded Armory | 0/4 modifyMaterial("GULF_HARAD", 350, 0.6F, 2.5F, classNode); //Original Durability = 350 | Add 81 | 162 if Upgraded Armory | 0/4
modifyMaterial("UMBAR", 450, 0.6F, classNode); //Original Durability = 450 | Add 68 | 137 if Upgraded Armory | 2/4 (Unupgraded) modifyMaterial("UMBAR", 450, 0.6F, 2.5F, classNode); //Original Durability = 450 | Add 68 | 137 if Upgraded Armory | 2/4 (Unupgraded)
modifyMaterial("MOREDAIN", 350, 0.6F, classNode); //Original Durability = 250 | Add 93 | 187 if Upgraded Armory | 0/4 modifyMaterial("MOREDAIN", 350, 0.6F, 2.0F, classNode); //Original Durability = 250 | Add 93 | 187 if Upgraded Armory | 0/4
//Elves //Elves
modifyMaterial("WOOD_ELVEN", 500, 0.6F, classNode); //Original Durability = 500 | Add 62 | 125 if Upgraded Armory | 4/4 (Unupgraded) modifyMaterial("WOOD_ELVEN", 500, 0.6F, 3.0F, classNode); //Original Durability = 500 | Add 62 | 125 if Upgraded Armory | 4/4 (Unupgraded)
// Custom // Custom
modifyMaterial("UTUMNO", 1500, 0.7F, classNode); modifyMaterial("UTUMNO", 1500, 0.7F, 3.5F, classNode);
addMaterial("RED_DWARF", classNode); addMaterial("RED_DWARF", classNode);
addMaterial("WIZARD", classNode); addMaterial("WIZARD", classNode);
@ -96,11 +96,12 @@ public class LOTRMaterialTransformer implements IClassTransformer {
classNode.fields.add(field); classNode.fields.add(field);
} }
public void modifyMaterial(String fieldName, int durability, float protection, ClassNode classNode) { public void modifyMaterial(String fieldName, int durability, float protection, float weapon_damage, ClassNode classNode) {
MethodNode clinit = null; MethodNode clinit = null;
boolean foundField = false; boolean foundField = false;
boolean durabilityModified = false; boolean durabilityModified = false;
boolean protectionModified = false; boolean protectionModified = false;
boolean damageModified = false;
// First, find the <clinit> method // First, find the <clinit> method
for (MethodNode method : classNode.methods) { for (MethodNode method : classNode.methods) {
@ -152,7 +153,17 @@ public class LOTRMaterialTransformer implements IClassTransformer {
} }
} }
if (durabilityModified && protectionModified) { if (foundField && !damageModified && insn instanceof MethodInsnNode && ((MethodInsnNode) insn).name.equals("setDamage")) {
AbstractInsnNode damage_insn = insn.getPrevious();
if (damage_insn instanceof LdcInsnNode) {
((LdcInsnNode) damage_insn).cst = weapon_damage;
System.out.println("[CinderLoE] Updated damage for " + fieldName + " to " + weapon_damage);
damageModified = true;
}
}
if (durabilityModified && protectionModified && damageModified) {
return; return;
} }
} }

@ -0,0 +1,16 @@
package com.zivilon.cinder_loe.entity.npc.boss;
import lotr.common.entity.npc.LOTREntityMountainTrollChieftain;
import net.minecraft.world.World;
import net.minecraft.entity.SharedMonsterAttributes;
public class StrongHillTrollChieftain extends LOTREntityMountainTrollChieftain {
public StrongHillTrollChieftain(World world) {
super(world);
}
public void applyEntityAttributes() {
super.applyEntityAttributes();
getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(150.0D);
}
}

@ -0,0 +1,48 @@
package com.zivilon.cinder_loe.mixins;
import lotr.common.LOTRMod;
import lotr.common.entity.npc.LOTREntityMountainTrollChieftain;
import lotr.common.entity.npc.LOTREntityMountainTroll;
import net.minecraft.entity.Entity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow;
import net.minecraft.util.DamageSource;
import net.minecraft.entity.SharedMonsterAttributes;
import com.zivilon.cinder_loe.util.IBossEntity;
@Mixin(LOTREntityMountainTrollChieftain.class)
public class MixinLOTREntityMountainTrollChieftain extends LOTREntityMountainTroll implements IBossEntity {
@Shadow
public int getTrollArmorLevel() {return 1;}
@Shadow
public void setTrollArmorLevel(int i) {}
public MixinLOTREntityMountainTrollChieftain(World world) {
super(world);
}
@Overwrite
protected void damageEntity(DamageSource damagesource, float f) {
super.damageEntity(damagesource, f);
}
public void change_phase() {
if (!this.worldObj.isRemote) {
setTrollArmorLevel(getTrollArmorLevel() - 1);
if (getTrollArmorLevel() == 0) {
double speed = getEntityAttribute(SharedMonsterAttributes.movementSpeed).getAttributeValue();
speed *= 1.5D;
getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(speed);
}
double maxHealth = getEntityAttribute(SharedMonsterAttributes.maxHealth).getAttributeValue();
maxHealth *= 2.0D;
getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(maxHealth);
setHealth(getMaxHealth());
this.worldObj.setEntityState((Entity)this, (byte)21);
}
}
}

@ -4,6 +4,8 @@ import net.minecraft.entity.*;
import net.minecraft.entity.player.*; import net.minecraft.entity.player.*;
import net.minecraft.util.DamageSource; import net.minecraft.util.DamageSource;
import com.zivilon.cinder_loe.util.IBossEntity;
import com.zivilon.cinder_loe.mixins.MixinLOTREnchantment; import com.zivilon.cinder_loe.mixins.MixinLOTREnchantment;
import lotr.common.enchant.LOTREnchantment; import lotr.common.enchant.LOTREnchantment;
import lotr.common.enchant.LOTREnchantmentHelper; import lotr.common.enchant.LOTREnchantmentHelper;
@ -11,6 +13,7 @@ import lotr.common.enchant.LOTREnchantmentHelper;
import lotr.common.item.*; import lotr.common.item.*;
import net.minecraft.item.*; import net.minecraft.item.*;
import net.minecraft.world.World; import net.minecraft.world.World;
import lotr.common.entity.npc.LOTREntityMountainTrollChieftain;
public class DamageEvent { public class DamageEvent {
public DamageSource source; public DamageSource source;
@ -27,12 +30,20 @@ public class DamageEvent {
public static Pair<DamageEvent, Boolean> run_events(DamageEvent event) { public static Pair<DamageEvent, Boolean> run_events(DamageEvent event) {
boolean cancel = false; boolean cancel = false;
World world = event.defender.worldObj;
cancel = (cancel || attack_block_task(event));
cancel = (cancel || fire_armor_repair_task(event));
cancel = (cancel || fix_hill_troll_chieftain_task(event));
return new Pair<>(event, cancel);
}
public static boolean attack_block_task(DamageEvent event) {
boolean cancel = false;
World world = event.defender.worldObj;
if (event.defender instanceof EntityPlayer && !event.source.isUnblockable()) { if (event.defender instanceof EntityPlayer && !event.source.isUnblockable()) {
EntityPlayerMP player = (EntityPlayerMP) event.defender; EntityPlayerMP player = (EntityPlayerMP) event.defender;
ItemStack sword = player.getHeldItem(); ItemStack sword = player.getHeldItem();
if (!(event.attacker instanceof EntityLivingBase)) return new Pair<>(event, cancel); if (!(event.attacker instanceof EntityLivingBase)) return cancel;
EntityLivingBase attacker = (EntityLivingBase)event.attacker; EntityLivingBase attacker = (EntityLivingBase)event.attacker;
float playerYaw = player.getRotationYawHead(); float playerYaw = player.getRotationYawHead();
@ -72,6 +83,10 @@ public class DamageEvent {
} }
} }
} }
return cancel;
}
public static boolean fire_armor_repair_task(DamageEvent event) {
boolean cancel = false;
if (event.source.isFireDamage() && event.defender instanceof EntityPlayer) { if (event.source.isFireDamage() && event.defender instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.defender; EntityPlayer player = (EntityPlayer) event.defender;
for (ItemStack armor : player.inventory.armorInventory) { for (ItemStack armor : player.inventory.armorInventory) {
@ -88,6 +103,22 @@ public class DamageEvent {
} }
} }
} }
return new Pair<>(event, cancel); return cancel;
}
public static boolean fix_hill_troll_chieftain_task(DamageEvent event) {
boolean cancel = false;
if (event.defender instanceof LOTREntityMountainTrollChieftain) {
LOTREntityMountainTrollChieftain defender = (LOTREntityMountainTrollChieftain)event.defender;
if (defender.getTrollArmorLevel() > 0)
if (defender.getHealth() - event.damage <= 0.0F) {
((IBossEntity)(Object)(defender)).change_phase();
cancel = true;
}
}
return cancel;
}
public static boolean template_task(DamageEvent event) {
boolean cancel = false;
return cancel;
} }
} }

@ -0,0 +1,5 @@
package com.zivilon.cinder_loe.util;
public interface IBossEntity {
public void change_phase();
}

@ -63,7 +63,8 @@
"MixinLOTRItemMug", "MixinLOTRItemMug",
"MixinLOTREntityHorse", "MixinLOTREntityHorse",
"MixinLOTRGuiMap", "MixinLOTRGuiMap",
"MixinLOTREntityAIOrcSkirmish" "MixinLOTREntityAIOrcSkirmish",
"MixinLOTREntityMountainTrollChieftain"
], ],
"client": [] "client": []
} }

Loading…
Cancel
Save