Search in sources :

Example 16 with ISoldier

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();
}
Also used : GameProfile(com.mojang.authlib.GameProfile) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) ISoldier(de.sanandrew.mods.claysoldiers.api.soldier.ISoldier) ItemStack(net.minecraft.item.ItemStack)

Example 17 with ISoldier

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);
            }
        }
    }
}
Also used : ISoldier(de.sanandrew.mods.claysoldiers.api.soldier.ISoldier)

Example 18 with ISoldier

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);
            }
        }
    }
}
Also used : ISoldier(de.sanandrew.mods.claysoldiers.api.soldier.ISoldier)

Example 19 with ISoldier

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);
                }
            }
        }
    }
}
Also used : IMob(net.minecraft.entity.monster.IMob) ISoldier(de.sanandrew.mods.claysoldiers.api.soldier.ISoldier) SubscribeEvent(net.minecraftforge.fml.common.eventhandler.SubscribeEvent)

Aggregations

ISoldier (de.sanandrew.mods.claysoldiers.api.soldier.ISoldier)19 ISoldierUpgradeInst (de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgradeInst)7 EnumDyeColor (net.minecraft.item.EnumDyeColor)3 ItemStack (net.minecraft.item.ItemStack)3 EnumUpgradeType (de.sanandrew.mods.claysoldiers.api.soldier.upgrade.EnumUpgradeType)2 EntityCreature (net.minecraft.entity.EntityCreature)2 SubscribeEvent (net.minecraftforge.fml.common.eventhandler.SubscribeEvent)2 GameProfile (com.mojang.authlib.GameProfile)1 CsmConstants (de.sanandrew.mods.claysoldiers.api.CsmConstants)1 ISoldierRender (de.sanandrew.mods.claysoldiers.api.client.soldier.ISoldierRender)1 EnumUpgFunctions (de.sanandrew.mods.claysoldiers.api.soldier.upgrade.EnumUpgFunctions)1 ISoldierUpgrade (de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgrade)1 UpgradeFunctions (de.sanandrew.mods.claysoldiers.api.soldier.upgrade.UpgradeFunctions)1 ModelGoggleBand (de.sanandrew.mods.claysoldiers.client.model.accessory.ModelGoggleBand)1 Upgrades (de.sanandrew.mods.claysoldiers.registry.upgrade.Upgrades)1 ClaySoldiersMod (de.sanandrew.mods.claysoldiers.util.ClaySoldiersMod)1 EnumParticle (de.sanandrew.mods.claysoldiers.util.EnumParticle)1 ColorObj (de.sanandrew.mods.sanlib.lib.ColorObj)1 RenderUtils (de.sanandrew.mods.sanlib.lib.client.util.RenderUtils)1 MiscUtils (de.sanandrew.mods.sanlib.lib.util.MiscUtils)1