@SubscribeEvent public void onPlayerClone(PlayerEvent.Clone event) { EntityPlayer player = event.getEntityPlayer(); // Duplicate nutrition capability data on server INutrientManager nutritionOld = event.getOriginal().getCapability(NUTRITION_CAPABILITY, null); // Get old nutrition INutrientManager nutritionNew = player.getCapability(NUTRITION_CAPABILITY, null); // Get new nutrition nutritionNew.set(nutritionOld.get()); // Overwrite nutrition // On death, apply nutrition penalty // This is synced automatically in EventPlayerJoinWorld#EntityJoinWorldEvent if (event.isWasDeath()) { Map<Nutrient, Float> nutrition = player.getCapability(NUTRITION_CAPABILITY, null).get(); for (Nutrient nutrient : nutrition.keySet()) if (Config.deathPenaltyReset || nutrition.get(nutrient) > Config.deathPenaltyMin) // If reset is disabled, only reduce to cap when above its value player.getCapability(NUTRITION_CAPABILITY, null).set(nutrient, Math.max(Config.deathPenaltyMin, nutrition.get(nutrient) - Config.deathPenaltyLoss)); // Subtract death penalty from each nutrient, to cap } } }
@SubscribeEvent public void onPlayerClone(net.minecraftforge.event.entity.player.PlayerEvent.Clone event) { AndroidPlayer newAndroidPlayer = MOPlayerCapabilityProvider.GetAndroidCapability(event.getEntityPlayer()); AndroidPlayer oldAndroidPlayer = MOPlayerCapabilityProvider.GetAndroidCapability(event.getOriginal()); if (newAndroidPlayer != null && oldAndroidPlayer != null) { newAndroidPlayer.copy(oldAndroidPlayer); if (event.isWasDeath()) { newAndroidPlayer.onPlayerRespawn(); } newAndroidPlayer.sync(EnumSet.allOf(AndroidPlayer.DataType.class)); } OverdriveExtendedProperties newExtendedProperties = MOPlayerCapabilityProvider.GetExtendedCapability(event.getEntityPlayer()); OverdriveExtendedProperties oldExtenderDProperties = MOPlayerCapabilityProvider.GetExtendedCapability(event.getOriginal()); if (newExtendedProperties != null && oldExtenderDProperties != null) { newExtendedProperties.copy(oldExtenderDProperties); newExtendedProperties.sync(EnumSet.allOf(PlayerQuestData.DataType.class)); } }
@SubscribeEvent (priority = EventPriority.HIGH) public void handlePlayerCloneEvent(PlayerEvent.Clone event) { if (!event.isWasDeath()) { return;
@SubscribeEvent(priority = EventPriority.LOWEST) public static void onPlayerCloneLast(PlayerEvent.Clone evt) { if (!evt.isWasDeath() || evt.isCanceled()) { return;
@SubscribeEvent(priority = EventPriority.HIGHEST) public static void onPlayerClone(PlayerEvent.Clone evt) { if (!evt.isWasDeath() || evt.isCanceled()) { return;
@SubscribeEvent(priority = EventPriority.LOWEST) public void onClonePlayer(PlayerEvent.Clone event) { if (event.isWasDeath()) { if (!event.getOriginal().getEntityWorld().getGameRules().getBoolean("keepInventory")) { if (event.getOriginal().hasCapability(PlayerDeathLocationCapability.CAPABILITY_PLAYER_DEATH_LOCATION, null)) { IPlayerDeathLocationCapability cap = event.getOriginal().getCapability(PlayerDeathLocationCapability.CAPABILITY_PLAYER_DEATH_LOCATION, null); ItemStack stack = new ItemStack(ModItems.DEATH_COMPASS); if (!stack.hasTagCompound()) stack.setTagCompound(new NBTTagCompound()); stack.getTagCompound().setInteger("dimID", cap.getGraveDimension()); stack.getTagCompound().setString("dimName", cap.getGraveDimensionName()); stack.getTagCompound().setInteger("homeX", cap.getGraveLocationX()); stack.getTagCompound().setInteger("homeZ", cap.getGraveLocationZ()); stack.getTagCompound().setString("deathTime", cap.getDeathTime()); if(!event.getEntityPlayer().inventory.addItemStackToInventory(stack)) if(!event.getEntityPlayer().getEntityWorld().isRemote) event.getEntityPlayer().entityDropItem(stack, 1F); event.getEntityPlayer().inventoryContainer.detectAndSendChanges(); event.getEntityPlayer().inventory.markDirty(); } } } } }
@SubscribeEvent public void onPlayerRespawn(PlayerEvent.Clone event) { if (event.getEntityPlayer() == null || event.getEntityPlayer() instanceof FakePlayer || !event.isWasDeath() || event.isCanceled() || event.getEntityPlayer().world.getGameRules().getBoolean("keepInventory") || ModConfig.LOSE_QUEST_BOOK_ON_DEATH) { return; } if (event.getOriginal().inventory.hasItemStack(new ItemStack(ModItems.book))) { ItemStack bookStack = new ItemStack(ModItems.book); for (ItemStack stack : event.getOriginal().inventory.mainInventory) { if (bookStack.isItemEqual(stack)) { bookStack = stack.copy(); // Copy the actual stack break; } } event.getEntityPlayer().inventory.addItemStackToInventory(bookStack); } } }
@SubscribeEvent public void clonePlayerDataOnDeath(PlayerEvent.Clone event) { if (!event.isWasDeath()) { return; } EntityPlayer original = event.getOriginal(); if (original instanceof EntityPlayerMP) { EntityPlayer newP = event.getEntityPlayer(); PlayerData newData = newP.getCapability(EsteemedInnovation.PLAYER_DATA, null); PlayerData originalData = original.getCapability(EsteemedInnovation.PLAYER_DATA, null); for (String piece : originalData.getAllUnlockedPieces()) { if (newData.setHasUnlockedBookPiece(piece, true)) { EsteemedInnovation.channel.sendTo(new BookPieceUnlockedStateChangePacket(piece, true), (EntityPlayerMP) newP); } } } }
@SubscribeEvent public void onPlayerClone(PlayerEvent.Clone event) { if (event.isWasDeath()) { NBTTagCompound compound = new NBTTagCompound(); EntityDataCapabilityImplementation.getCapability(event.getOriginal()).saveToNBT(compound); EntityDataCapabilityImplementation.getCapability(event.getEntityPlayer()).loadFromNBT(compound); } }
@SubscribeEvent public static void onPlayerRespawn(PlayerEvent.Clone event) { if (event.isWasDeath()) event.getEntityPlayer().addPotionEffect(new PotionEffect(RegistrarBloodMagic.SOUL_FRAY, 400)); }
@SubscribeEvent public void onPlayerCloned(PlayerEvent.Clone event) { if (event.isWasDeath()) { // We need to copyFrom the capabilities if (event.getOriginal().hasCapability(PlayerProperties.PLAYER_GOT_NOTE, null)) { PlayerGotNote oldStore = event.getOriginal().getCapability(PlayerProperties.PLAYER_GOT_NOTE, null); PlayerGotNote newStore = PlayerProperties.getPlayerGotNote(event.getEntityPlayer()); newStore.copyFrom(oldStore); } } }
@SubscribeEvent public void onPlayerClone(PlayerEvent.Clone event) { for (Capability listener : listeners) { ((IPlayerEventListener) event.getEntity().getCapability(listener, null)).onPlayerClone(event.getOriginal(), event.isWasDeath()); } }
@SubscribeEvent(priority = EventPriority.HIGH) public void onPlayerClone(PlayerEvent.Clone evt) { if(!evt.isWasDeath() || evt.isCanceled()) { return; } if(evt.getOriginal() == null || evt.getEntityPlayer() == null || evt.getEntityPlayer() instanceof FakePlayer) { return; } if(evt.getEntityPlayer().getEntityWorld().getGameRules().getBoolean("keepInventory")) { return; } for(int i = 0; i < evt.getOriginal().inventory.mainInventory.size(); i++) { ItemStack stack = evt.getOriginal().inventory.mainInventory.get(i); if(TinkerUtil.hasModifier(stack.getTagCompound(), this.identifier)) { evt.getEntityPlayer().inventory.addItemStackToInventory(stack); evt.getOriginal().inventory.mainInventory.set(i, ItemStack.EMPTY); } } } }