Search in sources :

Example 1 with ISoldierEffect

use of de.sanandrew.mods.claysoldiers.api.soldier.effect.ISoldierEffect in project ClaySoldiersMod by SanAndreasP.

the class EntityClaySoldier method addEffect.

@Override
public ISoldierEffectInst addEffect(ISoldierEffect effect, int duration) {
    if (effect == null) {
        return null;
    }
    ISoldierEffectInst effInst = new SoldierEffect(effect, duration);
    this.addEffectInternal(effInst);
    effect.onAdded(this, effInst);
    if (effect.syncData() && !this.world.isRemote) {
        this.sendSyncEffects(true, effInst);
    }
    return effInst;
}
Also used : ISoldierEffect(de.sanandrew.mods.claysoldiers.api.soldier.effect.ISoldierEffect) ISoldierEffectInst(de.sanandrew.mods.claysoldiers.api.soldier.effect.ISoldierEffectInst)

Example 2 with ISoldierEffect

use of de.sanandrew.mods.claysoldiers.api.soldier.effect.ISoldierEffect in project ClaySoldiersMod by SanAndreasP.

the class EntityClaySoldier method addEffectInternal.

private void addEffectInternal(ISoldierEffectInst instance) {
    ISoldierEffect effect = instance.getEffect();
    this.effectMap.put(effect, instance);
    if (effect.syncData()) {
        this.effectSyncList.add(instance);
    }
}
Also used : ISoldierEffect(de.sanandrew.mods.claysoldiers.api.soldier.effect.ISoldierEffect)

Example 3 with ISoldierEffect

use of de.sanandrew.mods.claysoldiers.api.soldier.effect.ISoldierEffect in project ClaySoldiersMod by SanAndreasP.

the class PacketSyncEffects method toBytes.

@Override
public void toBytes(ByteBuf buf) {
    buf.writeBoolean(this.add);
    buf.writeInt(this.soldierId);
    buf.writeInt(this.effects.length);
    for (int i = 0, max = this.effects.length; i < max; i++) {
        ISoldierEffect eff = this.effects[i];
        int duration = this.durations[i];
        UUID id = EffectRegistry.INSTANCE.getId(eff);
        ByteBufUtils.writeUTF8String(buf, MiscUtils.defIfNull(id, UuidUtils.EMPTY_UUID).toString());
        buf.writeInt(duration);
        if (this.add && this.effectNBT.containsKey(eff)) {
            eff.writeSyncData(buf, this.effectNBT.get(eff));
        }
    }
}
Also used : ISoldierEffect(de.sanandrew.mods.claysoldiers.api.soldier.effect.ISoldierEffect) UUID(java.util.UUID)

Example 4 with ISoldierEffect

use of de.sanandrew.mods.claysoldiers.api.soldier.effect.ISoldierEffect in project ClaySoldiersMod by SanAndreasP.

the class EntityClaySoldier method readEntityFromNBT.

