отоброжение
MJaroslav написал(а):Я, конечно, сейчас заберу возможность людям заработать, но уже есть подобные модификации. А названия аля 'Death Counter', etc. Вскрыть их код, думаю, несложно.
MJaroslav написал(а):Я, конечно, сейчас заберу возможность людям заработать, но уже есть подобные модификации. А названия аля 'Death Counter', etc. Вскрыть их код, думаю, несложно.
Напиши. Разбогатеешь на 250 рублей.Doc написал(а):За пару минут можно такое написать. (Ну мааааксимум час)
Doc написал(а):Создаешь IEEP для игрока.
В death эвенте чекаешь, что убил и убит игрок.
Добавляешь тому, кто убил + 1.
Для оверлея - просто выводишь число из IEEP.
Синхронизация - эвент на 2х сторонах, тогда синхронизацию не нужно +
+ когда заходишь отправлять на клиент число.
За пару минут можно такое написать. (Ну мааааксимум час)
Лол, что? При изменении счетчика убийств нужно слать пакет на клиент, и событие связанное с убиством срабатывает на серверной части, на клиенте не нужно...Doc написал(а):Синхронизация - эвент на 2х сторонах, тогда синхронизацию не нужно +
@SubscribeEvent
public void drawText(RenderGameOverlayEvent.Post event) {
switch(event.type) {
case TEXT:
String text = StatCollector.translateToLocal(StatList.playerKillsStat.statId) + ": " + mc.thePlayer.getStatFileWriter().writeStat(StatList.playerKillsStat) + ".";
mc.fontRenderer.drawStringWithShadow(text,
event.resolution.getScaledWidth() - mc.fontRenderer.getStringWidth(text),
0, 0xFFFFFF);
break;
default:break;
}
}
@SubscribeEvent
public void sendInDeathPlayer(LivingDeathEvent event) {
Entity from = event.source.getSourceOfDamage();//Кто убил.
EntityLivingBase to = event.entityLiving;//Кого убили.
if (from instanceof EntityPlayer && to instanceof EntityPlayer) {
mc.getNetHandler().addToSendQueue(new C16PacketClientStatus(C16PacketClientStatus.EnumState.REQUEST_STATS));
}
Пожалуйста.MrKrabik написал(а):Doc написал(а):Создаешь IEEP для игрока.
В death эвенте чекаешь, что убил и убит игрок.
Добавляешь тому, кто убил + 1.
Для оверлея - просто выводишь число из IEEP.
Синхронизация - эвент на 2х сторонах, тогда синхронизацию не нужно +
+ когда заходишь отправлять на клиент число.
За пару минут можно такое написать. (Ну мааааксимум час)
Ну напиши
public class CountPlayerKillsIEEP implements IExtendedEntityProperties {
private static final String TAG = "CountPlayerKills";
int playerKills = 0;
@Override
public void init(Entity entity, World world) {}
public static void reg(EntityPlayer entity) {
entity.registerExtendedProperties(TAG, new CountPlayerKillsIEEP());
}
public static CountPlayerKillsIEEP get(EntityPlayer entity) {
return (CountPlayerKillsIEEP)entity.getExtendedProperties(TAG);
}
public void killedPlayer() {
++playerKills;
}
public void setPlayerKills(int playerKills) {
this.playerKills = playerKills;;
}
public int getPlayerKills() {
return playerKills;
}
@Override
public void saveNBTData(NBTTagCompound nbt) {
if (playerKills > 0)
nbt.setInteger("PlayerKills", playerKills);
}
@Override
public void loadNBTData(NBTTagCompound nbt) {
if (nbt.hasKey("PlayerKills", NBT.TAG_INT))
playerKills = nbt.getInteger("PlayerKills");
}
}
@SubscribeEvent
public void addEntityConstructing(EntityEvent.EntityConstructing event) {
if (event.entity instanceof EntityPlayer) {
if (CountPlayerKillsIEEP.get((EntityPlayer)event.entity) == null)
CountPlayerKillsIEEP.reg((EntityPlayer)event.entity);
}
}
@SubscribeEvent
public void sendInDeathPlayer(LivingDeathEvent event) {
Entity from = event.source.getSourceOfDamage();//Кто убил.
EntityLivingBase to = event.entityLiving;//Кого убили.
if (from instanceof EntityPlayerMP && to instanceof EntityPlayer) {
CountPlayerKillsIEEP cpk = CountPlayerKillsIEEP.get((EntityPlayerMP)from);
if (cpk == null) return;
cpk.killedPlayer();
MessageCountPlayerKills message = new MessageCountPlayerKills();
message.playerKills = cpk.getPlayerKills();
SMTCommon.network.sendTo(message, (EntityPlayerMP)from);
}
}
@SubscribeEvent
public void sendInJoinWorld(EntityJoinWorldEvent event) {
if (event.entity instanceof EntityPlayerMP) {
CountPlayerKillsIEEP cpk = CountPlayerKillsIEEP.get((EntityPlayerMP)event.entity);
if (cpk == null) return;
MessageCountPlayerKills message = new MessageCountPlayerKills();
message.playerKills = cpk.getPlayerKills();
SMTCommon.network.sendTo(message, (EntityPlayerMP)event.entity);
}
}
static Minecraft mc = Minecraft.getMinecraft();
@SubscribeEvent
public void drawText(RenderGameOverlayEvent.Post event) {
switch(event.type) {
case TEXT:
CountPlayerKillsIEEP cpk = CountPlayerKillsIEEP.get(mc.thePlayer);
if (cpk == null) return;
String text = StatCollector.translateToLocal(StatList.playerKillsStat.statId) + ": " + cpk.getPlayerKills() + ".";
mc.fontRenderer.drawStringWithShadow(text,
event.resolution.getScaledWidth() - mc.fontRenderer.getStringWidth(text),
0, 0xFFFFFF);
break;
default:break;
}
}
public class MessageCountPlayerKills implements IMessage {
public int playerKills;
public MessageCountPlayerKills() {}
@Override
public void toBytes(ByteBuf buf) {
buf.writeInt(playerKills);
}
@Override
public void fromBytes(ByteBuf buf) {
playerKills = buf.readInt();
}
public static class Handler implements IMessageHandler<MessageCountPlayerKills, IMessage> {
@Override
public IMessage onMessage(MessageCountPlayerKills packet, MessageContext message) {
if (message.side.isClient())
act(packet);
else
act(message.getServerHandler().playerEntity, packet);
return null;
}
@SideOnly(Side.CLIENT)
private void act(MessageCountPlayerKills packet) {
Minecraft mc = Minecraft.getMinecraft();
CountPlayerKillsIEEP cpk = CountPlayerKillsIEEP.get(mc.thePlayer);
if (cpk == null) return;
cpk.setPlayerKills(packet.playerKills);
}
private void act(EntityPlayerMP player, MessageCountPlayerKills packet) {
CountPlayerKillsIEEP cpk = CountPlayerKillsIEEP.get(player);
if (cpk == null) return;
cpk.setPlayerKills(packet.playerKills);
}
}
}
public static SimpleNetworkWrapper network;
@Mod.EventHandler
public void preInit(FMLPreInitializationEvent event) {
network = NetworkRegistry.INSTANCE.newSimpleChannel(MODID);
network.registerMessage(MessageCountPlayerKills.Handler.class, MessageCountPlayerKills.class, id, Side.CLIENT);
network.registerMessage(MessageCountPlayerKills.Handler.class, MessageCountPlayerKills.class, id++, Side.SERVER);
}
timaxa007 написал(а):Если использовать ванильное сохранение и отправку пакета:
[video=youtube]https://youtu.be/PatYBmbk9KY[/video]Код:@SubscribeEvent public void drawText(RenderGameOverlayEvent.Post event) { switch(event.type) { case TEXT: String text = StatCollector.translateToLocal(StatList.playerKillsStat.statId) + ": " + mc.thePlayer.getStatFileWriter().writeStat(StatList.playerKillsStat) + "."; mc.fontRenderer.drawStringWithShadow(text, event.resolution.getScaledWidth() - mc.fontRenderer.getStringWidth(text), 0, 0xFFFFFF); break; default:break; } } @SubscribeEvent public void sendInDeathPlayer(LivingDeathEvent event) { Entity from = event.source.getSourceOfDamage();//Кто убил. EntityLivingBase to = event.entityLiving;//Кого убили. if (from instanceof EntityPlayer && to instanceof EntityPlayer) { mc.getNetHandler().addToSendQueue(new C16PacketClientStatus(C16PacketClientStatus.EnumState.REQUEST_STATS)); }
Только вот после перезахода значение на клиенте будет равна нулю и обновляется если убить игрока или войти в GUI статистики игрока. Пробовал использовать PlayerLoggedInEvent и EntityJoinWorldEvent отправляя пакет C16PacketClientStatus, то получал краш, так что здесь нужно отправлять свой пакет (или свой IMessage). Так как пакет C16PacketClientStatus запрашивает всю статистику игрока (а там много значений).
Пожалуйста.MrKrabik написал(а):Doc написал(а):Создаешь IEEP для игрока.
В death эвенте чекаешь, что убил и убит игрок.
Добавляешь тому, кто убил + 1.
Для оверлея - просто выводишь число из IEEP.
Синхронизация - эвент на 2х сторонах, тогда синхронизацию не нужно +
+ когда заходишь отправлять на клиент число.
За пару минут можно такое написать. (Ну мааааксимум час)
Ну напиши
Код:public class CountPlayerKillsIEEP implements IExtendedEntityProperties { private static final String TAG = "CountPlayerKills"; int playerKills = 0; @Override public void init(Entity entity, World world) {} public static void reg(EntityPlayer entity) { entity.registerExtendedProperties(TAG, new CountPlayerKillsIEEP()); } public static CountPlayerKillsIEEP get(EntityPlayer entity) { return (CountPlayerKillsIEEP)entity.getExtendedProperties(TAG); } public void killedPlayer() { ++playerKills; } public void setPlayerKills(int playerKills) { this.playerKills = playerKills;; } public int getPlayerKills() { return playerKills; } @Override public void saveNBTData(NBTTagCompound nbt) { if (playerKills > 0) nbt.setInteger("PlayerKills", playerKills); } @Override public void loadNBTData(NBTTagCompound nbt) { if (nbt.hasKey("PlayerKills", NBT.TAG_INT)) playerKills = nbt.getInteger("PlayerKills"); } }
Код:@SubscribeEvent public void addEntityConstructing(EntityEvent.EntityConstructing event) { if (event.entity instanceof EntityPlayer) { if (CountPlayerKillsIEEP.get((EntityPlayer)event.entity) == null) CountPlayerKillsIEEP.reg((EntityPlayer)event.entity); } } @SubscribeEvent public void sendInDeathPlayer(LivingDeathEvent event) { Entity from = event.source.getSourceOfDamage();//Кто убил. EntityLivingBase to = event.entityLiving;//Кого убили. if (from instanceof EntityPlayerMP && to instanceof EntityPlayer) { CountPlayerKillsIEEP cpk = CountPlayerKillsIEEP.get((EntityPlayerMP)from); if (cpk == null) return; cpk.killedPlayer(); MessageCountPlayerKills message = new MessageCountPlayerKills(); message.playerKills = cpk.getPlayerKills(); SMTCommon.network.sendTo(message, (EntityPlayerMP)from); } } @SubscribeEvent public void sendInJoinWorld(EntityJoinWorldEvent event) { if (event.entity instanceof EntityPlayerMP) { CountPlayerKillsIEEP cpk = CountPlayerKillsIEEP.get((EntityPlayerMP)event.entity); if (cpk == null) return; MessageCountPlayerKills message = new MessageCountPlayerKills(); message.playerKills = cpk.getPlayerKills(); SMTCommon.network.sendTo(message, (EntityPlayerMP)event.entity); } }
Код:static Minecraft mc = Minecraft.getMinecraft(); @SubscribeEvent public void drawText(RenderGameOverlayEvent.Post event) { switch(event.type) { case TEXT: CountPlayerKillsIEEP cpk = CountPlayerKillsIEEP.get(mc.thePlayer); if (cpk == null) return; String text = StatCollector.translateToLocal(StatList.playerKillsStat.statId) + ": " + cpk.getPlayerKills() + "."; mc.fontRenderer.drawStringWithShadow(text, event.resolution.getScaledWidth() - mc.fontRenderer.getStringWidth(text), 0, 0xFFFFFF); break; default:break; } }
SMTCommon - главный классКод:public class MessageCountPlayerKills implements IMessage { public int playerKills; public MessageCountPlayerKills() {} @Override public void toBytes(ByteBuf buf) { buf.writeInt(playerKills); } @Override public void fromBytes(ByteBuf buf) { playerKills = buf.readInt(); } public static class Handler implements IMessageHandler<MessageCountPlayerKills, IMessage> { @Override public IMessage onMessage(MessageCountPlayerKills packet, MessageContext message) { if (message.side.isClient()) act(packet); else act(message.getServerHandler().playerEntity, packet); return null; } @SideOnly(Side.CLIENT) private void act(MessageCountPlayerKills packet) { Minecraft mc = Minecraft.getMinecraft(); CountPlayerKillsIEEP cpk = CountPlayerKillsIEEP.get(mc.thePlayer); if (cpk == null) return; cpk.setPlayerKills(packet.playerKills); } private void act(EntityPlayerMP player, MessageCountPlayerKills packet) { CountPlayerKillsIEEP cpk = CountPlayerKillsIEEP.get(player); if (cpk == null) return; cpk.setPlayerKills(packet.playerKills); } } }
Код:public static SimpleNetworkWrapper network; @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { network = NetworkRegistry.INSTANCE.newSimpleChannel(MODID); network.registerMessage(MessageCountPlayerKills.Handler.class, MessageCountPlayerKills.class, id, Side.CLIENT); network.registerMessage(MessageCountPlayerKills.Handler.class, MessageCountPlayerKills.class, id++, Side.SERVER); }
timaxa007 написал(а):Если использовать ванильное сохранение и отправку пакета:
[video=youtube]https://youtu.be/PatYBmbk9KY[/video]Код:@SubscribeEvent public void drawText(RenderGameOverlayEvent.Post event) { switch(event.type) { case TEXT: String text = StatCollector.translateToLocal(StatList.playerKillsStat.statId) + ": " + mc.thePlayer.getStatFileWriter().writeStat(StatList.playerKillsStat) + "."; mc.fontRenderer.drawStringWithShadow(text, event.resolution.getScaledWidth() - mc.fontRenderer.getStringWidth(text), 0, 0xFFFFFF); break; default:break; } } @SubscribeEvent public void sendInDeathPlayer(LivingDeathEvent event) { Entity from = event.source.getSourceOfDamage();//Кто убил. EntityLivingBase to = event.entityLiving;//Кого убили. if (from instanceof EntityPlayer && to instanceof EntityPlayer) { mc.getNetHandler().addToSendQueue(new C16PacketClientStatus(C16PacketClientStatus.EnumState.REQUEST_STATS)); }
Только вот после перезахода значение на клиенте будет равна нулю и обновляется если убить игрока или войти в GUI статистики игрока. Пробовал использовать PlayerLoggedInEvent и EntityJoinWorldEvent отправляя пакет C16PacketClientStatus, то получал краш, так что здесь нужно отправлять свой пакет (или свой IMessage). Так как пакет C16PacketClientStatus запрашивает всю статистику игрока (а там много значений).
Пожалуйста.MrKrabik написал(а):Doc написал(а):Создаешь IEEP для игрока.
В death эвенте чекаешь, что убил и убит игрок.
Добавляешь тому, кто убил + 1.
Для оверлея - просто выводишь число из IEEP.
Синхронизация - эвент на 2х сторонах, тогда синхронизацию не нужно +
+ когда заходишь отправлять на клиент число.
За пару минут можно такое написать. (Ну мааааксимум час)
Ну напиши
Код:public class CountPlayerKillsIEEP implements IExtendedEntityProperties { private static final String TAG = "CountPlayerKills"; int playerKills = 0; @Override public void init(Entity entity, World world) {} public static void reg(EntityPlayer entity) { entity.registerExtendedProperties(TAG, new CountPlayerKillsIEEP()); } public static CountPlayerKillsIEEP get(EntityPlayer entity) { return (CountPlayerKillsIEEP)entity.getExtendedProperties(TAG); } public void killedPlayer() { ++playerKills; } public void setPlayerKills(int playerKills) { this.playerKills = playerKills;; } public int getPlayerKills() { return playerKills; } @Override public void saveNBTData(NBTTagCompound nbt) { if (playerKills > 0) nbt.setInteger("PlayerKills", playerKills); } @Override public void loadNBTData(NBTTagCompound nbt) { if (nbt.hasKey("PlayerKills", NBT.TAG_INT)) playerKills = nbt.getInteger("PlayerKills"); } }
Код:@SubscribeEvent public void addEntityConstructing(EntityEvent.EntityConstructing event) { if (event.entity instanceof EntityPlayer) { if (CountPlayerKillsIEEP.get((EntityPlayer)event.entity) == null) CountPlayerKillsIEEP.reg((EntityPlayer)event.entity); } } @SubscribeEvent public void sendInDeathPlayer(LivingDeathEvent event) { Entity from = event.source.getSourceOfDamage();//Кто убил. EntityLivingBase to = event.entityLiving;//Кого убили. if (from instanceof EntityPlayerMP && to instanceof EntityPlayer) { CountPlayerKillsIEEP cpk = CountPlayerKillsIEEP.get((EntityPlayerMP)from); if (cpk == null) return; cpk.killedPlayer(); MessageCountPlayerKills message = new MessageCountPlayerKills(); message.playerKills = cpk.getPlayerKills(); SMTCommon.network.sendTo(message, (EntityPlayerMP)from); } } @SubscribeEvent public void sendInJoinWorld(EntityJoinWorldEvent event) { if (event.entity instanceof EntityPlayerMP) { CountPlayerKillsIEEP cpk = CountPlayerKillsIEEP.get((EntityPlayerMP)event.entity); if (cpk == null) return; MessageCountPlayerKills message = new MessageCountPlayerKills(); message.playerKills = cpk.getPlayerKills(); SMTCommon.network.sendTo(message, (EntityPlayerMP)event.entity); } }
Код:static Minecraft mc = Minecraft.getMinecraft(); @SubscribeEvent public void drawText(RenderGameOverlayEvent.Post event) { switch(event.type) { case TEXT: CountPlayerKillsIEEP cpk = CountPlayerKillsIEEP.get(mc.thePlayer); if (cpk == null) return; String text = StatCollector.translateToLocal(StatList.playerKillsStat.statId) + ": " + cpk.getPlayerKills() + "."; mc.fontRenderer.drawStringWithShadow(text, event.resolution.getScaledWidth() - mc.fontRenderer.getStringWidth(text), 0, 0xFFFFFF); break; default:break; } }
SMTCommon - главный классКод:public class MessageCountPlayerKills implements IMessage { public int playerKills; public MessageCountPlayerKills() {} @Override public void toBytes(ByteBuf buf) { buf.writeInt(playerKills); } @Override public void fromBytes(ByteBuf buf) { playerKills = buf.readInt(); } public static class Handler implements IMessageHandler<MessageCountPlayerKills, IMessage> { @Override public IMessage onMessage(MessageCountPlayerKills packet, MessageContext message) { if (message.side.isClient()) act(packet); else act(message.getServerHandler().playerEntity, packet); return null; } @SideOnly(Side.CLIENT) private void act(MessageCountPlayerKills packet) { Minecraft mc = Minecraft.getMinecraft(); CountPlayerKillsIEEP cpk = CountPlayerKillsIEEP.get(mc.thePlayer); if (cpk == null) return; cpk.setPlayerKills(packet.playerKills); } private void act(EntityPlayerMP player, MessageCountPlayerKills packet) { CountPlayerKillsIEEP cpk = CountPlayerKillsIEEP.get(player); if (cpk == null) return; cpk.setPlayerKills(packet.playerKills); } } }
Код:public static SimpleNetworkWrapper network; @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { network = NetworkRegistry.INSTANCE.newSimpleChannel(MODID); network.registerMessage(MessageCountPlayerKills.Handler.class, MessageCountPlayerKills.class, id, Side.CLIENT); network.registerMessage(MessageCountPlayerKills.Handler.class, MessageCountPlayerKills.class, id++, Side.SERVER); }
Это id в int типе. Если у тебя нету регистрации этих сообщений, то обычно начинать от 0.MrKrabik написал(а):Не понимает id и id++ нету стринга!
Да, опять забыл про Эвент PlayerEvent.Clone:MrKrabik написал(а):При смерти cтатистика очищается
@SubscribeEvent
public void cloneCountPlayerKills(PlayerEvent.Clone event) {
CountPlayerKillsIEEP cpk = CountPlayerKillsIEEP.get((EntityPlayer)event.original);
if (cpk == null) return;
CountPlayerKillsIEEP new_cpk = CountPlayerKillsIEEP.get((EntityPlayer)event.entityPlayer);
if (new_cpk == null) return;
new_cpk.setPlayerKills(cpk.getPlayerKills());
}
public class CountZombieKillsIEEP implements IExtendedEntityProperties {
private static final String TAG = "CountzombieKills";
public int zombieKills = 0;
@Override
public void init(Entity entity, World world) {}
public static void reg(EntityZombie entity) {
entity.registerExtendedProperties(TAG, new CountZombieKillsIEEP());
}
public static CountZombieKillsIEEP get(EntityPlayer entity) {
return (CountZombieKillsIEEP)entity.getExtendedProperties(TAG);
}
public void killedPlayer() {
++zombieKills;
}
public void setzombieKills(int zombieKills) {
this.zombieKills = zombieKills;;
}
public int getzombieKills() {
return zombieKills;
}
@Override
public void saveNBTData(NBTTagCompound nbt) {
if (zombieKills > 0)
nbt.setInteger("ZombieKills", zombieKills);
}
@Override
public void loadNBTData(NBTTagCompound nbt) {
if (nbt.hasKey("ZombieKills", NBT.TAG_INT))
zombieKills = nbt.getInteger("ZombieKills");
}
public void setZombieKills(int zombieKills) {
// TODO Auto-generated method stub
}
public static Object get(EntityZombie entity) {
// TODO Auto-generated method stub
return null;
}
}
public class MessageCountZombieKills implements IMessage {
public int zombieKills;
public MessageCountZombieKills() {}
@Override
public void toBytes(ByteBuf buf) {
buf.writeInt(zombieKills);
}
@Override
public void fromBytes(ByteBuf buf) {
zombieKills = buf.readInt();
}
public static class Handler implements IMessageHandler<MessageCountZombieKills, IMessage> {
@Override
public IMessage onMessage(MessageCountZombieKills packet, MessageContext message) {
if (message.side.isClient())
act(packet);
else
act(message.getServerHandler().playerEntity, packet);
return null;
}
@SideOnly(Side.CLIENT)
private void act(MessageCountZombieKills packet) {
Minecraft mc = Minecraft.getMinecraft();
CountZombieKillsIEEP cpk = CountZombieKillsIEEP.get(mc.thePlayer);
if (cpk == null) return;
cpk.setzombieKills(packet.zombieKills);
}
private void act(EntityPlayerMP player, MessageCountZombieKills packet) {
CountZombieKillsIEEP cpk = CountZombieKillsIEEP.get(player);
if (cpk == null) return;
cpk.setzombieKills(packet.zombieKills);
}
}
}
@SubscribeEvent
public void addEntityConstructing1(EntityEvent.EntityConstructing event) {
if (event.entity instanceof EntityZombie) {
if (CountZombieKillsIEEP.get((EntityZombie)event.entity) == null)
CountZombieKillsIEEP.reg((EntityZombie)event.entity);
}
}
@SubscribeEvent
public void sendInDeathPlayer1(LivingDeathEvent event) {
Entity from = event.source.getSourceOfDamage();//Кто убил.
EntityLivingBase to = event.entityLiving;//Кого убили.
if (from instanceof EntityPlayerMP && to instanceof EntityZombie) {
CountZombieKillsIEEP cpk = CountZombieKillsIEEP.get((EntityPlayerMP)from);
if (cpk == null) return;
cpk.killedPlayer();
MessageCountZombieKills message = new MessageCountZombieKills();
message.zombieKills = cpk.getzombieKills();
bestfoxy.network.sendTo(message, (EntityPlayerMP)from);
}
}
@SubscribeEvent
public void sendInJoinWorld1(EntityJoinWorldEvent event) {
if (event.entity instanceof EntityPlayerMP) {
CountZombieKillsIEEP cpk = CountZombieKillsIEEP.get((EntityPlayerMP)event.entity);
if (cpk == null) return;
MessageCountZombieKills message = new MessageCountZombieKills();
message.zombieKills = cpk.getzombieKills();
bestfoxy.network.sendTo(message, (EntityPlayerMP)event.entity);
}
}
@SubscribeEvent
public void cloneCountZombieKills(PlayerEvent.Clone event) {
CountZombieKillsIEEP cpk = CountZombieKillsIEEP.get((EntityPlayer)event.original);
if (cpk == null) return;
CountPlayerKillsIEEP new_cpk = CountPlayerKillsIEEP.get((EntityPlayer)event.entityPlayer);
if (new_cpk == null) return;
new_cpk.setPlayerKills(cpk.getzombieKills());
}
}