/**
* Copyright (c) Lambda Innovation, 2013-2015
* 本作品版权由Lambda Innovation所有。
* http://www.li-dev.cn/
*
* This project is open-source, and it is distributed under
* the terms of GNU General Public License. You can modify
* and distribute freely as long as you follow the license.
* 本项目是一个开源项目,且遵循GNU通用公共授权协议。
* 在遵照该协议的情况下,您可以自由传播和修改。
* http://www.gnu.org/licenses/gpl.html
*/
package cn.dawn47.mob.entity;
import cn.annoreg.core.RegWithName;
import cn.annoreg.core.Registrant;
import cn.annoreg.mc.RegEntity;
import cn.annoreg.mc.network.RegNetworkCall;
import cn.annoreg.mc.s11n.StorageOption.Data;
import cn.annoreg.mc.s11n.StorageOption.Instance;
import cn.annoreg.mc.s11n.StorageOption.Target;
import cn.dawn47.core.register.DWItems;
import cn.dawn47.mob.client.render.RendererBattleSoldier;
import cn.liutils.template.entity.LIEntityMob;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
/**
* @author WeAthFolD
*
*/
@Registrant
@RegEntity
@RegWithName("BattleSoldier")
@RegEntity.HasRender
public class EntityBattleSoldier extends LIEntityMob {
@RegEntity.Render
@SideOnly(Side.CLIENT)
public static RendererBattleSoldier renderer;
boolean isCharging = false;
boolean synced = false;
int weaponID = rand.nextInt(2);
public int texID = rand.nextInt(3);
int reqTicker = 10;
public EntityBattleSoldier(World world) {
super(world);
updateWeapon();
}
@Override
public void onUpdate() {
super.onUpdate();
if(worldObj.isRemote) {
updateClient();
} else {
}
}
@SideOnly(Side.CLIENT)
private void updateClient() {
if(!synced && reqTicker++ == 10) {
req(Minecraft.getMinecraft().thePlayer);
reqTicker = 0;
}
}
@Override
protected Item getDropItem() {
return null;
}
private void updateServer() {
}
@Override
public void writeToNBT(NBTTagCompound tag) {
super.writeToNBT(tag);
tag.setInteger("weapon", weaponID);
}
@Override
public void readFromNBT(NBTTagCompound tag) {
super.readFromNBT(tag);
weaponID = tag.getInteger("weapon");
}
@RegNetworkCall(side = Side.SERVER)
private void req(@Instance EntityPlayer player) {
get(player, weaponID);
}
@RegNetworkCall(side = Side.CLIENT)
private void get(@Target EntityPlayer player, @Data Integer wid) {
weaponID = wid;
updateWeapon();
synced = true;
}
private void updateWeapon() {
this.setCurrentItemOrArmor(0, new ItemStack(weaponID == 0 ? DWItems.solCrowbar : DWItems.solAxe));
}
@Override
protected double getMaxHealth2() {
return 15;
}
@Override
protected double getFollowRange() {
return 10;
}
@Override
protected double getMoveSpeed() {
return 2.4;
}
@Override
protected double getKnockBackResistance() {
return 5;
}
@Override
protected double getAttackDamage() {
return 4;
}
@Override
public ResourceLocation getTexture() {
return null;
}
}