@Override
public void readEntityFromNBT(NBTTagCompound compound) {
    super.readEntityFromNBT(compound);
    String teamId = compound.getString(NBTConstants.E_SOLDIER_TEAM);
    this.dataManager.set(TEAM_PARAM, UuidUtils.isStringUuid(teamId) ? UUID.fromString(teamId) : UuidUtils.EMPTY_UUID);
    this.dataManager.set(TEXTURE_TYPE_PARAM, compound.getByte(NBTConstants.E_SOLDIER_TEXTYPE));
    this.dataManager.set(TEXTURE_ID_PARAM, compound.getByte(NBTConstants.E_SOLDIER_TEXID));
    if (compound.hasKey(NBTConstants.E_SOLDIER_DOLL, Constants.NBT.TAG_COMPOUND)) {
        this.doll = new ItemStack(compound.getCompoundTag(NBTConstants.E_SOLDIER_DOLL));
    }
    NBTTagList upgrades = compound.getTagList(NBTConstants.E_SOLDIER_UPGRADES, Constants.NBT.TAG_COMPOUND);
    for (int i = 0, max = upgrades.tagCount(); i < max; i++) {
        NBTTagCompound upgNbt = upgrades.getCompoundTagAt(i);
        String idStr = upgNbt.getString(NBTConstants.N_UPGRADE_ID);
        byte type = upgNbt.getByte(NBTConstants.N_UPGRADE_TYPE);
        if (UuidUtils.isStringUuid(idStr)) {
            ItemStack upgStack = new ItemStack(upgNbt.getCompoundTag(NBTConstants.N_UPGRADE_ITEM));
            ISoldierUpgrade upgrade = UpgradeRegistry.INSTANCE.getUpgrade(UUID.fromString(idStr));
            if (upgrade != null) {
                ISoldierUpgradeInst upgInst = new SoldierUpgrade(upgrade, EnumUpgradeType.VALUES[type], upgStack);
                upgInst.setNbtData(upgNbt.getCompoundTag(NBTConstants.N_UPGRADE_NBT));
                upgrade.onLoad(this, upgInst, upgNbt);
                this.addUpgradeInternal(upgInst);
            }
        }
    }
    NBTTagList effects = compound.getTagList(NBTConstants.E_SOLDIER_EFFECTS, Constants.NBT.TAG_COMPOUND);
    for (int i = 0, max = effects.tagCount(); i < max; i++) {
        NBTTagCompound effectNbt = effects.getCompoundTagAt(i);
        String idStr = effectNbt.getString(NBTConstants.N_EFFECT_ID);
        if (UuidUtils.isStringUuid(idStr)) {
            ISoldierEffect effect = EffectRegistry.INSTANCE.getEffect(UUID.fromString(idStr));
            if (effect != null) {
                ISoldierEffectInst effInst = new SoldierEffect(effect, effectNbt.getInteger(NBTConstants.N_EFFECT_DURATION));
                effInst.setNbtData(effectNbt.getCompoundTag(NBTConstants.N_EFFECT_NBT));
                effect.onLoad(this, effInst, effectNbt);
                this.addEffectInternal(effInst);
            }
        }
    }
    this.dwBooleans.readFromNbt(compound);
}
Also used : NBTTagList(net.minecraft.nbt.NBTTagList) ISoldierUpgrade(de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgrade) ISoldierEffect(de.sanandrew.mods.claysoldiers.api.soldier.effect.ISoldierEffect) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) ISoldierUpgradeInst(de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgradeInst) ItemStack(net.minecraft.item.ItemStack) ISoldierUpgrade(de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgrade) ISoldierEffect(de.sanandrew.mods.claysoldiers.api.soldier.effect.ISoldierEffect) ISoldierEffectInst(de.sanandrew.mods.claysoldiers.api.soldier.effect.ISoldierEffectInst)

Example 5 with ISoldierEffect

use of de.sanandrew.mods.claysoldiers.api.soldier.effect.ISoldierEffect in project ClaySoldiersMod by SanAndreasP.

the class PacketSyncEffects method applyEffects.

public void applyEffects(EntityClaySoldier soldier) {
    for (int i = 0, max = this.effects.length; i < max; i++) {
        ISoldierEffect eff = this.effects[i];
        int duration = this.durations[i];
        if (eff != null && this.add) {
            ISoldierEffectInst inst = soldier.addEffect(eff, duration);
            if (this.effectNBT.containsKey(eff)) {
                inst.setNbtData(this.effectNBT.get(eff));
            }
        } else {
            soldier.expireEffect(eff);
        }
    }
}
Also used : ISoldierEffect(de.sanandrew.mods.claysoldiers.api.soldier.effect.ISoldierEffect) ISoldierEffectInst(de.sanandrew.mods.claysoldiers.api.soldier.effect.ISoldierEffectInst)

Aggregations

ISoldierEffect (de.sanandrew.mods.claysoldiers.api.soldier.effect.ISoldierEffect)5 ISoldierEffectInst (de.sanandrew.mods.claysoldiers.api.soldier.effect.ISoldierEffectInst)3 ISoldierUpgrade (de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgrade)1 ISoldierUpgradeInst (de.sanandrew.mods.claysoldiers.api.soldier.upgrade.ISoldierUpgradeInst)1 UUID (java.util.UUID)1 ItemStack (net.minecraft.item.ItemStack)1 NBTTagCompound (net.minecraft.nbt.NBTTagCompound)1 NBTTagList (net.minecraft.nbt.NBTTagList)1