Search in sources :

Example 6 with ISoldierUpgradeInst

use of de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgradeInst in project ClaySoldiersMod by SanAndreasP.

the class SoldierDeathEventHandler method onLivingDeath.

@SubscribeEvent
public void onLivingDeath(LivingDeathEvent event) {
    if (event.getEntity() instanceof ISoldier && event.getSource().getTrueSource() instanceof ISoldier) {
        ISoldier dying = (ISoldier) event.getEntity();
        ISoldier attacker = (ISoldier) event.getSource().getTrueSource();
        if (attacker.hasUpgrade(Upgrades.MC_ENDERPEARL, EnumUpgradeType.MISC) && !dying.hasUpgrade(Upgrades.MC_ENDERPEARL, EnumUpgradeType.MISC) && !dying.hasUpgrade(Upgrades.MC_WHEATSEEDS, EnumUpgradeType.MISC)) {
            event.setCanceled(true);
            ISoldierUpgradeInst upgInst = attacker.getUpgradeInstance(Upgrades.MC_ENDERPEARL, EnumUpgradeType.MISC);
            upgInst.getUpgrade().onAttackSuccess(attacker, upgInst, dying.getEntity());
        }
    }
}
Also used : ISoldierUpgradeInst(de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgradeInst) ISoldier(de.sanandrew.mods.claysoldiers.api.soldier.ISoldier) SubscribeEvent(net.minecraftforge.fml.common.eventhandler.SubscribeEvent)

Example 7 with ISoldierUpgradeInst

use of de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgradeInst in project ClaySoldiersMod by SanAndreasP.

the class EntityProjectileEmerald method onPostHit.

@Override
public void onPostHit(Entity e, DamageSource dmgSource) {
    EnumDyeColor color = null;
    if (this.shooterCache instanceof ISoldier) {
        ISoldierUpgradeInst inst = ((ISoldier) this.shooterCache).getUpgradeInstance(Upgrades.MC_CONCRETEPOWDER, EnumUpgradeType.MISC);
        if (inst != null) {
            color = EnumDyeColor.byMetadata(inst.getNbtData().getInteger("color"));
        }
    }
    ClaySoldiersMod.proxy.setRenderLightningAt(e.posX, e.posY, e.posZ, color);
}
Also used : ISoldierUpgradeInst(de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgradeInst) ISoldier(de.sanandrew.mods.claysoldiers.api.soldier.ISoldier) EnumDyeColor(net.minecraft.item.EnumDyeColor)

Example 8 with ISoldierUpgradeInst

use of de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgradeInst in project ClaySoldiersMod by SanAndreasP.

