Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions Spigot-API-Patches/0202-Add-Mob-Goal-API.patch
Original file line number Diff line number Diff line change
Expand Up @@ -148,10 +148,10 @@ index 0000000000000000000000000000000000000000..9cd98c6fcfa3eb439d9013ef76ef4661
+}
diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/GoalType.java b/src/main/java/com/destroystokyo/paper/entity/ai/GoalType.java
new file mode 100644
index 0000000000000000000000000000000000000000..e2b44aff21e6818512a81f03a3bff913abf61f9f
index 0000000000000000000000000000000000000000..7024c8f484d2460abf3abfe65a29771d814105ec
--- /dev/null
+++ b/src/main/java/com/destroystokyo/paper/entity/ai/GoalType.java
@@ -0,0 +1,13 @@
@@ -0,0 +1,17 @@
+package com.destroystokyo.paper.entity.ai;
+
+/**
Expand All @@ -162,7 +162,11 @@ index 0000000000000000000000000000000000000000..e2b44aff21e6818512a81f03a3bff913
+ MOVE,
+ LOOK,
+ JUMP,
+ TARGET
+ TARGET,
+ /**
+ * Used to map vanilla goals, that are a behavior goal but don't have a type set...
+ */
+ UNKNOWN_BEHAVIOR,
+
+}
diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoals.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoals.java
Expand Down
11 changes: 7 additions & 4 deletions Spigot-Server-Patches/0154-Basic-PlayerProfile-API.patch
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ Establishes base extension of profile systems for future edits too

diff --git a/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java b/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java
new file mode 100644
index 0000000000000000000000000000000000000000..00b7630ccb2be7a78ab5471c8e8bdcd5a92209a0
index 0000000000000000000000000000000000000000..293b73f4747f48dbf8b6a8453d3fc777de11588d
--- /dev/null
+++ b/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java
@@ -0,0 +1,294 @@
@@ -0,0 +1,297 @@
+package com.destroystokyo.paper.profile;
+
+import com.destroystokyo.paper.PaperConfig;
Expand Down Expand Up @@ -194,13 +194,15 @@ index 0000000000000000000000000000000000000000..00b7630ccb2be7a78ab5471c8e8bdcd5
+ public boolean complete(boolean textures, boolean onlineMode) {
+ MinecraftServer server = MinecraftServer.getServer();
+
+ boolean isCompleteFromCache = this.completeFromCache(false, onlineMode);
+ boolean isCompleteFromCache = this.completeFromCache(true, onlineMode);
+ if (onlineMode && (!isCompleteFromCache || textures && !hasTextures())) {
+ GameProfile result = server.getSessionService().fillProfileProperties(profile, true);
+ if (result != null) {
+ copyProfileProperties(result, this.profile, true);
+ }
+ server.getUserCache().saveProfile(this.profile);
+ if (this.profile.isComplete()) {
+ server.getUserCache().saveProfile(this.profile);
+ }
+ }
+ return profile.isComplete() && (!onlineMode || !textures || hasTextures());
+ }
Expand All @@ -218,6 +220,7 @@ index 0000000000000000000000000000000000000000..00b7630ccb2be7a78ab5471c8e8bdcd5
+ }
+
+ for (Property property : sourceProperties.values()) {
+ targetProperties.removeAll(property.getName());
+ targetProperties.put(property.getName(), property);
+ }
+ }
Expand Down
30 changes: 24 additions & 6 deletions Spigot-Server-Patches/0251-Improve-BlockPosition-inlining.patch
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ This should result in an across the board speedup in anything that accesses bloc
This is based upon conclusions drawn from inspecting the assenmbly generated bythe JIT compiler on my microbenchmarks.
They had 'callq' (invoke) instead of 'mov' (get from memory) instructions.

In addition, manually inline PooledBlockPosition#d(int, int, int) as it is a hot method that doesn't get inlined due to
invokespecial instructions.

diff --git a/src/main/java/net/minecraft/server/BaseBlockPosition.java b/src/main/java/net/minecraft/server/BaseBlockPosition.java
index 7b05bb9edcd059a134cef12cc9fea570217bc601..a0450a7ddf21659c5636b3f298e6bf4f0a93fc4d 100644
--- a/src/main/java/net/minecraft/server/BaseBlockPosition.java
Expand Down Expand Up @@ -140,7 +143,7 @@ index 7b05bb9edcd059a134cef12cc9fea570217bc601..a0450a7ddf21659c5636b3f298e6bf4f
return (int) (f + f1 + f2);
}
diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java
index f8ac39e1b019b0918996f745d99f6ed09db0fd11..ec0e8f970dba64561afd6477a5df2821d9a8889a 100644
index f8ac39e1b019b0918996f745d99f6ed09db0fd11..9e523157f9daf8930afd96ab8701e500eb078f42 100644
--- a/src/main/java/net/minecraft/server/BlockPosition.java
+++ b/src/main/java/net/minecraft/server/BlockPosition.java
@@ -99,6 +99,7 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
Expand All @@ -160,7 +163,22 @@ index f8ac39e1b019b0918996f745d99f6ed09db0fd11..ec0e8f970dba64561afd6477a5df2821
}

