use of de.sanandrew.mods.claysoldiers.api.soldier.ISoldier in project ClaySoldiersMod by SanAndreasP.
the class LayerSkull method doRenderLayer.
@Override
public void doRenderLayer(EntityCreature creature, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch, float scale) {
if (!(creature instanceof ISoldier)) {
return;
}
ISoldier soldier = (ISoldier) creature;
if (!soldier.hasUpgrade(Upgrades.MC_SKULL, EnumUpgradeType.MISC)) {
return;
}
ItemStack skullStack = new ItemStack(soldier.getUpgradeInstance(Upgrades.MC_SKULL, EnumUpgradeType.MISC).getNbtData().getCompoundTag("SkullItem"));
GameProfile profile = null;
GlStateManager.pushMatrix();
this.renderer.getSoldierModel().bipedHead.postRender(0.0625F);
float scaling = 1.1875F;
GlStateManager.scale(scaling, -scaling, -scaling);
if (skullStack.hasTagCompound()) {
NBTTagCompound nbt = skullStack.getTagCompound();
if (nbt.hasKey("SkullOwner", 10)) {
profile = NBTUtil.readGameProfileFromNBT(nbt.getCompoundTag("SkullOwner"));
} else if (nbt.hasKey("SkullOwner", 8)) {
String s = nbt.getString("SkullOwner");
if (!StringUtils.isBlank(s)) {
profile = TileEntitySkull.updateGameprofile(new GameProfile(null, s));
nbt.setTag("SkullOwner", NBTUtil.writeGameProfile(new NBTTagCompound(), profile));
}
}
}
TileEntitySkullRenderer.instance.renderSkull(-0.5F, 0.0F, -0.5F, EnumFacing.UP, 180.0F, skullStack.getMetadata(), profile, -1, limbSwing);
GlStateManager.popMatrix();
}
use of de.sanandrew.mods.claysoldiers.api.soldier.ISoldier in project ClaySoldiersMod by SanAndreasP.
the class UpgradeRedstone method onAttackSuccess.
@Override
public void onAttackSuccess(ISoldier<?> soldier, ISoldierUpgradeInst upgradeInst, Entity target) {
if (!soldier.getEntity().world.isRemote && target instanceof ISoldier) {
ISoldier targetS = (ISoldier) target;
if (!targetS.hasEffect(Effects.BLINDING_REDSTONE)) {
if (MiscUtils.RNG.randomBool() || !targetS.hasUpgrade(Upgrades.EM_IRONBLOCK, EnumUpgradeType.ENHANCEMENT)) {
targetS.addEffect(EffectRedstone.INSTANCE, 60);
targetS.getEntity().setAttackTarget(null);
}
soldier.getEntity().playSound(SoundEvents.BLOCK_FIRE_EXTINGUISH, 0.2F, ((MiscUtils.RNG.randomFloat() - MiscUtils.RNG.randomFloat()) * 0.7F + 1.0F) * 2.0F);
short uses = (short) (upgradeInst.getNbtData().getShort("uses") - 1);
if (uses < 1) {
soldier.destroyUpgrade(upgradeInst.getUpgrade(), upgradeInst.getUpgradeType(), false);
} else {
upgradeInst.getNbtData().setShort("uses", uses);
}
}
}
}
use of de.sanandrew.mods.claysoldiers.api.soldier.ISoldier in project ClaySoldiersMod by SanAndreasP.
the class UpgradeSlimeball method onAttackSuccess.
@Override
public void onAttackSuccess(ISoldier<?> soldier, ISoldierUpgradeInst upgradeInst, Entity target) {
if (!soldier.getEntity().world.isRemote && target instanceof ISoldier) {
ISoldier targetS = (ISoldier) target;
if (!targetS.hasEffect(Effects.STICKING_SLIMEBALL)) {
if (MiscUtils.RNG.randomBool() || !targetS.hasUpgrade(Upgrades.EM_IRONBLOCK, EnumUpgradeType.ENHANCEMENT)) {
targetS.addEffect(EffectSlimeball.INSTANCE, 60);
}
soldier.getEntity().playSound(SoundEvents.ENTITY_SLIME_ATTACK, 0.2F, ((MiscUtils.RNG.randomFloat() - MiscUtils.RNG.randomFloat()) * 0.7F + 1.0F) * 2.0F);
short uses = (short) (upgradeInst.getNbtData().getShort("uses") - 1);
if (uses < 1) {
soldier.destroyUpgrade(upgradeInst.getUpgrade(), upgradeInst.getUpgradeType(), false);
} else {
upgradeInst.getNbtData().setShort("uses", uses);
}
}
}
}
use of de.sanandrew.mods.claysoldiers.api.soldier.ISoldier in project ClaySoldiersMod by SanAndreasP.
the class SoldierTargetEnemyEventHandler method onTargetingNormal.
@SubscribeEvent
public void onTargetingNormal(SoldierTargetEnemyEvent event) {
if (event.attacker.hasEffect(Effects.BLINDING_REDSTONE) || event.attacker.hasUpgrade(Upgrades.BH_WHEAT, EnumUpgradeType.BEHAVIOR)) {
event.setResult(Event.Result.DENY);
} else {
boolean rotten = event.attacker.hasUpgrade(Upgrades.BH_ROTTENFLESH, EnumUpgradeType.BEHAVIOR);
if (rotten && (event.target instanceof IMob || event.attacker.hasUpgrade(Upgrades.MC_ENDERPEARL, EnumUpgradeType.MISC))) {
event.setResult(Event.Result.ALLOW);
}
if (event.target instanceof ISoldier) {
ISoldier tgtSoldier = (ISoldier) event.target;
if (event.attacker.hasUpgrade(Upgrades.MH_SPECKLEDMELON, EnumUpgradeType.MAIN_HAND)) {
boolean isTeam = event.attacker.getSoldierTeam() == tgtSoldier.getSoldierTeam() || event.attacker.hasUpgrade(Upgrades.BH_SPONGE, EnumUpgradeType.BEHAVIOR);
event.setResult(isTeam && event.target.getHealth() < event.target.getMaxHealth() * 0.25F ? Event.Result.ALLOW : Event.Result.DENY);
} else {
if (!event.attacker.hasUpgrade(Upgrades.MC_GLASS, EnumUpgradeType.MISC) && tgtSoldier.hasUpgrade(Upgrades.MC_EGG, EnumUpgradeType.MISC)) {
event.setResult(Event.Result.DENY);
}
if (event.autoTargeted && (event.attacker.hasUpgrade(Upgrades.BH_FERMSPIDEREYE, EnumUpgradeType.BEHAVIOR) || tgtSoldier.hasUpgrade(Upgrades.BH_SPONGE, EnumUpgradeType.BEHAVIOR) || event.attacker.hasUpgrade(Upgrades.BH_SPONGE, EnumUpgradeType.BEHAVIOR))) {
event.setResult(Event.Result.DENY);
}
if (event.attacker.hasUpgrade(Upgrades.MC_ENDERPEARL, EnumUpgradeType.MISC)) {
if (!((ISoldier) event.target).hasUpgrade(Upgrades.MC_ENDERPEARL, EnumUpgradeType.MISC)) {
event.setResult(Event.Result.ALLOW);
} else {
event.setResult(Event.Result.DENY);
}
}
if (event.attacker.hasUpgrade(Upgrades.BH_NETHERWART, EnumUpgradeType.BEHAVIOR)) {
event.setResult(Event.Result.ALLOW);
}
}
}
}
}
Aggregations