the class LayerCape 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) {
        ISoldier soldier = (ISoldier) creature;
        boolean hasDiamond = soldier.hasUpgrade(Upgrades.MC_DIAMOND, EnumUpgradeType.MISC) || soldier.hasUpgrade(Upgrades.MC_DIAMONDBLOCK, EnumUpgradeType.MISC);
        if (hasDiamond || soldier.hasUpgrade(Upgrades.MC_PAPER, EnumUpgradeType.MISC)) {
            if (hasDiamond) {
                GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
                this.renderer.bindSoldierTexture(Resources.ENTITY_WEARABLE_CAPE_DIAMOND.resource);
            } else {
                ISoldierUpgradeInst clrUpg = soldier.getUpgradeInstance(Upgrades.MC_CONCRETEPOWDER, EnumUpgradeType.MISC);
                if (clrUpg != null) {
                    float[] clr = EnumDyeColor.byMetadata(clrUpg.getNbtData().getInteger("color")).getColorComponentValues();
                    GlStateManager.color(clr[0], clr[1], clr[2], 1.0F);
                } else {
                    GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
                }
                this.renderer.bindSoldierTexture(Resources.ENTITY_WEARABLE_CAPE_PAPER.resource);
            }
            GlStateManager.pushMatrix();
            GlStateManager.translate(0.0F, 0.0F, 0.125F);
            double dX = soldier.getChasingPosX(partialTicks) - (creature.prevPosX + (creature.posX - creature.prevPosX) * partialTicks);
            double dY = soldier.getChasingPosY(partialTicks) - (creature.prevPosY + (creature.posY - creature.prevPosY) * partialTicks);
            double dZ = soldier.getChasingPosZ(partialTicks) - (creature.prevPosZ + (creature.posZ - creature.prevPosZ) * partialTicks);
            float yaw = creature.prevRenderYawOffset + (creature.renderYawOffset - creature.prevRenderYawOffset) * partialTicks;
            double sinYaw = MathHelper.sin(yaw * 0.017453292F);
            double cosYaw = (-MathHelper.cos(yaw * 0.017453292F));
            float rotY = (float) dY * 10.0F;
            rotY = MathHelper.clamp(rotY, -6.0F, 32.0F);
            float rotX = (float) (dX * sinYaw + dZ * cosYaw) * 100.0F;
            float rotZ = (float) (dX * cosYaw - dZ * sinYaw) * 100.0F;
            if (rotX < 0.0F) {
                rotX = 0.0F;
            }
            float f4 = creature.prevRotationYaw + (creature.rotationYaw - creature.prevRotationYaw) * partialTicks;
            rotY = rotY + MathHelper.sin((creature.prevDistanceWalkedModified + (creature.distanceWalkedModified - creature.prevDistanceWalkedModified) * partialTicks) * 6.0F) * 32.0F * f4;
            if (creature.isSneaking()) {
                rotY += 25.0F;
            }
            GlStateManager.rotate(6.0F + rotX / 2.0F + rotY, 1.0F, 0.0F, 0.0F);
            GlStateManager.rotate(rotZ / 2.0F, 0.0F, 0.0F, 1.0F);
            GlStateManager.rotate(-rotZ / 2.0F, 0.0F, 1.0F, 0.0F);
            GlStateManager.rotate(180.0F, 0.0F, 1.0F, 0.0F);
            ModelCape.INSTANCE.renderCape();
            GlStateManager.popMatrix();
        }
    }
}
Also used : ISoldierUpgradeInst(de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgradeInst) ISoldier(de.sanandrew.mods.claysoldiers.api.soldier.ISoldier)

Example 9 with ISoldierUpgradeInst

use of de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgradeInst in project ClaySoldiersMod by SanAndreasP.

the class LayerGoggles 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;
    ISoldierUpgradeInst inst = soldier.getUpgradeInstance(Upgrades.MC_GLASS, EnumUpgradeType.MISC);
    if (inst != null) {
        GlStateManager.pushMatrix();
        this.renderer.getSoldierModel().bipedHead.postRender(scale);
        if (this.model.texture != null) {
            this.renderer.bindSoldierTexture(this.model.texture);
            this.model.render(scale);
        }
        ItemStack renderedStack = GLASS_NORMAL;
        if (inst.getNbtData().hasKey("color")) {
            EnumDyeColor clr = EnumDyeColor.byMetadata(inst.getNbtData().getByte("color"));
            renderedStack = GLASS_STAINED.computeIfAbsent(clr, newClr -> new ItemStack(Blocks.STAINED_GLASS, 1, newClr.getMetadata()));
        }
        RenderUtils.renderStackInWorld(renderedStack, 0.15D, -0.3D, -0.1825D, 0.0F, 0.0F, 0.0F, 0.375F);
        RenderUtils.renderStackInWorld(renderedStack, -0.15D, -0.3D, -0.1825D, 0.0F, 0.0F, 0.0F, 0.375F);
        GlStateManager.enableRescaleNormal();
        GlStateManager.popMatrix();
    }
}
Also used : Blocks(net.minecraft.init.Blocks) EnumMap(java.util.EnumMap) GlStateManager(net.minecraft.client.renderer.GlStateManager) ModelGoggleBand(de.sanandrew.mods.claysoldiers.client.model.accessory.ModelGoggleBand) LayerRenderer(net.minecraft.client.renderer.entity.layers.LayerRenderer) Upgrades(de.sanandrew.mods.claysoldiers.registry.upgrade.Upgrades) ItemStack(net.minecraft.item.ItemStack) ISoldier(de.sanandrew.mods.claysoldiers.api.soldier.ISoldier) ISoldierUpgradeInst(de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgradeInst) EnumDyeColor(net.minecraft.item.EnumDyeColor) EnumUpgradeType(de.sanandrew.mods.claysoldiers.api.soldier.upgrade.EnumUpgradeType) Side(net.minecraftforge.fml.relauncher.Side) Map(java.util.Map) RenderUtils(de.sanandrew.mods.sanlib.lib.client.util.RenderUtils) EntityCreature(net.minecraft.entity.EntityCreature) ISoldierRender(de.sanandrew.mods.claysoldiers.api.client.soldier.ISoldierRender) SideOnly(net.minecraftforge.fml.relauncher.SideOnly) ISoldierUpgradeInst(de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgradeInst) ISoldier(de.sanandrew.mods.claysoldiers.api.soldier.ISoldier) ItemStack(net.minecraft.item.ItemStack) EnumDyeColor(net.minecraft.item.EnumDyeColor)

