CavePVP-Stuff/cSpigot-master/spigot-server-Patches/0221-changes.patch

301 lines
12 KiB
Diff
Raw Normal View History

2023-05-01 20:59:40 +02:00
From 1380f5cf4e8a4cbaaa691c5209f7ced126ab6269 Mon Sep 17 00:00:00 2001
From: Alfie Cleveland <alfeh@me.com>
Date: Sun, 8 Jul 2018 14:06:36 -0500
Subject: [PATCH] changes
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
index 4a20d7e2d..88e4be82c 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -402,7 +402,7 @@ public class ChunkProviderServer implements IChunkProvider {
this.saveChunkNOP(chunk);
saveChunkNOP += System.nanoTime() - nanoStart;
nanoStart = System.nanoTime();
- this.chunks.remove(locX, locZ); // CraftBukkit // MineHQ
+ this.chunks.remove(LongHash.toLong(locX, locZ)); // CraftBukkit // MineHQ
chunkRemove += System.nanoTime() - nanoStart;
unloaded++;
this.world.timings.doChunkUnloadSave.stopTiming();
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index b6183f057..a52b2c604 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -1,17 +1,31 @@
package net.minecraft.server;
-import com.google.common.base.Function;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Random;
+import java.util.UUID;
+
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.SpigotTimings;
import org.bukkit.craftbukkit.event.CraftEventFactory;
+import org.bukkit.craftbukkit.util.CraftPotionUtils;
+import org.bukkit.entity.LivingEntity;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageModifier;
import org.bukkit.event.entity.EntityRegainHealthEvent;
+import org.bukkit.event.entity.PotionEffectAddEvent;
+import org.bukkit.event.entity.PotionEffectExpireEvent;
+import org.bukkit.event.entity.PotionEffectExtendEvent;
+import org.bukkit.event.entity.PotionEffectRemoveEvent;
import org.bukkit.event.player.PlayerAttackEvent;
import org.spigotmc.ActivationRange;
import org.spigotmc.SpigotConfig;
-import java.util.*;
+import com.google.common.base.Function;
// CraftBukkit start
// CraftBukkit end
@@ -456,6 +470,16 @@ public abstract class EntityLiving extends Entity {
if (!mobeffect.tick(this)) {
if (!this.world.isStatic) {
+ PotionEffectExpireEvent event = new PotionEffectExpireEvent((LivingEntity) this.getBukkitEntity(),
+ CraftPotionUtils.toBukkit(mobeffect));
+
+ this.world.getServer().getPluginManager().callEvent(event);
+
+ if (event.isCancelled()) {
+ CraftPotionUtils.extendDuration(mobeffect, event.getDuration());
+ continue;
+ }
+
iterator.remove();
this.b(mobeffect);
}
@@ -510,15 +534,13 @@ public abstract class EntityLiving extends Entity {
}
public void removeAllEffects() {
- Iterator iterator = this.effects.keySet().iterator();
+ Iterator iterator = new HashSet<>(this.effects.keySet()).iterator();
while (iterator.hasNext()) {
Integer integer = (Integer) iterator.next();
- MobEffect mobeffect = (MobEffect) this.effects.get(integer);
if (!this.world.isStatic) {
- iterator.remove();
- this.b(mobeffect);
+ removeEffect(integer);
}
}
}
@@ -542,11 +564,28 @@ public abstract class EntityLiving extends Entity {
}
public void addEffect(MobEffect mobeffect) {
+ this.addEffect(mobeffect, PotionEffectAddEvent.EffectCause.UNKNOWN);
+ }
+
+ public void addEffect(MobEffect mobeffect, PotionEffectAddEvent.EffectCause effectCause) {
if (this.d(mobeffect)) {
if (this.effects.containsKey(Integer.valueOf(mobeffect.getEffectId()))) {
- ((MobEffect) this.effects.get(Integer.valueOf(mobeffect.getEffectId()))).a(mobeffect);
- this.a((MobEffect) this.effects.get(Integer.valueOf(mobeffect.getEffectId())), true);
+ MobEffect current = (MobEffect) this.effects.get(mobeffect.getEffectId());
+ PotionEffectExtendEvent event = new PotionEffectExtendEvent((LivingEntity) this.getBukkitEntity(),
+ CraftPotionUtils.toBukkit(mobeffect),
+ CraftPotionUtils.toBukkit(current), effectCause);
+
+ this.world.getServer().getPluginManager().callEvent(event);
+ if (event.isCancelled()) return;
+
+ current.a(mobeffect);
+ this.a(current, true);
} else {
+ PotionEffectAddEvent event = new PotionEffectAddEvent((LivingEntity) this.getBukkitEntity(),
+ CraftPotionUtils.toBukkit(mobeffect), effectCause);
+
+ this.world.getServer().getPluginManager().callEvent(event);
+ if (event.isCancelled()) return;
this.effects.put(Integer.valueOf(mobeffect.getEffectId()), mobeffect);
this.a(mobeffect);
}
@@ -573,6 +612,14 @@ public abstract class EntityLiving extends Entity {
MobEffect mobeffect = (MobEffect) this.effects.remove(Integer.valueOf(i));
if (mobeffect != null) {
+ PotionEffectRemoveEvent event = new PotionEffectRemoveEvent((LivingEntity) this.getBukkitEntity(),
+ CraftPotionUtils.toBukkit(mobeffect));
+ this.world.getServer().getPluginManager().callEvent(event);
+ if (event.isCancelled()) {
+ this.effects.put(i, mobeffect);
+ return;
+ }
+
this.b(mobeffect);
}
}
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 5bd9ca430..88652d4a5 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -274,7 +274,7 @@ public class PlayerConnection implements PacketPlayInListener {
packetsNotReceived++;
keepAlives.add(h);
- if (keepAlives.size() > 120 && Bukkit.shouldGuardianAct()) {
+ if (keepAlives.size() > 240 && Bukkit.shouldGuardianAct()) {
disconnect("Disconnected due to lag");
return;
}
@@ -284,7 +284,7 @@ public class PlayerConnection implements PacketPlayInListener {
}
// Guardian start
- if (packetsNotReceived >= 40 && Bukkit.shouldGuardianAct()) {
+ if (packetsNotReceived >= 240 && Bukkit.shouldGuardianAct()) {
disconnect("Disconnected due to lag");
return;
}
diff --git a/src/main/java/net/minecraft/server/PlayerInventory.java b/src/main/java/net/minecraft/server/PlayerInventory.java
index 83d7b75bf..408ddea51 100644
--- a/src/main/java/net/minecraft/server/PlayerInventory.java
+++ b/src/main/java/net/minecraft/server/PlayerInventory.java
@@ -5,7 +5,9 @@ import java.util.concurrent.Callable;
// CraftBukkit start
import java.util.List;
+import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.entity.CraftHumanEntity;
+import org.bukkit.craftbukkit.inventory.CraftItemStack;
import org.bukkit.entity.HumanEntity;
// CraftBukkit end
@@ -327,7 +329,7 @@ public class PlayerInventory implements IInventory {
i -= aitemstack.length;
aitemstack = this.armor;
}
-
+
aitemstack[i] = itemstack;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
index a9e222b29..08ccef185 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
@@ -80,14 +80,6 @@ public class CraftInventory implements Inventory {
}
public void setItem(int index, ItemStack item) {
-
- ItemStack oldItem = getItem(index);
-
- if (oldItem != null) {
- Bukkit.getLogger().info("Removing item " + oldItem.getType().toString() + ", setting to: " + (item == null ? "null" : item.getType().toString()));
- new Throwable().printStackTrace();
- }
-
getInventory().setItem(index, ((item == null || item.getTypeId() == 0) ? null : CraftItemStack.asNMSCopy(item)));
}
@@ -341,11 +333,6 @@ public class CraftInventory implements Inventory {
public HashMap<Integer, ItemStack> removeItem(ItemStack... items) {
Validate.notNull(items, "Items cannot be null");
HashMap<Integer, ItemStack> leftover = new HashMap<Integer, ItemStack>();
-
- for (ItemStack item : items) {
- Bukkit.getLogger().info("Removing item " + item.getType().toString() + ".");
- new Throwable().printStackTrace();
- }
// TODO: optimization
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java
index b7cf36b44..31ce4b761 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java
@@ -195,14 +195,6 @@ public class CraftInventoryPlayer extends CraftInventory implements org.bukkit.i
@Override
public HashMap<Integer, ItemStack> removeItem(ItemStack... items) {
HashMap<Integer, ItemStack> leftover = super.removeItem(items);
-
- for (ItemStack item : items) {
- if (item != null) {
- Bukkit.getLogger().info("Removing item " + item.getType().toString() + ".");
- new Throwable().printStackTrace();
- }
- }
-
this.updatePlayerInventory();
return leftover;
}
@@ -210,12 +202,6 @@ public class CraftInventoryPlayer extends CraftInventory implements org.bukkit.i
@Override
public void remove(ItemStack item) {
super.remove(item);
-
- if (item != null) {
- Bukkit.getLogger().info("Removing item " + item.getType().toString() + ".");
- new Throwable().printStackTrace();
- }
-
this.updatePlayerInventory();
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftPotionUtils.java b/src/main/java/org/bukkit/craftbukkit/util/CraftPotionUtils.java
new file mode 100644
index 000000000..f7a54b41a
--- /dev/null
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftPotionUtils.java
@@ -0,0 +1,45 @@
+package org.bukkit.craftbukkit.util;
+
+import org.bukkit.potion.PotionEffect;
+import org.bukkit.potion.PotionEffectType;
+
+import net.minecraft.server.MobEffect;
+import net.minecraft.server.MobEffectList;
+
+public final class CraftPotionUtils {
+
+ public static PotionEffectType toBukkit(MobEffectList nms) {
+ return PotionEffectType.getById(nms.getId());
+ }
+
+ public static PotionEffect toBukkit(MobEffect effect) {
+ return new PotionEffect(
+ PotionEffectType.getById(effect.getEffectId()),
+ effect.getDuration(),
+ effect.getAmplifier(),
+ effect.isAmbient());
+ }
+
+ public static MobEffectList toNMS(PotionEffectType effect) {
+ return MobEffectList.byId[effect.getId()];
+ }
+
+ public static MobEffect toNMS(PotionEffect effect) {
+ return new MobEffect(effect.getType().getId(),
+ effect.getDuration(),
+ effect.getAmplifier(),
+ effect.isAmbient());
+ }
+
+ public static MobEffect cloneWithDuration(MobEffect effect, int duration) {
+ return new MobEffect(effect.getEffectId(),
+ duration,
+ effect.getAmplifier(),
+ effect.isAmbient());
+ }
+
+ public static void extendDuration(MobEffect effect, int duration) {
+ effect.a(cloneWithDuration(effect, duration));
+ }
+
+}
--
2.15.2 (Apple Git-101.1)