public BlockPosition a(double d0, double d1, double d2) {
@@ -343,11 +344,13 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
@@ -298,7 +299,13 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali

@Override
public BlockPosition.PooledBlockPosition d(int i, int j, int k) {
- return (BlockPosition.PooledBlockPosition) super.d(i, j, k);
+ // Paper start - manually inline this hot method
+ //return (BlockPosition.PooledBlockPosition) super.d(i, j, k);
+ this.x = i;
+ this.y = j;
+ this.z = k;
+ return this;
+ // Paper end
}

@Override
@@ -343,11 +350,13 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
}

public static class MutableBlockPosition extends BlockPosition {
Expand All @@ -176,7 +194,7 @@ index f8ac39e1b019b0918996f745d99f6ed09db0fd11..ec0e8f970dba64561afd6477a5df2821
public MutableBlockPosition() {
this(0, 0, 0);
}
@@ -357,10 +360,13 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
@@ -357,10 +366,13 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
}

public MutableBlockPosition(int i, int j, int k) {
Expand All @@ -192,7 +210,7 @@ index f8ac39e1b019b0918996f745d99f6ed09db0fd11..ec0e8f970dba64561afd6477a5df2821
}

public MutableBlockPosition(double d0, double d1, double d2) {
@@ -391,6 +397,9 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
@@ -391,6 +403,9 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
return super.a(enumblockrotation).immutableCopy();
}

Expand All @@ -202,7 +220,7 @@ index f8ac39e1b019b0918996f745d99f6ed09db0fd11..ec0e8f970dba64561afd6477a5df2821
@Override
public int getX() {
return this.b;
@@ -404,13 +413,16 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
@@ -404,13 +419,16 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
@Override
public int getZ() {
return this.d;
Expand All @@ -223,7 +241,7 @@ index f8ac39e1b019b0918996f745d99f6ed09db0fd11..ec0e8f970dba64561afd6477a5df2821
return this;
}

@@ -440,26 +452,26 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
@@ -440,26 +458,26 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
}

public BlockPosition.MutableBlockPosition c(EnumDirection enumdirection, int i) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,10 +99,10 @@ index 6d351f0979ecfa8e500edf8dd03b4a455fd5d180..a44f65f40d2080b63069602a454266ee

@Override
diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java
index a3a376e35eaf17b128048bd26a22eef713e7d535..3fcfe416d26808fa1c9bfdc5b413b149764c544a 100644
index 8a3435a0accd68982fab497f25557edb5fdf56b4..9fc34246a845168d158a6b2793d8e344f2d2b008 100644
--- a/src/main/java/net/minecraft/server/BlockPosition.java
+++ b/src/main/java/net/minecraft/server/BlockPosition.java
@@ -452,6 +452,7 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
@@ -458,6 +458,7 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
return this.d(MathHelper.floor(d0), MathHelper.floor(d1), MathHelper.floor(d2));
}

Expand Down Expand Up @@ -338,7 +338,7 @@ index 321eae23c575528788b1b575f17593580d6ba737..b19bbbbc81376177751396a2de9452ce

public final SoundEffectType getStepSound() { return this.r(); } // Paper - OBFHELPER
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index dab9d36dfcda6f363fb78ad6be6a0306786945ae..6f7da0a79bbbb2be354796033baa498845aaea7c 100644
index adacff593ee20804b5ddb2df55b66bc6c162dc70..a52d8a27cee6721c32444d9d2bd81135b7d4b859 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1564,10 +1564,19 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
Expand All @@ -363,7 +363,7 @@ index dab9d36dfcda6f363fb78ad6be6a0306786945ae..6f7da0a79bbbb2be354796033baa4988