Example 10 with ISoldierUpgradeInst

use of de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgradeInst in project ClaySoldiersMod by SanAndreasP.

the class LayerLeatherArmor 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_LEATHER, EnumUpgradeType.MISC)) {
        this.renderModel(this.modelLeatherArmor, scale);
    } else if (soldier.hasUpgrade(Upgrades.MC_RABBITHIDE, EnumUpgradeType.MISC)) {
        this.renderModel(this.modelRabbitHide, scale);
    }
    ISoldierUpgradeInst woolInst = soldier.getUpgradeInstance(Upgrades.EM_WOOL, EnumUpgradeType.ENHANCEMENT);
    if (woolInst != null) {
        ColorObj cObj = new ColorObj(EnumDyeColor.byMetadata(woolInst.getNbtData().getInteger("color")).getColorValue());
        GlStateManager.color(cObj.fRed(), cObj.fGreen(), cObj.fBlue());
        this.renderModel(this.modelPadding, scale);
        GlStateManager.color(1.0F, 1.0F, 1.0F);
    }
}
Also used : ISoldierUpgradeInst(de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgradeInst) ColorObj(de.sanandrew.mods.sanlib.lib.ColorObj) ISoldier(de.sanandrew.mods.claysoldiers.api.soldier.ISoldier)

Aggregations

ISoldierUpgradeInst (de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgradeInst)14 ISoldier (de.sanandrew.mods.claysoldiers.api.soldier.ISoldier)7 ISoldierUpgrade (de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgrade)5 ItemStack (net.minecraft.item.ItemStack)4 UpgradeEntry (de.sanandrew.mods.claysoldiers.registry.upgrade.UpgradeEntry)3 EnumDyeColor (net.minecraft.item.EnumDyeColor)3 EnumUpgradeType (de.sanandrew.mods.claysoldiers.api.soldier.upgrade.EnumUpgradeType)2 EntityCreature (net.minecraft.entity.EntityCreature)2 CsmConstants (de.sanandrew.mods.claysoldiers.api.CsmConstants)1 ISoldierRender (de.sanandrew.mods.claysoldiers.api.client.soldier.ISoldierRender)1 ISoldierEffect (de.sanandrew.mods.claysoldiers.api.soldier.effect.ISoldierEffect)1 ISoldierEffectInst (de.sanandrew.mods.claysoldiers.api.soldier.effect.ISoldierEffectInst)1 EnumUpgFunctions (de.sanandrew.mods.claysoldiers.api.soldier.upgrade.EnumUpgFunctions)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