mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Updated Upstream (Paper & Airplane)
Upstream has released updates that appear to apply and compile correctly Paper Changes: cd6ae8816 Add a "Should Burn in Sunlight" API for Phantoms and Skeletons (#5608) 25edfe58b Remove unneeded component conversion for kick msg (#5626) cec386f66 Call PortalCreateEvent when players enter the end (#5618) Airplane Changes: 3dce697cb Fix gradle stuff 209bce3db Patches
This commit is contained in:
2
Paper
2
Paper
Submodule Paper updated: 453c7f05c7...cd6ae8816e
@@ -1073,7 +1073,7 @@ index 4623e0d767b343cbdc6fcf20b3b2ff7ff14863cf..ca3f98a8272bab3c9f57f59b077b206c
|
||||
|
||||
/**
|
||||
diff --git a/src/main/java/org/bukkit/entity/Skeleton.java b/src/main/java/org/bukkit/entity/Skeleton.java
|
||||
index 1c367f78eadf24850061a84ce63b950b79d3c435..9021865244a7eacf0477b0db790e0ff41fc8ddfd 100644
|
||||
index 684477b894e52ff33f9fce2edf76e58c292dd75e..581abc69290ca14b8e64f50fdf5a49c14be13940 100644
|
||||
--- a/src/main/java/org/bukkit/entity/Skeleton.java
|
||||
+++ b/src/main/java/org/bukkit/entity/Skeleton.java
|
||||
@@ -27,7 +27,9 @@ public interface Skeleton extends Monster, RangedEntity { // Paper
|
||||
|
||||
@@ -9822,7 +9822,7 @@ index a44bcdb053877a6281e566ffe03ef72ffd50ca08..e72c852517f9fdc7b7a3a5bc5d3aa067
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/core/BlockPosition.java b/src/main/java/net/minecraft/core/BlockPosition.java
|
||||
index eb67af795dd716d9f92ac32843accc1ec4efd647..8edc279e7a3fdfb7e10718f1deee34b7e3fb2f28 100644
|
||||
index 4abc87b7e737bc652e84f76a508ab85501d1556f..6a6381e85fef2ae2b9b5e6dff0b7917b92fa01e5 100644
|
||||
--- a/src/main/java/net/minecraft/core/BlockPosition.java
|
||||
+++ b/src/main/java/net/minecraft/core/BlockPosition.java
|
||||
@@ -455,10 +455,10 @@ public class BlockPosition extends BaseBlockPosition {
|
||||
@@ -9877,7 +9877,7 @@ index eb67af795dd716d9f92ac32843accc1ec4efd647..8edc279e7a3fdfb7e10718f1deee34b7
|
||||
}
|
||||
|
||||
public BlockPosition.MutableBlockPosition c(EnumDirection enumdirection, int i) {
|
||||
@@ -517,21 +526,30 @@ public class BlockPosition extends BaseBlockPosition {
|
||||
@@ -518,21 +527,30 @@ public class BlockPosition extends BaseBlockPosition {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12072,7 +12072,7 @@ index c5e54c519e1f686761faa53b5e9579c514a65332..fe040615ff03478a20cdf8376f89a6b7
|
||||
try {
|
||||
boolean execChunkTask = com.destroystokyo.paper.io.chunk.ChunkTaskManager.pollChunkWaitQueue() || ChunkProviderServer.this.world.asyncChunkTaskManager.pollNextChunkTask(); // Paper
|
||||
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
index 1161605d9f4f9727282ac3677a916a9ebdb1263b..fb61b6ac167b34486282a24e598020fb96081f28 100644
|
||||
index 10e9e5328f783832b957113a8672f45f90ace813..19f160d9802cabe727b280b8f7e831439b4015de 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
@@ -261,7 +261,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -12288,7 +12288,7 @@ index 1161605d9f4f9727282ac3677a916a9ebdb1263b..fb61b6ac167b34486282a24e598020fb
|
||||
if (this.getHealth() != this.lastHealthSent || this.lastFoodSent != this.foodData.getFoodLevel() || this.foodData.getSaturationLevel() == 0.0F != this.lastSentSaturationZero) {
|
||||
this.playerConnection.sendPacket(new PacketPlayOutUpdateHealth(this.getBukkitEntity().getScaledHealth(), this.foodData.getFoodLevel(), this.foodData.getSaturationLevel())); // CraftBukkit
|
||||
this.lastHealthSent = this.getHealth();
|
||||
@@ -1539,6 +1718,17 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -1545,6 +1724,17 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
this.playerConnection.sendPacket(new PacketPlayOutCloseWindow(this.activeContainer.windowId));
|
||||
this.o();
|
||||
}
|
||||
@@ -15256,7 +15256,7 @@ index 69fc2789df88344587b6052f93661ed38f24a503..92836f1200461ba7fff2f8bcb5e1755e
|
||||
protected void initChannel(Channel channel) throws Exception {
|
||||
try {
|
||||
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
index aaa6f3aeaf1b47275a1c8fc22ee99475e62c32a0..76ba1e038fb68eafa2c2039fa1cdd74d060dcf9f 100644
|
||||
index 2a76c3624c64e93509a96579f48c507e29901625..ab113991486c913e0a05df1029571d3e920af9c7 100644
|
||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
@@ -179,6 +179,7 @@ public abstract class PlayerList {
|
||||
@@ -20968,10 +20968,10 @@ index 295ffab08672d77d88aca368cb5b56f80bc4f1b5..dee4d12a49468d38f077784b219199f0
|
||||
@Override
|
||||
public boolean teleport(Location location) {
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index f150ba393bc62e52840e6ebbf3d7696b670ff7e4..51d68fc13fcb8c30c10e21063f4d658f403df8ce 100644
|
||||
index 05248f560d643080a3eac581c01aa89fb3709e6c..6f179a6c80b6b9ef90b01a987735364ec3f35602 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -2262,15 +2262,70 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@@ -2260,15 +2260,70 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1422,10 +1422,10 @@ index 0000000000000000000000000000000000000000..86d6650d174a7794a7ebe793cad033b4
|
||||
+}
|
||||
diff --git a/src/main/java/gg/airplane/structs/FluidDirectionCache.java b/src/main/java/gg/airplane/structs/FluidDirectionCache.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..11279fb136bbaf3e51d9b080a9e283d8ff0cbb47
|
||||
index 0000000000000000000000000000000000000000..aa8467b9dda1f7707e41f50ac7b3e9d7343723ec
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/gg/airplane/structs/FluidDirectionCache.java
|
||||
@@ -0,0 +1,142 @@
|
||||
@@ -0,0 +1,136 @@
|
||||
+package gg.airplane.structs;
|
||||
+
|
||||
+import it.unimi.dsi.fastutil.HashCommon;
|
||||
@@ -1457,8 +1457,8 @@ index 0000000000000000000000000000000000000000..11279fb136bbaf3e51d9b080a9e283d8
|
||||
+ private static class FluidDirectionEntry<T> {
|
||||
+ private final T data;
|
||||
+ private final boolean flag;
|
||||
+ private short uses = 0;
|
||||
+ private short age = 0;
|
||||
+ private int uses = 0;
|
||||
+ private int age = 0;
|
||||
+
|
||||
+ private FluidDirectionEntry(T data, boolean flag) {
|
||||
+ this.data = data;
|
||||
@@ -1470,15 +1470,11 @@ index 0000000000000000000000000000000000000000..11279fb136bbaf3e51d9b080a9e283d8
|
||||
+ }
|
||||
+
|
||||
+ public void incrementUses() {
|
||||
+ if (this.uses < Short.MAX_VALUE) {
|
||||
+ this.uses++;
|
||||
+ }
|
||||
+ this.uses = this.uses + 1 & Integer.MAX_VALUE;
|
||||
+ }
|
||||
+
|
||||
+ public void incrementAge() {
|
||||
+ if (this.age < Short.MAX_VALUE) {
|
||||
+ this.age++;
|
||||
+ }
|
||||
+ this.age = this.age + 1 & Integer.MAX_VALUE;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
@@ -1487,12 +1483,10 @@ index 0000000000000000000000000000000000000000..11279fb136bbaf3e51d9b080a9e283d8
|
||||
+ private final int maxDistance; // the most amount of entries to check for a value
|
||||
+
|
||||
+ public FluidDirectionCache(int size) {
|
||||
+ float fill = 0.75f;
|
||||
+
|
||||
+ int arraySize = HashCommon.arraySize(size, fill);
|
||||
+ int arraySize = HashCommon.nextPowerOfTwo(size);
|
||||
+ this.entries = new FluidDirectionEntry[arraySize];
|
||||
+ this.mask = arraySize - 1;
|
||||
+ this.maxDistance = Math.max(4, arraySize >> 4);
|
||||
+ this.maxDistance = Math.min(arraySize, 4);
|
||||
+ }
|
||||
+
|
||||
+ public Boolean getValue(T data) {
|
||||
@@ -1551,11 +1545,11 @@ index 0000000000000000000000000000000000000000..11279fb136bbaf3e51d9b080a9e283d8
|
||||
+ int expectedPos = HashCommon.mix(data.hashCode()) & this.mask;
|
||||
+
|
||||
+ int toRemovePos = expectedPos;
|
||||
+ FluidDirectionEntry<T> entryToRemove = this.entries[toRemovePos];
|
||||
+ FluidDirectionEntry entryToRemove = this.entries[toRemovePos];
|
||||
+
|
||||
+ for (int i = expectedPos + 1; i < expectedPos + this.maxDistance; i++) {
|
||||
+ int pos = i & this.mask;
|
||||
+ FluidDirectionEntry<T> entry = this.entries[pos];
|
||||
+ FluidDirectionEntry entry = this.entries[pos];
|
||||
+ if (entry.getValue() < entryToRemove.getValue()) {
|
||||
+ toRemovePos = pos;
|
||||
+ entryToRemove = entry;
|
||||
@@ -1568,8 +1562,49 @@ index 0000000000000000000000000000000000000000..11279fb136bbaf3e51d9b080a9e283d8
|
||||
+ this.entries[toRemovePos] = new FluidDirectionEntry(data, flag);
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/gg/airplane/structs/LinkedHashSetArrayList.java b/src/main/java/gg/airplane/structs/LinkedHashSetArrayList.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..36eea0acd815e08e0be10bf55541ea0bb605b8f5
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/gg/airplane/structs/LinkedHashSetArrayList.java
|
||||
@@ -0,0 +1,35 @@
|
||||
+package gg.airplane.structs;
|
||||
+
|
||||
+import java.util.AbstractSet;
|
||||
+import java.util.ArrayList;
|
||||
+import java.util.Iterator;
|
||||
+import java.util.List;
|
||||
+
|
||||
+/*
|
||||
+ * Used when you want fast iteration more than fast contain/remove
|
||||
+ */
|
||||
+public class LinkedHashSetArrayList<E> extends AbstractSet<E> {
|
||||
+ private final List<E> internal = new ArrayList<>();
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean add(E e) {
|
||||
+ if (this.internal.contains(e)) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ return this.internal.add(e);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public Iterator<E> iterator() {
|
||||
+ return this.internal.iterator();
|
||||
+ }
|
||||
+
|
||||
+ public E get(int index) {
|
||||
+ return this.internal.get(index);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int size() {
|
||||
+ return this.internal.size();
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/net/minecraft/core/BlockPosition.java b/src/main/java/net/minecraft/core/BlockPosition.java
|
||||
index 8edc279e7a3fdfb7e10718f1deee34b7e3fb2f28..3c51ee00aa53e561c02bb779c7115d8475d70ed7 100644
|
||||
index 6a6381e85fef2ae2b9b5e6dff0b7917b92fa01e5..2685a395a2eff9083cd8c654c4b7e2141b0ca99b 100644
|
||||
--- a/src/main/java/net/minecraft/core/BlockPosition.java
|
||||
+++ b/src/main/java/net/minecraft/core/BlockPosition.java
|
||||
@@ -438,12 +438,26 @@ public class BlockPosition extends BaseBlockPosition {
|
||||
@@ -2124,9 +2159,18 @@ index bc8786e2aaeab4dbae4e9c7666ad816bc5bfac3f..09133c5822bc1386bc3d8a5f3c941964
|
||||
|
||||
this.g.long2ObjectEntrySet().removeIf((entry) -> {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalSelector.java
|
||||
index 637928664f8c7b1c694a234e507c20724294e450..02e8288473138dcea008d6157318758e8d7ee3be 100644
|
||||
index 637928664f8c7b1c694a234e507c20724294e450..697e666a027d5e2ace7d0758909be5a658c480d2 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalSelector.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalSelector.java
|
||||
@@ -28,7 +28,7 @@ public class PathfinderGoalSelector {
|
||||
}
|
||||
};
|
||||
private final Map<PathfinderGoal.Type, PathfinderGoalWrapped> c = new EnumMap(PathfinderGoal.Type.class);
|
||||
- private final Set<PathfinderGoalWrapped> d = Sets.newLinkedHashSet(); public final Set<PathfinderGoalWrapped> getTasks() { return d; }// Paper - OBFHELPER // Paper - private -> public
|
||||
+ private final gg.airplane.structs.LinkedHashSetArrayList<PathfinderGoalWrapped> d = new gg.airplane.structs.LinkedHashSetArrayList<>(); public final Set<PathfinderGoalWrapped> getTasks() { return d; }// Paper - OBFHELPER // Paper - private -> public // Airplane - it's a set, but it's an arraylist
|
||||
private final Supplier<GameProfilerFiller> e;
|
||||
private final EnumSet<PathfinderGoal.Type> f = EnumSet.noneOf(PathfinderGoal.Type.class); // Paper unused, but dummy to prevent plugins from crashing as hard. Theyll need to support paper in a special case if this is super important, but really doesn't seem like it would be.
|
||||
private final OptimizedSmallEnumSet<PathfinderGoal.Type> goalTypes = new OptimizedSmallEnumSet<>(PathfinderGoal.Type.class); // Paper - remove streams from pathfindergoalselector
|
||||
@@ -44,9 +44,14 @@ public class PathfinderGoalSelector {
|
||||
}
|
||||
|
||||
@@ -2145,6 +2189,47 @@ index 637928664f8c7b1c694a234e507c20724294e450..02e8288473138dcea008d6157318758e
|
||||
}
|
||||
public boolean hasTasks() {
|
||||
for (PathfinderGoalWrapped task : getTasks()) {
|
||||
@@ -80,8 +85,11 @@ public class PathfinderGoalSelector {
|
||||
|
||||
gameprofilerfiller.enter("goalCleanup");
|
||||
// Paper start - remove streams from pathfindergoalselector
|
||||
- for (Iterator<PathfinderGoalWrapped> iterator = this.d.iterator(); iterator.hasNext();) {
|
||||
- PathfinderGoalWrapped wrappedGoal = iterator.next();
|
||||
+ // Airplane start - remove iterators from pathfindergoalselector
|
||||
+ //for (Iterator<PathfinderGoalWrapped> iterator = this.d.iterator(); iterator.hasNext();) {
|
||||
+ // PathfinderGoalWrapped wrappedGoal = iterator.next();
|
||||
+ for (int goalIndex = 0; goalIndex < this.d.size(); goalIndex++) {
|
||||
+ PathfinderGoalWrapped wrappedGoal = this.d.get(goalIndex);
|
||||
if (!wrappedGoal.g()) {
|
||||
continue;
|
||||
}
|
||||
@@ -100,8 +108,10 @@ public class PathfinderGoalSelector {
|
||||
gameprofilerfiller.exit();
|
||||
gameprofilerfiller.enter("goalUpdate");
|
||||
// Paper start - remove streams from pathfindergoalselector
|
||||
- goal_update_loop: for (Iterator<PathfinderGoalWrapped> iterator = this.d.iterator(); iterator.hasNext();) {
|
||||
- PathfinderGoalWrapped wrappedGoal = iterator.next();
|
||||
+ // Airplane start - remove iterators from pathfindergoalselector
|
||||
+ goal_update_loop: for (int goalIndex = 0; goalIndex < this.d.size(); goalIndex++) { //for (Iterator<PathfinderGoalWrapped> iterator = this.d.iterator(); iterator.hasNext();) {
|
||||
+ PathfinderGoalWrapped wrappedGoal = this.d.get(goalIndex);
|
||||
+ // Airplane end
|
||||
if (wrappedGoal.g()) {
|
||||
continue;
|
||||
}
|
||||
@@ -144,8 +154,11 @@ public class PathfinderGoalSelector {
|
||||
gameprofilerfiller.exit();
|
||||
gameprofilerfiller.enter("goalTick");
|
||||
// Paper start - remove streams from pathfindergoalselector
|
||||
- for (Iterator<PathfinderGoalWrapped> iterator = this.d.iterator(); iterator.hasNext();) {
|
||||
- PathfinderGoalWrapped wrappedGoal = iterator.next();
|
||||
+ // Airplane start - remove iterators from pathfindergoalselector
|
||||
+ //for (Iterator<PathfinderGoalWrapped> iterator = this.d.iterator(); iterator.hasNext();) {
|
||||
+ // PathfinderGoalWrapped wrappedGoal = iterator.next();
|
||||
+ for (int goalIndex = 0; goalIndex < this.d.size(); goalIndex++) { PathfinderGoalWrapped wrappedGoal = this.d.get(goalIndex);
|
||||
+ // Airplane end
|
||||
if (wrappedGoal.g()) {
|
||||
wrappedGoal.e();
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/NavigationAbstract.java b/src/main/java/net/minecraft/world/entity/ai/navigation/NavigationAbstract.java
|
||||
index 148bdbc2cffb002d8b6dd05e70854ab503804949..48e6a4c588ef39a4bde067d79b96a656c68750ce 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/navigation/NavigationAbstract.java
|
||||
@@ -2522,6 +2607,64 @@ index e112d149fc3a7af7f0c9a5280c94c9b03b2aba2d..d2afc367fb393c6206f9cd599d460329
|
||||
AutoRecipeStackManager autorecipestackmanager = new AutoRecipeStackManager();
|
||||
int i = 0;
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/GameRules.java b/src/main/java/net/minecraft/world/level/GameRules.java
|
||||
index 3783f3a83e3e70d77cf0fa1021f62a89c5950af5..d0c63be6ebfa2f95fb3d63eed2e11b1c5cd6384e 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/GameRules.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/GameRules.java
|
||||
@@ -86,6 +86,7 @@ public class GameRules {
|
||||
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> FORGIVE_DEAD_PLAYERS = a("forgiveDeadPlayers", GameRules.GameRuleCategory.MOBS, GameRules.GameRuleBoolean.b(true));
|
||||
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> UNIVERSAL_ANGER = a("universalAnger", GameRules.GameRuleCategory.MOBS, GameRules.GameRuleBoolean.b(false));
|
||||
private final Map<GameRules.GameRuleKey<?>, GameRules.GameRuleValue<?>> J;
|
||||
+ private final GameRules.GameRuleValue<?>[] gameruleArray;
|
||||
|
||||
private static <T extends GameRules.GameRuleValue<T>> GameRules.GameRuleKey<T> a(String s, GameRules.GameRuleCategory gamerules_gamerulecategory, GameRules.GameRuleDefinition<T> gamerules_gameruledefinition) {
|
||||
GameRules.GameRuleKey<T> gamerules_gamerulekey = new GameRules.GameRuleKey<>(s, gamerules_gamerulecategory);
|
||||
@@ -104,17 +105,31 @@ public class GameRules {
|
||||
}
|
||||
|
||||
public GameRules() {
|
||||
- this.J = (Map) GameRules.I.entrySet().stream().collect(ImmutableMap.toImmutableMap(Entry::getKey, (entry) -> {
|
||||
+ // Airplane start - use this()
|
||||
+ this((Map) GameRules.I.entrySet().stream().collect(ImmutableMap.toImmutableMap(Entry::getKey, (entry) -> {
|
||||
return ((GameRules.GameRuleDefinition) entry.getValue()).getValue();
|
||||
- }));
|
||||
+ })));
|
||||
+ // Airplane end
|
||||
}
|
||||
|
||||
private GameRules(Map<GameRules.GameRuleKey<?>, GameRules.GameRuleValue<?>> map) {
|
||||
this.J = map;
|
||||
+
|
||||
+ int arraySize = map.keySet().stream().mapToInt(key -> key.gameRuleIndex).max().orElse(-1) + 1;
|
||||
+ GameRules.GameRuleValue<?>[] values = new GameRules.GameRuleValue[arraySize];
|
||||
+
|
||||
+ for (Entry<GameRuleKey<?>, GameRuleValue<?>> entry : map.entrySet()) {
|
||||
+ values[entry.getKey().gameRuleIndex] = entry.getValue();
|
||||
+ }
|
||||
+
|
||||
+ this.gameruleArray = values;
|
||||
}
|
||||
|
||||
public <T extends GameRules.GameRuleValue<T>> T get(GameRules.GameRuleKey<T> gamerules_gamerulekey) {
|
||||
- return (T) this.J.get(gamerules_gamerulekey); // CraftBukkit - decompile error
|
||||
+ // Airplane start
|
||||
+ return gamerules_gamerulekey == null ? null : (T) this.gameruleArray[gamerules_gamerulekey.gameRuleIndex];
|
||||
+ //return (T) this.J.get(gamerules_gamerulekey); // CraftBukkit - decompile error
|
||||
+ // Airplane end
|
||||
}
|
||||
|
||||
public NBTTagCompound a() {
|
||||
@@ -357,6 +372,10 @@ public class GameRules {
|
||||
}
|
||||
|
||||
public static final class GameRuleKey<T extends GameRules.GameRuleValue<T>> {
|
||||
+ // Airplane start
|
||||
+ private static int lastGameRuleIndex = 0;
|
||||
+ public final int gameRuleIndex = lastGameRuleIndex++;
|
||||
+ // Airplane end
|
||||
|
||||
private final String a;
|
||||
private final GameRules.GameRuleCategory b;
|
||||
diff --git a/src/main/java/net/minecraft/world/level/IBlockAccess.java b/src/main/java/net/minecraft/world/level/IBlockAccess.java
|
||||
index e612e1d30f76e217b1aa23488ab025adce048f57..c9198d242b9053fad6fa5b53c1894679002d50a7 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/IBlockAccess.java
|
||||
@@ -2927,7 +3070,7 @@ index ec2b238480413ba9c123d9ddeaa787d9520e1b74..bf96f9e538fc29ca914536e8a7ce727e
|
||||
|
||||
if (nibblearray != null && !nibblearray.c()) {
|
||||
diff --git a/src/main/java/net/minecraft/world/level/material/FluidTypeFlowing.java b/src/main/java/net/minecraft/world/level/material/FluidTypeFlowing.java
|
||||
index 6bb4ec00e40795ced73648fefcd1f5027e0113cd..b14b0134b42aa6d1eb285aa453ec6067cc702878 100644
|
||||
index 6bb4ec00e40795ced73648fefcd1f5027e0113cd..3b8fa837db21c5f67eab2ff8752e906ea97c288d 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/material/FluidTypeFlowing.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/material/FluidTypeFlowing.java
|
||||
@@ -45,6 +45,8 @@ public abstract class FluidTypeFlowing extends FluidType {
|
||||
@@ -2946,8 +3089,8 @@ index 6bb4ec00e40795ced73648fefcd1f5027e0113cd..b14b0134b42aa6d1eb285aa453ec6067
|
||||
+ */
|
||||
+ private static final ThreadLocal<gg.airplane.structs.FluidDirectionCache<Block.a>> localFluidDirectionCache = ThreadLocal.withInitial(() -> {
|
||||
+ // Airplane todo - mess with this number for performance
|
||||
+ // with 1024 it seems very infrequent on a small world that it has to remove old entries
|
||||
+ return new gg.airplane.structs.FluidDirectionCache<>(1024);
|
||||
+ // with 2048 it seems very infrequent on a small world that it has to remove old entries
|
||||
+ return new gg.airplane.structs.FluidDirectionCache<>(2048);
|
||||
+ });
|
||||
+ // Airplane end
|
||||
private final Map<Fluid, VoxelShape> f = Maps.newIdentityHashMap();
|
||||
@@ -3056,6 +3199,57 @@ index 95d0c9f22d79194ca83ca6f6a8e6d91180a3c8da..20cc04be75ab202d4c4ee9a07e9876ce
|
||||
}
|
||||
|
||||
public LootTableInfo build(LootContextParameterSet lootcontextparameterset) {
|
||||
diff --git a/src/main/java/net/minecraft/world/phys/shapes/VoxelShapeCollisionEntity.java b/src/main/java/net/minecraft/world/phys/shapes/VoxelShapeCollisionEntity.java
|
||||
index dcb3e4b0cf34699ed77208f8122710bbdfa3d063..a51b47892c726f4b4b10d870991e9b8517f57fb7 100644
|
||||
--- a/src/main/java/net/minecraft/world/phys/shapes/VoxelShapeCollisionEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/phys/shapes/VoxelShapeCollisionEntity.java
|
||||
@@ -23,7 +23,8 @@ public class VoxelShapeCollisionEntity implements VoxelShapeCollision {
|
||||
};
|
||||
private final boolean b;
|
||||
private final double c;
|
||||
- private final Item d;
|
||||
+ private Item d; // Airplane
|
||||
+ private Entity entity; // Airplane
|
||||
private final Predicate<FluidType> e;
|
||||
|
||||
protected VoxelShapeCollisionEntity(boolean flag, double d0, Item item, Predicate<FluidType> predicate) {
|
||||
@@ -31,10 +32,13 @@ public class VoxelShapeCollisionEntity implements VoxelShapeCollision {
|
||||
this.c = d0;
|
||||
this.d = item;
|
||||
this.e = predicate;
|
||||
+ this.entity = null; // Airplane
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
protected VoxelShapeCollisionEntity(Entity entity) {
|
||||
+ // Airplane start - compile fixes
|
||||
+ /*
|
||||
boolean flag = entity.by();
|
||||
double d0 = entity.locY();
|
||||
Item item = entity instanceof EntityLiving ? ((EntityLiving) entity).getItemInMainHand().getItem() : Items.AIR;
|
||||
@@ -50,12 +54,21 @@ public class VoxelShapeCollisionEntity implements VoxelShapeCollision {
|
||||
return false;
|
||||
};
|
||||
}
|
||||
+ */
|
||||
|
||||
- this(flag, d0, item, predicate);
|
||||
+ this(
|
||||
+ entity.by(),
|
||||
+ entity.locY(),
|
||||
+ null, //entity instanceof EntityLiving ? ((EntityLiving) entity).getItemInMainHand().getItem() : Items.AIR, // Airplane - lazy
|
||||
+ entity instanceof EntityLiving ? ((EntityLiving) entity)::a : (fluidtype) -> false
|
||||
+ );
|
||||
+ this.entity = entity;
|
||||
+ // Airplane end
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean a(Item item) {
|
||||
+ if (this.d == null) this.d = this.entity instanceof EntityLiving ? ((EntityLiving) this.entity).getItemInMainHand().getItem() : Items.AIR; // Airplane
|
||||
return this.d == item;
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index 55f2834373ccc7362836b4fab4ae2f069f31fd63..6aa14f959e8f53ad16839e94315eae0727ad0b42 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] AFK API
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
index fb61b6ac167b34486282a24e598020fb96081f28..c42a2813b40152079786dde33231d945f3144580 100644
|
||||
index 19f160d9802cabe727b280b8f7e831439b4015de..45022ac20bea298630e151bf50b2e3322bef3b9a 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
@@ -2071,8 +2071,54 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -2077,8 +2077,54 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
|
||||
public void resetIdleTimer() {
|
||||
this.ca = SystemUtils.getMonotonicMillis();
|
||||
@@ -263,10 +263,10 @@ index 361f7857e461578e90cb71e15027dadaf794cb69..2578a4677d1ee060f687be531e696b7c
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index 51d68fc13fcb8c30c10e21063f4d658f403df8ce..9e07a1e59bf756101a0aaff9891361cc7486854d 100644
|
||||
index 6f179a6c80b6b9ef90b01a987735364ec3f35602..36926b8ed2a0304c89296aa743510bb3c415a07e 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -2496,4 +2496,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@@ -2494,4 +2494,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
return spigot;
|
||||
}
|
||||
// Spigot end
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Player invulnerabilities
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
index c42a2813b40152079786dde33231d945f3144580..6e3a3a50e01c41b40451bce05015714b5a7fe1e3 100644
|
||||
index 45022ac20bea298630e151bf50b2e3322bef3b9a..0183a291efb849873a16011e76e587dbea41ee23 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
@@ -284,6 +284,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -47,7 +47,7 @@ index c42a2813b40152079786dde33231d945f3144580..6e3a3a50e01c41b40451bce05015714b
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -2489,9 +2498,17 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -2495,9 +2504,17 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
|
||||
@Override
|
||||
public boolean isFrozen() { // Paper - protected > public
|
||||
@@ -79,7 +79,7 @@ index 85964e7fe2cc96ad3b967dadd9ee5d095ee60e2a..71ab9f136144aa7b06494144671b41e2
|
||||
this.server.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(getPlayer(), packStatus));
|
||||
// Paper end
|
||||
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
index 76ba1e038fb68eafa2c2039fa1cdd74d060dcf9f..2e5afd00bc7a2a58fd66c3bf1b38293762408662 100644
|
||||
index ab113991486c913e0a05df1029571d3e920af9c7..d640150c803bc30a353ad34215cbb413632ada86 100644
|
||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
@@ -1015,6 +1015,8 @@ public abstract class PlayerList {
|
||||
@@ -108,10 +108,10 @@ index 2578a4677d1ee060f687be531e696b7c7be89e84..c441fcea9b2b5a77b801c8a69541cf42
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index 9e07a1e59bf756101a0aaff9891361cc7486854d..1c5bcc17a702f5af514ce4db7f5d096d5f449dd6 100644
|
||||
index 36926b8ed2a0304c89296aa743510bb3c415a07e..d7f24ef07d731c83408ceff7bc5da7221d49d5e9 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -2512,5 +2512,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@@ -2510,5 +2510,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
public void resetIdleTimer() {
|
||||
getHandle().resetIdleTimer();
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Signs allow color codes
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
index 6e3a3a50e01c41b40451bce05015714b5a7fe1e3..43900bb788f4baef420de0782c77d74dd7310f6e 100644
|
||||
index 0183a291efb849873a16011e76e587dbea41ee23..7c57d12599375068e59d4c25ca27b469fc750f29 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
@@ -1579,6 +1579,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -1585,6 +1585,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
|
||||
@Override
|
||||
public void openSign(TileEntitySign tileentitysign) {
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Minecart settings and WASD controls
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/core/BlockPosition.java b/src/main/java/net/minecraft/core/BlockPosition.java
|
||||
index 3c51ee00aa53e561c02bb779c7115d8475d70ed7..47381b2a804f1e2296d654933d77c2daca47f175 100644
|
||||
index 2685a395a2eff9083cd8c654c4b7e2141b0ca99b..c2706c752f6ff5c131b6db469ae85dd703d5d381 100644
|
||||
--- a/src/main/java/net/minecraft/core/BlockPosition.java
|
||||
+++ b/src/main/java/net/minecraft/core/BlockPosition.java
|
||||
@@ -42,6 +42,12 @@ public class BlockPosition extends BaseBlockPosition {
|
||||
@@ -22,7 +22,7 @@ index 3c51ee00aa53e561c02bb779c7115d8475d70ed7..47381b2a804f1e2296d654933d77c2da
|
||||
super(i, j, k);
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
index 43900bb788f4baef420de0782c77d74dd7310f6e..01d4aa706f5c1cf35210bbdbf25b4687d110eaa1 100644
|
||||
index 7c57d12599375068e59d4c25ca27b469fc750f29..a3b11e10e996de80d1383b8d5d461a0671bd07c1 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
@@ -1132,6 +1132,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Players should not cram to death
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
index 01d4aa706f5c1cf35210bbdbf25b4687d110eaa1..257265a036a62c7d5fbcff17a10a41198ed880a4 100644
|
||||
index a3b11e10e996de80d1383b8d5d461a0671bd07c1..c3ce73e6dc90035fd40489f9f68c17c5dc3101e9 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
@@ -1556,7 +1556,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -1562,7 +1562,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
|
||||
@Override
|
||||
public boolean isInvulnerable(DamageSource damagesource) {
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Add permission for F3+N debug
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
index 2e5afd00bc7a2a58fd66c3bf1b38293762408662..3622ea01edfb9dfaab254ceaf09582d9e8993174 100644
|
||||
index d640150c803bc30a353ad34215cbb413632ada86..fc47887dfd3d32788fa11845c738af53126fba46 100644
|
||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
@@ -1174,6 +1174,7 @@ public abstract class PlayerList {
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Implement infinite lava
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/material/FluidTypeFlowing.java b/src/main/java/net/minecraft/world/level/material/FluidTypeFlowing.java
|
||||
index b14b0134b42aa6d1eb285aa453ec6067cc702878..46187d18f797f834deef3685c857e88a8c4f5659 100644
|
||||
index 3b8fa837db21c5f67eab2ff8752e906ea97c288d..c735bcea9e8b1fa5a77c5c247584b8007f52e0d3 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/material/FluidTypeFlowing.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/material/FluidTypeFlowing.java
|
||||
@@ -226,7 +226,7 @@ public abstract class FluidTypeFlowing extends FluidType {
|
||||
|
||||
@@ -108,7 +108,7 @@ index 9658d93615a51375204481cfe0a1fce6f105fd70..2c983e6a092464d1867fcbe875b2e146
|
||||
@Override
|
||||
protected void saveData(NBTTagCompound nbttagcompound) {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java b/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java
|
||||
index 42cf3fa42b73739182d26fbb524ee5b304c799b2..daf738e8f0987aa6ab200189d7a26d166918b8fc 100644
|
||||
index 16c0c960aa1e4d35093b810c7648b5638175e106..e20b26ae0435c593218541eba6c68ef297fea7c8 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java
|
||||
@@ -12,6 +12,7 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||
@@ -188,8 +188,8 @@ index 42cf3fa42b73739182d26fbb524ee5b304c799b2..daf738e8f0987aa6ab200189d7a26d16
|
||||
|
||||
@Override
|
||||
protected void initDatawatcher() {
|
||||
@@ -235,6 +267,136 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
public void setSpawningEntity(java.util.UUID entity) { this.spawningEntity = entity; }
|
||||
@@ -241,6 +273,136 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
public void setShouldBurnInDay(boolean shouldBurnInDay) { this.shouldBurnInDay = shouldBurnInDay; }
|
||||
// Paper end
|
||||
|
||||
+ // Purpur start
|
||||
@@ -325,7 +325,7 @@ index 42cf3fa42b73739182d26fbb524ee5b304c799b2..daf738e8f0987aa6ab200189d7a26d16
|
||||
class b extends PathfinderGoal {
|
||||
|
||||
private final PathfinderTargetCondition b;
|
||||
@@ -247,6 +409,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
@@ -253,6 +415,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
|
||||
@Override
|
||||
public boolean a() {
|
||||
@@ -333,7 +333,7 @@ index 42cf3fa42b73739182d26fbb524ee5b304c799b2..daf738e8f0987aa6ab200189d7a26d16
|
||||
if (this.c > 0) {
|
||||
--this.c;
|
||||
return false;
|
||||
@@ -275,6 +438,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
@@ -281,6 +444,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
|
||||
@Override
|
||||
public boolean b() {
|
||||
@@ -341,7 +341,7 @@ index 42cf3fa42b73739182d26fbb524ee5b304c799b2..daf738e8f0987aa6ab200189d7a26d16
|
||||
EntityLiving entityliving = EntityPhantom.this.getGoalTarget();
|
||||
|
||||
return entityliving != null ? EntityPhantom.this.a(entityliving, PathfinderTargetCondition.a) : false;
|
||||
@@ -289,6 +453,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
@@ -295,6 +459,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
|
||||
@Override
|
||||
public boolean a() {
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn if outside world border
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
index 257265a036a62c7d5fbcff17a10a41198ed880a4..da708df0dc50ea02441f9db2bfd52f04d9a8e3da 100644
|
||||
index c3ce73e6dc90035fd40489f9f68c17c5dc3101e9..e86fb467475bd9ecd607be1a373fe80f905a496c 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
@@ -2556,4 +2556,26 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -2562,4 +2562,26 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
return (CraftPlayer) super.getBukkitEntity();
|
||||
}
|
||||
// CraftBukkit end
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Phantoms burn in light
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java b/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java
|
||||
index daf738e8f0987aa6ab200189d7a26d166918b8fc..07ede7b75a65a5815f1ae1ebf03ec0fdb4621afb 100644
|
||||
index e20b26ae0435c593218541eba6c68ef297fea7c8..d19567abb1844295764e6289ca19602809a9b37a 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java
|
||||
@@ -18,6 +18,7 @@ import net.minecraft.sounds.SoundEffect;
|
||||
@@ -36,12 +36,12 @@ index daf738e8f0987aa6ab200189d7a26d166918b8fc..07ede7b75a65a5815f1ae1ebf03ec0fd
|
||||
|
||||
@Override
|
||||
public void movementTick() {
|
||||
- if (this.isAlive() && this.eG()) {
|
||||
+ if (this.isAlive() && ((world.purpurConfig.phantomBurnInDaylight && this.isInDaylight()) || (world.purpurConfig.phantomBurnInLight > 0 && world.getLightLevel(new BlockPosition(this)) >= world.purpurConfig.phantomBurnInLight))) { // Purpur
|
||||
- if (this.isAlive() && shouldBurnInDay && this.eG()) { // Paper - Configurable Burning
|
||||
+ if (this.isAlive() && ((shouldBurnInDay || world.purpurConfig.phantomBurnInDaylight && this.isInDaylight()) || (world.purpurConfig.phantomBurnInLight > 0 && world.getLightLevel(new BlockPosition(this)) >= world.purpurConfig.phantomBurnInLight))) { // Purpur
|
||||
this.setOnFire(8);
|
||||
}
|
||||
|
||||
@@ -416,7 +419,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
@@ -422,7 +425,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
} else {
|
||||
this.c = 60;
|
||||
List<EntityHuman> list = EntityPhantom.this.world.a(this.b, (EntityLiving) EntityPhantom.this, EntityPhantom.this.getBoundingBox().grow(16.0D, 64.0D, 16.0D));
|
||||
@@ -50,7 +50,7 @@ index daf738e8f0987aa6ab200189d7a26d166918b8fc..07ede7b75a65a5815f1ae1ebf03ec0fd
|
||||
if (!list.isEmpty()) {
|
||||
list.sort(Comparator.comparing(Entity::locY).reversed());
|
||||
Iterator iterator = list.iterator();
|
||||
@@ -515,6 +518,12 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
@@ -521,6 +524,12 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
return false;
|
||||
} else if (entityliving instanceof EntityHuman && (((EntityHuman) entityliving).isSpectator() || ((EntityHuman) entityliving).isCreative())) {
|
||||
return false;
|
||||
|
||||
@@ -68,7 +68,7 @@ index 0000000000000000000000000000000000000000..8b66d1215a6eef1302b5ecb46a4b3d50
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
index da708df0dc50ea02441f9db2bfd52f04d9a8e3da..0ed513afdab9b4f8e91b55ffc05f6d26bbd14d22 100644
|
||||
index e86fb467475bd9ecd607be1a373fe80f905a496c..b16b7fe6fbb39a0dc89da18edbba88714c89fc23 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
@@ -80,7 +80,6 @@ import net.minecraft.server.network.PlayerConnection;
|
||||
@@ -4229,7 +4229,7 @@ index fe80e93b00f3bb2f297c6528c3951313fa3c08c7..15ed51a2746c09538a425fce25fa25f2
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java b/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java
|
||||
index 07ede7b75a65a5815f1ae1ebf03ec0fdb4621afb..1c24a2abe3921fb3cf8341e4fd620d919e2917af 100644
|
||||
index d19567abb1844295764e6289ca19602809a9b37a..7e5f86a53c3a9efd4bb433f2fe1660a211c74049 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java
|
||||
@@ -13,6 +13,7 @@ import net.minecraft.network.syncher.DataWatcher;
|
||||
@@ -4334,12 +4334,12 @@ index 07ede7b75a65a5815f1ae1ebf03ec0fdb4621afb..1c24a2abe3921fb3cf8341e4fd620d91
|
||||
|
||||
@Override
|
||||
public void movementTick() {
|
||||
- if (this.isAlive() && ((world.purpurConfig.phantomBurnInDaylight && this.isInDaylight()) || (world.purpurConfig.phantomBurnInLight > 0 && world.getLightLevel(new BlockPosition(this)) >= world.purpurConfig.phantomBurnInLight))) { // Purpur
|
||||
+ if (this.isAlive() && !hasPurpurRider() && ((world.purpurConfig.phantomBurnInDaylight && this.isInDaylight()) || (world.purpurConfig.phantomBurnInLight > 0 && world.getLightLevel(new BlockPosition(this)) >= world.purpurConfig.phantomBurnInLight))) { // Purpur
|
||||
- if (this.isAlive() && ((shouldBurnInDay || world.purpurConfig.phantomBurnInDaylight && this.isInDaylight()) || (world.purpurConfig.phantomBurnInLight > 0 && world.getLightLevel(new BlockPosition(this)) >= world.purpurConfig.phantomBurnInLight))) { // Purpur
|
||||
+ if (this.isAlive() && !hasPurpurRider() && ((shouldBurnInDay || world.purpurConfig.phantomBurnInDaylight && this.isInDaylight()) || (world.purpurConfig.phantomBurnInLight > 0 && world.getLightLevel(new BlockPosition(this)) >= world.purpurConfig.phantomBurnInLight))) { // Purpur
|
||||
this.setOnFire(8);
|
||||
}
|
||||
|
||||
@@ -412,7 +468,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
@@ -418,7 +474,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
|
||||
@Override
|
||||
public boolean a() {
|
||||
@@ -4348,7 +4348,7 @@ index 07ede7b75a65a5815f1ae1ebf03ec0fdb4621afb..1c24a2abe3921fb3cf8341e4fd620d91
|
||||
if (this.c > 0) {
|
||||
--this.c;
|
||||
return false;
|
||||
@@ -441,7 +497,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
@@ -447,7 +503,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
|
||||
@Override
|
||||
public boolean b() {
|
||||
@@ -4357,7 +4357,7 @@ index 07ede7b75a65a5815f1ae1ebf03ec0fdb4621afb..1c24a2abe3921fb3cf8341e4fd620d91
|
||||
EntityLiving entityliving = EntityPhantom.this.getGoalTarget();
|
||||
|
||||
return entityliving != null ? EntityPhantom.this.a(entityliving, PathfinderTargetCondition.a) : false;
|
||||
@@ -456,7 +512,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
@@ -462,7 +518,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
|
||||
@Override
|
||||
public boolean a() {
|
||||
@@ -4366,7 +4366,7 @@ index 07ede7b75a65a5815f1ae1ebf03ec0fdb4621afb..1c24a2abe3921fb3cf8341e4fd620d91
|
||||
EntityLiving entityliving = EntityPhantom.this.getGoalTarget();
|
||||
|
||||
return entityliving != null ? EntityPhantom.this.a(EntityPhantom.this.getGoalTarget(), PathfinderTargetCondition.a) : false;
|
||||
@@ -654,14 +710,23 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
@@ -660,14 +716,23 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4392,7 +4392,7 @@ index 07ede7b75a65a5815f1ae1ebf03ec0fdb4621afb..1c24a2abe3921fb3cf8341e4fd620d91
|
||||
}
|
||||
|
||||
class d extends EntityAIBodyControl {
|
||||
@@ -677,7 +742,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
@@ -683,7 +748,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4401,7 +4401,7 @@ index 07ede7b75a65a5815f1ae1ebf03ec0fdb4621afb..1c24a2abe3921fb3cf8341e4fd620d91
|
||||
|
||||
private float j = 0.1F;
|
||||
|
||||
@@ -686,7 +751,19 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
@@ -692,7 +757,19 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -4672,7 +4672,7 @@ index 342bc9b586ef835e865d6f84bf66f1069ab10f00..0b8517d4e83d14ddf8b6d1f1cf4c538f
|
||||
protected SoundEffect getSoundAmbient() {
|
||||
return SoundEffects.ENTITY_SKELETON_AMBIENT;
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/EntitySkeletonAbstract.java b/src/main/java/net/minecraft/world/entity/monster/EntitySkeletonAbstract.java
|
||||
index 06d50b22ede102556fdb3e2a6f1424f7ff13f120..7ec60987229927e5fe7164f1d4eae8222832e920 100644
|
||||
index f8358e40c42f219232bf928f4e0073339a5e19d5..81059fc3fc22f251b5b08f0cd6814a992cff6b1e 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EntitySkeletonAbstract.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EntitySkeletonAbstract.java
|
||||
@@ -5,6 +5,7 @@ import java.time.temporal.ChronoField;
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add tablist suffix option for afk
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
index 0ed513afdab9b4f8e91b55ffc05f6d26bbd14d22..a2fc2924191590c6273f0393f39516d686573296 100644
|
||||
index b16b7fe6fbb39a0dc89da18edbba88714c89fc23..94077df06faf044aee3aba554de4095fbe9a8781 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
@@ -2120,7 +2120,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -2126,7 +2126,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
}
|
||||
|
||||
if (world.purpurConfig.idleTimeoutUpdateTabList) {
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Add boat fall damage config
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
index a2fc2924191590c6273f0393f39516d686573296..5a119537aca2f47c60b24a7b394a99051aec87b8 100644
|
||||
index 94077df06faf044aee3aba554de4095fbe9a8781..9ffe45df2540d128e84a3cb44c11c253a446eddc 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
@@ -1139,7 +1139,16 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Spread out and optimise player list ticks
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
index 3622ea01edfb9dfaab254ceaf09582d9e8993174..070de6c066b2e293e0bc0ea9722a9a3dcf520431 100644
|
||||
index fc47887dfd3d32788fa11845c738af53126fba46..21c51883c73dfaa7ec874fb7f8ed7c284239e0a5 100644
|
||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
@@ -151,7 +151,7 @@ public abstract class PlayerList {
|
||||
@@ -56,10 +56,10 @@ index 3622ea01edfb9dfaab254ceaf09582d9e8993174..070de6c066b2e293e0bc0ea9722a9a3d
|
||||
|
||||
public void sendAll(Packet<?> packet) {
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index 1c5bcc17a702f5af514ce4db7f5d096d5f449dd6..e204374c8f17ca5514e9bcfd24d411069285de29 100644
|
||||
index d7f24ef07d731c83408ceff7bc5da7221d49d5e9..4d442f2ec45ba023772887cfdb5e5e9f829b2701 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -1444,7 +1444,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@@ -1442,7 +1442,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public boolean canSee(Player player) {
|
||||
|
||||
@@ -905,7 +905,7 @@ index 15ed51a2746c09538a425fce25fa25f2619b7033..626a207cdb727866cb75f4e53a688086
|
||||
|
||||
public static AttributeProvider.Builder m() {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java b/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java
|
||||
index 1c24a2abe3921fb3cf8341e4fd620d919e2917af..11e45bfa1086f56cdbd87e3ced194ee82f36d142 100644
|
||||
index 7e5f86a53c3a9efd4bb433f2fe1660a211c74049..a9ab31a538033f1dec39820d88ac13daa1a1c952 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java
|
||||
@@ -120,6 +120,11 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Phantom flames on swoop
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java b/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java
|
||||
index 11e45bfa1086f56cdbd87e3ced194ee82f36d142..0e78d383347fa15a008bde543b08c707bb5bd54a 100644
|
||||
index a9ab31a538033f1dec39820d88ac13daa1a1c952..b91168309d948d801d7f4e85e14ac28289b0c934 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EntityPhantom.java
|
||||
@@ -226,6 +226,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||
|
||||
@@ -42,7 +42,7 @@ index cbccb889167f8e235f417e224bbf5f025a6304f5..df6eaa94f2928242dbd69a918d0b0b91
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
index 070de6c066b2e293e0bc0ea9722a9a3dcf520431..d8d54274b5a294391b8bf2bc660c6b623914f5bf 100644
|
||||
index 21c51883c73dfaa7ec874fb7f8ed7c284239e0a5..c7dd42c70a3215c57f12336050f78bf5458cce5c 100644
|
||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
@@ -598,6 +598,8 @@ public abstract class PlayerList {
|
||||
|
||||
@@ -123,7 +123,7 @@ index dcdc82b42689b4962323938a62cf7ded49afd6f4..4a70d657fd83627e8d66b52cb5f87381
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index e204374c8f17ca5514e9bcfd24d411069285de29..7e0b3aa37af39db2bc2f630e479008dd9a443776 100644
|
||||
index 4d442f2ec45ba023772887cfdb5e5e9f829b2701..9320f3221e17cce102bd6ea119e5cc4137ce72ff 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -126,6 +126,7 @@ import org.bukkit.entity.EntityType;
|
||||
@@ -134,7 +134,7 @@ index e204374c8f17ca5514e9bcfd24d411069285de29..7e0b3aa37af39db2bc2f630e479008dd
|
||||
import org.bukkit.event.player.PlayerUnregisterChannelEvent;
|
||||
import org.bukkit.inventory.InventoryView.Property;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@@ -883,6 +884,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@@ -881,6 +882,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
|
||||
if (entity.isVehicle()) {
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Fix stuck in portals
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
index 5a119537aca2f47c60b24a7b394a99051aec87b8..75871b1556f7c54a13488d9f985051f732d68d67 100644
|
||||
index 9ffe45df2540d128e84a3cb44c11c253a446eddc..d72ffa37336437384191abd1e9cd65f1d652b3ce 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
@@ -1289,6 +1289,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
index 75871b1556f7c54a13488d9f985051f732d68d67..1288c946865c2be32fafbd7dbe419a98c8050194 100644
|
||||
index d72ffa37336437384191abd1e9cd65f1d652b3ce..a88585c95d33d48b85ee8fd52b44dd5c09b5e81a 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
||||
@@ -1439,7 +1439,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -1445,7 +1445,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
return entitymonster.f((EntityHuman) this);
|
||||
});
|
||||
|
||||
|
||||
@@ -48,10 +48,10 @@ index bd02320d450a7fd7254f01b1c44ef421c1810ea7..33f380c543677b5a382d1e9163cd0bbd
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/EntitySkeletonAbstract.java b/src/main/java/net/minecraft/world/entity/monster/EntitySkeletonAbstract.java
|
||||
index 7ec60987229927e5fe7164f1d4eae8222832e920..bccbde579fcaa0c5f606dc3bb0cd1a32b9d7a1a6 100644
|
||||
index 81059fc3fc22f251b5b08f0cd6814a992cff6b1e..f4c5c7995247b182d01d9232c8060d9fdb97c0a1 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EntitySkeletonAbstract.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EntitySkeletonAbstract.java
|
||||
@@ -154,11 +154,7 @@ public abstract class EntitySkeletonAbstract extends EntityMonster implements IR
|
||||
@@ -160,11 +160,7 @@ public abstract class EntitySkeletonAbstract extends EntityMonster implements IR
|
||||
this.eL();
|
||||
this.setCanPickupLoot(this.world.paperConfig.skeletonsAlwaysCanPickUpLoot || this.random.nextFloat() < 0.55F * difficultydamagescaler.d()); // Paper
|
||||
if (this.getEquipment(EnumItemSlot.HEAD).isEmpty()) {
|
||||
|
||||
Reference in New Issue
Block a user