public boolean isSavingDisabled() {
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 1f28e24f4f056c1f72293a3004c6dbdb8f8d1f9e..5519fb529dd8e1f93aab79dbc434715e08edb94f 100644
index f32e313a6287c8f5d487d4ad7148cac176773228..7fded15f14a3f5c04a676e9e25413718b9922c13 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -531,7 +531,12 @@ public class WorldServer extends World {
Expand Down
48 changes: 40 additions & 8 deletions Spigot-Server-Patches/0499-Implement-Mob-Goal-API.patch
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ index 64bd667e8b11263e483364efc3414396819a255c..e4c63bb76cb598545f9d215a8859724d
<repositories>
diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..9ee1a8d5f494680ac9d4c45d7b1255e28a77c566
index 0000000000000000000000000000000000000000..cf720c384b639f154b3a1ea8d45836a0b28aa763
--- /dev/null
+++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
@@ -0,0 +1,345 @@
@@ -0,0 +1,349 @@
+package com.destroystokyo.paper.entity.ai;
+
+import com.google.common.collect.BiMap;
Expand Down Expand Up @@ -308,6 +308,8 @@ index 0000000000000000000000000000000000000000..9ee1a8d5f494680ac9d4c45d7b1255e2
+ return GoalType.LOOK;
+ case JUMP:
+ return GoalType.JUMP;
+ case UNKNOWN_BEHAVIOR:
+ return GoalType.UNKNOWN_BEHAVIOR;
+ case TARGET:
+ return GoalType.TARGET;
+ default:
Expand All @@ -331,6 +333,8 @@ index 0000000000000000000000000000000000000000..9ee1a8d5f494680ac9d4c45d7b1255e2
+ return PathfinderGoal.Type.LOOK;
+ case JUMP:
+ return PathfinderGoal.Type.JUMP;
+ case UNKNOWN_BEHAVIOR:
+ return PathfinderGoal.Type.UNKNOWN_BEHAVIOR;
+ case TARGET:
+ return PathfinderGoal.Type.TARGET;
+ default:
Expand Down Expand Up @@ -375,10 +379,10 @@ index 0000000000000000000000000000000000000000..9ee1a8d5f494680ac9d4c45d7b1255e2
+}
diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/PaperCustomGoal.java b/src/main/java/com/destroystokyo/paper/entity/ai/PaperCustomGoal.java
new file mode 100644
index 0000000000000000000000000000000000000000..8e4dc2708d71edcb8f32bb72a64f3c493052c2a8
index 0000000000000000000000000000000000000000..5720feaaf92fc8b6a70e7f6e2d25163c42d231c1
--- /dev/null
+++ b/src/main/java/com/destroystokyo/paper/entity/ai/PaperCustomGoal.java
@@ -0,0 +1,52 @@
@@ -0,0 +1,55 @@
+package com.destroystokyo.paper.entity.ai;
+
+import net.minecraft.server.PathfinderGoal;
Expand All @@ -396,6 +400,9 @@ index 0000000000000000000000000000000000000000..8e4dc2708d71edcb8f32bb72a64f3c49
+ this.handle = handle;
+
+ this.setTypes(MobGoalHelper.paperToVanilla(handle.getTypes()));
+ if (this.getGoalTypes().size() == 0) {
+ this.getGoalTypes().addUnchecked(Type.UNKNOWN_BEHAVIOR);
+ }
+ }
+
+ @Override
Expand Down Expand Up @@ -744,12 +751,21 @@ index 9df0006c1a283f77c4d01d9fce9062fc1c9bbb1f..b3329c6fcd6758a781a51f5ba8f5052a
+ }
}
diff --git a/src/main/java/net/minecraft/server/PathfinderGoal.java b/src/main/java/net/minecraft/server/PathfinderGoal.java
index 93009d83f07bdaf7bc424ffb99cbfe716ca0d66d..f1c4ce9e4b83aa966b4ae4dcd6a283e08f8db783 100644
index 93009d83f07bdaf7bc424ffb99cbfe716ca0d66d..003868a9d6a298f37cebec49046533c7325ab846 100644
--- a/src/main/java/net/minecraft/server/PathfinderGoal.java
+++ b/src/main/java/net/minecraft/server/PathfinderGoal.java
@@ -10,9 +10,9 @@ public abstract class PathfinderGoal {
@@ -8,11 +8,17 @@ public abstract class PathfinderGoal {
private final EnumSet<PathfinderGoal.Type> a = 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<Type> goalTypes = new OptimizedSmallEnumSet<>(PathfinderGoal.Type.class); // Paper - remove streams from pathfindergoalselector

public PathfinderGoal() {}
- public PathfinderGoal() {}
+ // Paper start make sure goaltypes is never empty
+ public PathfinderGoal() {
+ if (this.goalTypes.size() == 0) {
+ this.goalTypes.addUnchecked(Type.UNKNOWN_BEHAVIOR);
+ }
+ }
+ // paper end

- public abstract boolean a();
+ public boolean a() { return this.shouldActivate(); } public boolean shouldActivate() { return false;} public boolean shouldActivate2() { return a(); } // Paper - OBFHELPER, for both directions...
Expand All @@ -759,7 +775,7 @@ index 93009d83f07bdaf7bc424ffb99cbfe716ca0d66d..f1c4ce9e4b83aa966b4ae4dcd6a283e0
return this.a();
}

@@ -20,16 +20,16 @@ public abstract class PathfinderGoal {
@@ -20,19 +26,23 @@ public abstract class PathfinderGoal {
return true;
}

Expand All @@ -779,6 +795,22 @@ index 93009d83f07bdaf7bc424ffb99cbfe716ca0d66d..f1c4ce9e4b83aa966b4ae4dcd6a283e0
// Paper start - remove streams from pathfindergoalselector
this.goalTypes.clear();
this.goalTypes.addAllUnchecked(enumset);
+ // make sure its never empty
+ if (this.goalTypes.size() == 0) {
+ this.goalTypes.addUnchecked(Type.UNKNOWN_BEHAVIOR);
+ }
// Paper end - remove streams from pathfindergoalselector
}

@@ -48,7 +58,7 @@ public abstract class PathfinderGoal {

public static enum Type {

- MOVE, LOOK, JUMP, TARGET;
+ MOVE, LOOK, JUMP, TARGET, UNKNOWN_BEHAVIOR; // Paper - add unknown

private Type() {}
}
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
index 84d2abbcb90eb09a19fa0922cfc053c74f8c56e4..a68fc11ec668576d1453459666caeacf5fbc49b8 100644
--- a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
Expand Down