From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Mon, 19 Oct 2020 15:56:47 +0300 Subject: [PATCH] PaperPR: Fix harming potion dupe diff --git a/src/main/java/net/minecraft/server/ItemPotion.java b/src/main/java/net/minecraft/server/ItemPotion.java index 7862b63a245222d9a3d0896bdb2741b0e5e7ac40..04e48b195387410d9494ef87beba15e8d9e0419d 100644 --- a/src/main/java/net/minecraft/server/ItemPotion.java +++ b/src/main/java/net/minecraft/server/ItemPotion.java @@ -22,6 +22,8 @@ public class ItemPotion extends Item { CriterionTriggers.z.a((EntityPlayer) entityhuman, itemstack); } + List instantLater = new java.util.ArrayList<>(); // Yatopia + if (!world.isClientSide) { List list = PotionUtil.getEffects(itemstack); Iterator iterator = list.iterator(); @@ -30,7 +32,7 @@ public class ItemPotion extends Item { MobEffect mobeffect = (MobEffect) iterator.next(); if (mobeffect.getMobEffect().isInstant()) { - mobeffect.getMobEffect().applyInstantEffect(entityhuman, entityhuman, entityliving, mobeffect.getAmplifier(), 1.0D); + instantLater.add(mobeffect); // Yatopia } else { entityliving.addEffect(new MobEffect(mobeffect), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.POTION_DRINK); // CraftBukkit } @@ -44,7 +46,24 @@ public class ItemPotion extends Item { } } + // Yatopia start - fix harming potion dupe + if (!world.isClientSide) { + int len = instantLater.size(); + while (len > 0) { + MobEffect mobeffect = instantLater.remove(0); + mobeffect.getMobEffect().applyInstantEffect(entityhuman, entityhuman, entityliving, mobeffect.getAmplifier(), 1.0D); + len--; + } + } + // Yatopia end + if (entityhuman == null || !entityhuman.abilities.canInstantlyBuild) { + // Yatopia start - fix harming potion dupe + if (entityliving.getHealth() <= 0 && !(entityhuman != null && entityliving.world.getGameRules().getBoolean(GameRules.KEEP_INVENTORY))) { + entityliving.dropItem(new ItemStack(Items.GLASS_BOTTLE), 0); + return ItemStack.NULL_ITEM; + } + // Yatopia end if (itemstack.isEmpty()) { return new ItemStack(Items.GLASS_BOTTLE); }