convert API/server tests to mockito (#8848)
* convert API tests to mockito * convert server tests to mockito * add co-author
Dieser Commit ist enthalten in:
Ursprung
f2f9e8cc4d
Commit
afe633df08
@ -38,6 +38,8 @@ subprojects {
|
|||||||
exceptionFormat = TestExceptionFormat.FULL
|
exceptionFormat = TestExceptionFormat.FULL
|
||||||
events(TestLogEvent.STANDARD_OUT)
|
events(TestLogEvent.STANDARD_OUT)
|
||||||
}
|
}
|
||||||
|
minHeapSize = "2g"
|
||||||
|
maxHeapSize = "2g"
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
|
@ -1,114 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Shane Freeder <theboyetronic@gmail.com>
|
|
||||||
Date: Sun, 17 Mar 2019 23:04:30 +0000
|
|
||||||
Subject: [PATCH] Annotation Test changes
|
|
||||||
|
|
||||||
- Allow use of TYPE_USE annotations
|
|
||||||
- Ignore package-private methods for nullability annotations
|
|
||||||
- Add excludes for classes which don't pass
|
|
||||||
|
|
||||||
diff --git a/src/test/java/org/bukkit/AnnotationTest.java b/src/test/java/org/bukkit/AnnotationTest.java
|
|
||||||
index 4ac3dd977e75cd8464163351d306e037ee32cb48..1a71bb8861150c1add6446aa2fad0f7035dd6873 100644
|
|
||||||
--- a/src/test/java/org/bukkit/AnnotationTest.java
|
|
||||||
+++ b/src/test/java/org/bukkit/AnnotationTest.java
|
|
||||||
@@ -40,7 +40,17 @@ public class AnnotationTest {
|
|
||||||
"org/bukkit/util/io/Wrapper",
|
|
||||||
"org/bukkit/plugin/java/PluginClassLoader",
|
|
||||||
// Generic functional interface
|
|
||||||
- "org/bukkit/util/Consumer"
|
|
||||||
+ "org/bukkit/util/Consumer",
|
|
||||||
+ // Paper start
|
|
||||||
+ // Timings history is broken in terms of nullability due to guavas Function defining that the param is NonNull
|
|
||||||
+ "co/aikar/timings/TimingHistory$2",
|
|
||||||
+ "co/aikar/timings/TimingHistory$2$1",
|
|
||||||
+ "co/aikar/timings/TimingHistory$2$1$1",
|
|
||||||
+ "co/aikar/timings/TimingHistory$2$1$2",
|
|
||||||
+ "co/aikar/timings/TimingHistory$3",
|
|
||||||
+ "co/aikar/timings/TimingHistory$4",
|
|
||||||
+ "co/aikar/timings/TimingHistoryEntry$1"
|
|
||||||
+ // Paper end
|
|
||||||
};
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@@ -67,14 +77,40 @@ public class AnnotationTest {
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mustBeAnnotated(Type.getReturnType(method.desc)) && !isWellAnnotated(method.invisibleAnnotations)) {
|
|
||||||
+ // Paper start - Allow use of TYPE_USE annotations
|
|
||||||
+ boolean warn = true;
|
|
||||||
+ if (isWellAnnotated(method.visibleTypeAnnotations)) {
|
|
||||||
+ warn = false;
|
|
||||||
+ } else if (method.invisibleTypeAnnotations != null) {
|
|
||||||
+ dance: for (final org.objectweb.asm.tree.TypeAnnotationNode invisibleTypeAnnotation : method.invisibleTypeAnnotations) {
|
|
||||||
+ final org.objectweb.asm.TypeReference ref = new org.objectweb.asm.TypeReference(invisibleTypeAnnotation.typeRef);
|
|
||||||
+ if (ref.getSort() == org.objectweb.asm.TypeReference.METHOD_RETURN && java.util.Arrays.binarySearch(ACCEPTED_ANNOTATIONS, invisibleTypeAnnotation.desc) >= 0) {
|
|
||||||
+ warn = false;
|
|
||||||
+ break dance; // cha cha real smooth
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ if (warn)
|
|
||||||
+ // Paper end
|
|
||||||
warn(errors, clazz, method, "return value");
|
|
||||||
}
|
|
||||||
|
|
||||||
Type[] paramTypes = Type.getArgumentTypes(method.desc);
|
|
||||||
List<ParameterNode> parameters = method.parameters;
|
|
||||||
|
|
||||||
+ dancing: // Paper
|
|
||||||
for (int i = 0; i < paramTypes.length; i++) {
|
|
||||||
if (mustBeAnnotated(paramTypes[i]) ^ isWellAnnotated(method.invisibleParameterAnnotations == null ? null : method.invisibleParameterAnnotations[i])) {
|
|
||||||
+ // Paper start
|
|
||||||
+ if (method.invisibleTypeAnnotations != null) {
|
|
||||||
+ for (final org.objectweb.asm.tree.TypeAnnotationNode invisibleTypeAnnotation : method.invisibleTypeAnnotations) {
|
|
||||||
+ final org.objectweb.asm.TypeReference ref = new org.objectweb.asm.TypeReference(invisibleTypeAnnotation.typeRef);
|
|
||||||
+ if (ref.getSort() == org.objectweb.asm.TypeReference.METHOD_FORMAL_PARAMETER && ref.getTypeParameterIndex() == i && java.util.Arrays.binarySearch(ACCEPTED_ANNOTATIONS, invisibleTypeAnnotation.desc) >= 0) {
|
|
||||||
+ continue dancing;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ // Paper end - Allow use of TYPE_USE annotations
|
|
||||||
ParameterNode paramNode = parameters == null ? null : parameters.get(i);
|
|
||||||
String paramName = paramNode == null ? null : paramNode.name;
|
|
||||||
|
|
||||||
@@ -91,13 +127,18 @@ public class AnnotationTest {
|
|
||||||
|
|
||||||
Collections.sort(errors);
|
|
||||||
|
|
||||||
- System.out.println(errors.size() + " missing annotation(s):");
|
|
||||||
+ StringBuilder builder = new StringBuilder()
|
|
||||||
+ .append("There ")
|
|
||||||
+ .append(errors.size() != 1 ? "are " : "is ")
|
|
||||||
+ .append(errors.size())
|
|
||||||
+ .append(" missing annotation")
|
|
||||||
+ .append(errors.size() != 1 ? "s:\n" : ":\n");
|
|
||||||
+
|
|
||||||
for (String message : errors) {
|
|
||||||
- System.out.print("\t");
|
|
||||||
- System.out.println(message);
|
|
||||||
+ builder.append("\t").append(message).append("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
- Assert.fail("There " + errors.size() + " are missing annotation(s)");
|
|
||||||
+ Assert.fail(builder.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void collectClasses(@NotNull File from, @NotNull Map<String, ClassNode> to) throws IOException {
|
|
||||||
@@ -152,7 +193,7 @@ public class AnnotationTest {
|
|
||||||
|
|
||||||
private static boolean isMethodIncluded(@NotNull ClassNode clazz, @NotNull MethodNode method, @NotNull Map<String, ClassNode> allClasses) {
|
|
||||||
// Exclude private, synthetic and deprecated methods
|
|
||||||
- if ((method.access & (Opcodes.ACC_PRIVATE | Opcodes.ACC_SYNTHETIC | Opcodes.ACC_DEPRECATED)) != 0) {
|
|
||||||
+ if ((method.access & (Opcodes.ACC_PRIVATE | Opcodes.ACC_SYNTHETIC | Opcodes.ACC_DEPRECATED)) != 0 || (method.access & (Opcodes.ACC_PRIVATE | Opcodes.ACC_PROTECTED | Opcodes.ACC_PUBLIC)) == 0) { // Paper - ignore package-private
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -174,7 +215,7 @@ public class AnnotationTest {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
- private static boolean isWellAnnotated(@Nullable List<AnnotationNode> annotations) {
|
|
||||||
+ private static boolean isWellAnnotated(@Nullable List<? extends AnnotationNode> annotations) { // Paper
|
|
||||||
if (annotations == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
478
patches/api/0003-Test-changes.patch
Normale Datei
478
patches/api/0003-Test-changes.patch
Normale Datei
@ -0,0 +1,478 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Shane Freeder <theboyetronic@gmail.com>
|
||||||
|
Date: Sun, 17 Mar 2019 23:04:30 +0000
|
||||||
|
Subject: [PATCH] Test changes
|
||||||
|
|
||||||
|
- convert to mockito for mocking of types
|
||||||
|
- Allow use of TYPE_USE annotations
|
||||||
|
- Ignore package-private methods for nullability annotations
|
||||||
|
- Add excludes for classes which don't pass
|
||||||
|
|
||||||
|
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||||
|
|
||||||
|
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||||
|
index 2b3288057d67e5add4e22e6b7072527057bcd808..4b3453f8dab6008b6fad6245fb7205da33b4bfb8 100644
|
||||||
|
--- a/build.gradle.kts
|
||||||
|
+++ b/build.gradle.kts
|
||||||
|
@@ -34,6 +34,7 @@ dependencies {
|
||||||
|
compileOnlyApi(checkerQual)
|
||||||
|
testCompileOnly(checkerQual)
|
||||||
|
// Paper end
|
||||||
|
+ testImplementation("org.mockito:mockito-core:4.9.0") // Paper - add mockito
|
||||||
|
|
||||||
|
testImplementation("org.apache.commons:commons-lang3:3.12.0")
|
||||||
|
testImplementation("junit:junit:4.13.2")
|
||||||
|
diff --git a/src/test/java/io/papermc/paper/testing/EmptyRegistry.java b/src/test/java/io/papermc/paper/testing/EmptyRegistry.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..ba9ddce87a9f385e729a5c2cf7c5eec120e388a7
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/test/java/io/papermc/paper/testing/EmptyRegistry.java
|
||||||
|
@@ -0,0 +1,23 @@
|
||||||
|
+package io.papermc.paper.testing;
|
||||||
|
+
|
||||||
|
+import java.util.Collections;
|
||||||
|
+import java.util.Iterator;
|
||||||
|
+import org.bukkit.Keyed;
|
||||||
|
+import org.bukkit.NamespacedKey;
|
||||||
|
+import org.bukkit.Registry;
|
||||||
|
+import org.jetbrains.annotations.NotNull;
|
||||||
|
+import org.jetbrains.annotations.Nullable;
|
||||||
|
+
|
||||||
|
+public record EmptyRegistry() implements Registry<Keyed> {
|
||||||
|
+
|
||||||
|
+ @NotNull
|
||||||
|
+ @Override
|
||||||
|
+ public Iterator<Keyed> iterator() {
|
||||||
|
+ return Collections.emptyIterator();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public @Nullable Keyed get(@NotNull final NamespacedKey key) {
|
||||||
|
+ return null;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
diff --git a/src/test/java/io/papermc/paper/testing/EmptyTag.java b/src/test/java/io/papermc/paper/testing/EmptyTag.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..77154095cfb8b259bdb318e8ff40cb6f559ebc18
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/test/java/io/papermc/paper/testing/EmptyTag.java
|
||||||
|
@@ -0,0 +1,31 @@
|
||||||
|
+package io.papermc.paper.testing;
|
||||||
|
+
|
||||||
|
+import java.util.Collections;
|
||||||
|
+import java.util.Set;
|
||||||
|
+import org.bukkit.Keyed;
|
||||||
|
+import org.bukkit.NamespacedKey;
|
||||||
|
+import org.bukkit.Tag;
|
||||||
|
+import org.jetbrains.annotations.NotNull;
|
||||||
|
+
|
||||||
|
+public record EmptyTag(NamespacedKey key) implements Tag<Keyed> {
|
||||||
|
+
|
||||||
|
+ @SuppressWarnings("deprecation")
|
||||||
|
+ public EmptyTag() {
|
||||||
|
+ this(NamespacedKey.randomKey());
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public @NotNull NamespacedKey getKey() {
|
||||||
|
+ return this.key;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean isTagged(@NotNull final Keyed item) {
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public @NotNull Set<Keyed> getValues() {
|
||||||
|
+ return Collections.emptySet();
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
diff --git a/src/test/java/io/papermc/paper/testing/TestServer.java b/src/test/java/io/papermc/paper/testing/TestServer.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..756acf231b1b076b08046d86992ba7ce7f62a94f
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/test/java/io/papermc/paper/testing/TestServer.java
|
||||||
|
@@ -0,0 +1,48 @@
|
||||||
|
+package io.papermc.paper.testing;
|
||||||
|
+
|
||||||
|
+import java.util.logging.Logger;
|
||||||
|
+import org.bukkit.Bukkit;
|
||||||
|
+import org.bukkit.NamespacedKey;
|
||||||
|
+import org.bukkit.Server;
|
||||||
|
+import org.bukkit.command.SimpleCommandMap;
|
||||||
|
+import org.bukkit.plugin.PluginManager;
|
||||||
|
+import org.bukkit.plugin.SimplePluginManager;
|
||||||
|
+
|
||||||
|
+import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
+import static org.mockito.Mockito.any;
|
||||||
|
+import static org.mockito.Mockito.mock;
|
||||||
|
+import static org.mockito.Mockito.when;
|
||||||
|
+
|
||||||
|
+public final class TestServer {
|
||||||
|
+
|
||||||
|
+ @SuppressWarnings("removal")
|
||||||
|
+ public static void setup() {
|
||||||
|
+ //noinspection ConstantValue
|
||||||
|
+ if (Bukkit.getServer() != null) {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ final Server dummyServer = mock(Server.class);
|
||||||
|
+
|
||||||
|
+ final Logger logger = Logger.getLogger(TestServer.class.getCanonicalName());
|
||||||
|
+ when(dummyServer.getLogger()).thenReturn(logger);
|
||||||
|
+ when(dummyServer.getName()).thenReturn(TestServer.class.getSimpleName());
|
||||||
|
+ when(dummyServer.getVersion()).thenReturn("Version_" + TestServer.class.getPackage().getImplementationVersion());
|
||||||
|
+ when(dummyServer.getBukkitVersion()).thenReturn("BukkitVersion_" + TestServer.class.getPackage().getImplementationVersion());
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ final Thread currentThread = Thread.currentThread();
|
||||||
|
+ when(dummyServer.isPrimaryThread()).thenAnswer(ignored -> Thread.currentThread().equals(currentThread));
|
||||||
|
+
|
||||||
|
+ when(dummyServer.getTag(anyString(), any(NamespacedKey.class), any())).thenAnswer(ignored -> new EmptyTag());
|
||||||
|
+
|
||||||
|
+ final PluginManager pluginManager = new SimplePluginManager(dummyServer, new SimpleCommandMap(dummyServer));
|
||||||
|
+ when(dummyServer.getPluginManager()).thenReturn(pluginManager);
|
||||||
|
+
|
||||||
|
+ when(dummyServer.getRegistry(any())).thenAnswer(ignored -> new EmptyRegistry());
|
||||||
|
+ when(dummyServer.getScoreboardCriteria(anyString())).thenReturn(null);
|
||||||
|
+
|
||||||
|
+ Bukkit.setServer(dummyServer);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
diff --git a/src/test/java/org/bukkit/AnnotationTest.java b/src/test/java/org/bukkit/AnnotationTest.java
|
||||||
|
index 4ac3dd977e75cd8464163351d306e037ee32cb48..1a71bb8861150c1add6446aa2fad0f7035dd6873 100644
|
||||||
|
--- a/src/test/java/org/bukkit/AnnotationTest.java
|
||||||
|
+++ b/src/test/java/org/bukkit/AnnotationTest.java
|
||||||
|
@@ -40,7 +40,17 @@ public class AnnotationTest {
|
||||||
|
"org/bukkit/util/io/Wrapper",
|
||||||
|
"org/bukkit/plugin/java/PluginClassLoader",
|
||||||
|
// Generic functional interface
|
||||||
|
- "org/bukkit/util/Consumer"
|
||||||
|
+ "org/bukkit/util/Consumer",
|
||||||
|
+ // Paper start
|
||||||
|
+ // Timings history is broken in terms of nullability due to guavas Function defining that the param is NonNull
|
||||||
|
+ "co/aikar/timings/TimingHistory$2",
|
||||||
|
+ "co/aikar/timings/TimingHistory$2$1",
|
||||||
|
+ "co/aikar/timings/TimingHistory$2$1$1",
|
||||||
|
+ "co/aikar/timings/TimingHistory$2$1$2",
|
||||||
|
+ "co/aikar/timings/TimingHistory$3",
|
||||||
|
+ "co/aikar/timings/TimingHistory$4",
|
||||||
|
+ "co/aikar/timings/TimingHistoryEntry$1"
|
||||||
|
+ // Paper end
|
||||||
|
};
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@@ -67,14 +77,40 @@ public class AnnotationTest {
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mustBeAnnotated(Type.getReturnType(method.desc)) && !isWellAnnotated(method.invisibleAnnotations)) {
|
||||||
|
+ // Paper start - Allow use of TYPE_USE annotations
|
||||||
|
+ boolean warn = true;
|
||||||
|
+ if (isWellAnnotated(method.visibleTypeAnnotations)) {
|
||||||
|
+ warn = false;
|
||||||
|
+ } else if (method.invisibleTypeAnnotations != null) {
|
||||||
|
+ dance: for (final org.objectweb.asm.tree.TypeAnnotationNode invisibleTypeAnnotation : method.invisibleTypeAnnotations) {
|
||||||
|
+ final org.objectweb.asm.TypeReference ref = new org.objectweb.asm.TypeReference(invisibleTypeAnnotation.typeRef);
|
||||||
|
+ if (ref.getSort() == org.objectweb.asm.TypeReference.METHOD_RETURN && java.util.Arrays.binarySearch(ACCEPTED_ANNOTATIONS, invisibleTypeAnnotation.desc) >= 0) {
|
||||||
|
+ warn = false;
|
||||||
|
+ break dance; // cha cha real smooth
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ if (warn)
|
||||||
|
+ // Paper end
|
||||||
|
warn(errors, clazz, method, "return value");
|
||||||
|
}
|
||||||
|
|
||||||
|
Type[] paramTypes = Type.getArgumentTypes(method.desc);
|
||||||
|
List<ParameterNode> parameters = method.parameters;
|
||||||
|
|
||||||
|
+ dancing: // Paper
|
||||||
|
for (int i = 0; i < paramTypes.length; i++) {
|
||||||
|
if (mustBeAnnotated(paramTypes[i]) ^ isWellAnnotated(method.invisibleParameterAnnotations == null ? null : method.invisibleParameterAnnotations[i])) {
|
||||||
|
+ // Paper start
|
||||||
|
+ if (method.invisibleTypeAnnotations != null) {
|
||||||
|
+ for (final org.objectweb.asm.tree.TypeAnnotationNode invisibleTypeAnnotation : method.invisibleTypeAnnotations) {
|
||||||
|
+ final org.objectweb.asm.TypeReference ref = new org.objectweb.asm.TypeReference(invisibleTypeAnnotation.typeRef);
|
||||||
|
+ if (ref.getSort() == org.objectweb.asm.TypeReference.METHOD_FORMAL_PARAMETER && ref.getTypeParameterIndex() == i && java.util.Arrays.binarySearch(ACCEPTED_ANNOTATIONS, invisibleTypeAnnotation.desc) >= 0) {
|
||||||
|
+ continue dancing;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ // Paper end - Allow use of TYPE_USE annotations
|
||||||
|
ParameterNode paramNode = parameters == null ? null : parameters.get(i);
|
||||||
|
String paramName = paramNode == null ? null : paramNode.name;
|
||||||
|
|
||||||
|
@@ -91,13 +127,18 @@ public class AnnotationTest {
|
||||||
|
|
||||||
|
Collections.sort(errors);
|
||||||
|
|
||||||
|
- System.out.println(errors.size() + " missing annotation(s):");
|
||||||
|
+ StringBuilder builder = new StringBuilder()
|
||||||
|
+ .append("There ")
|
||||||
|
+ .append(errors.size() != 1 ? "are " : "is ")
|
||||||
|
+ .append(errors.size())
|
||||||
|
+ .append(" missing annotation")
|
||||||
|
+ .append(errors.size() != 1 ? "s:\n" : ":\n");
|
||||||
|
+
|
||||||
|
for (String message : errors) {
|
||||||
|
- System.out.print("\t");
|
||||||
|
- System.out.println(message);
|
||||||
|
+ builder.append("\t").append(message).append("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
- Assert.fail("There " + errors.size() + " are missing annotation(s)");
|
||||||
|
+ Assert.fail(builder.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void collectClasses(@NotNull File from, @NotNull Map<String, ClassNode> to) throws IOException {
|
||||||
|
@@ -152,7 +193,7 @@ public class AnnotationTest {
|
||||||
|
|
||||||
|
private static boolean isMethodIncluded(@NotNull ClassNode clazz, @NotNull MethodNode method, @NotNull Map<String, ClassNode> allClasses) {
|
||||||
|
// Exclude private, synthetic and deprecated methods
|
||||||
|
- if ((method.access & (Opcodes.ACC_PRIVATE | Opcodes.ACC_SYNTHETIC | Opcodes.ACC_DEPRECATED)) != 0) {
|
||||||
|
+ if ((method.access & (Opcodes.ACC_PRIVATE | Opcodes.ACC_SYNTHETIC | Opcodes.ACC_DEPRECATED)) != 0 || (method.access & (Opcodes.ACC_PRIVATE | Opcodes.ACC_PROTECTED | Opcodes.ACC_PUBLIC)) == 0) { // Paper - ignore package-private
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -174,7 +215,7 @@ public class AnnotationTest {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
- private static boolean isWellAnnotated(@Nullable List<AnnotationNode> annotations) {
|
||||||
|
+ private static boolean isWellAnnotated(@Nullable List<? extends AnnotationNode> annotations) { // Paper
|
||||||
|
if (annotations == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
diff --git a/src/test/java/org/bukkit/TestServer.java b/src/test/java/org/bukkit/TestServer.java
|
||||||
|
deleted file mode 100644
|
||||||
|
index 701a17c10f31cd345238a3c568264178ce372faa..0000000000000000000000000000000000000000
|
||||||
|
--- a/src/test/java/org/bukkit/TestServer.java
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,139 +0,0 @@
|
||||||
|
-package org.bukkit;
|
||||||
|
-
|
||||||
|
-import com.google.common.collect.ImmutableMap;
|
||||||
|
-import java.lang.reflect.InvocationHandler;
|
||||||
|
-import java.lang.reflect.Method;
|
||||||
|
-import java.lang.reflect.Proxy;
|
||||||
|
-import java.util.Iterator;
|
||||||
|
-import java.util.Map;
|
||||||
|
-import java.util.logging.Logger;
|
||||||
|
-import org.bukkit.command.SimpleCommandMap;
|
||||||
|
-import org.bukkit.plugin.PluginManager;
|
||||||
|
-import org.bukkit.plugin.SimplePluginManager;
|
||||||
|
-import org.jetbrains.annotations.NotNull;
|
||||||
|
-import org.jetbrains.annotations.Nullable;
|
||||||
|
-
|
||||||
|
-public final class TestServer implements InvocationHandler {
|
||||||
|
- private static interface MethodHandler {
|
||||||
|
- Object handle(TestServer server, Object[] args);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- private static final Map<Method, MethodHandler> methods;
|
||||||
|
-
|
||||||
|
- static {
|
||||||
|
- try {
|
||||||
|
- ImmutableMap.Builder<Method, MethodHandler> methodMap = ImmutableMap.builder();
|
||||||
|
- methodMap.put(
|
||||||
|
- Server.class.getMethod("isPrimaryThread"),
|
||||||
|
- new MethodHandler() {
|
||||||
|
- @Override
|
||||||
|
- public Object handle(TestServer server, Object[] args) {
|
||||||
|
- return Thread.currentThread().equals(server.creatingThread);
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- );
|
||||||
|
- methodMap.put(
|
||||||
|
- Server.class.getMethod("getPluginManager"),
|
||||||
|
- new MethodHandler() {
|
||||||
|
- @Override
|
||||||
|
- public Object handle(TestServer server, Object[] args) {
|
||||||
|
- return server.pluginManager;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- );
|
||||||
|
- methodMap.put(
|
||||||
|
- Server.class.getMethod("getLogger"),
|
||||||
|
- new MethodHandler() {
|
||||||
|
- final Logger logger = Logger.getLogger(TestServer.class.getCanonicalName());
|
||||||
|
- @Override
|
||||||
|
- public Object handle(TestServer server, Object[] args) {
|
||||||
|
- return logger;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- );
|
||||||
|
- methodMap.put(
|
||||||
|
- Server.class.getMethod("getName"),
|
||||||
|
- new MethodHandler() {
|
||||||
|
- @Override
|
||||||
|
- public Object handle(TestServer server, Object[] args) {
|
||||||
|
- return TestServer.class.getSimpleName();
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- );
|
||||||
|
- methodMap.put(
|
||||||
|
- Server.class.getMethod("getVersion"),
|
||||||
|
- new MethodHandler() {
|
||||||
|
- @Override
|
||||||
|
- public Object handle(TestServer server, Object[] args) {
|
||||||
|
- return "Version_" + TestServer.class.getPackage().getImplementationVersion();
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- );
|
||||||
|
- methodMap.put(
|
||||||
|
- Server.class.getMethod("getBukkitVersion"),
|
||||||
|
- new MethodHandler() {
|
||||||
|
- @Override
|
||||||
|
- public Object handle(TestServer server, Object[] args) {
|
||||||
|
- return "BukkitVersion_" + TestServer.class.getPackage().getImplementationVersion();
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- );
|
||||||
|
- methodMap.put(
|
||||||
|
- Server.class.getMethod("getRegistry", Class.class),
|
||||||
|
- new MethodHandler() {
|
||||||
|
- @Override
|
||||||
|
- public Object handle(TestServer server, Object[] args) {
|
||||||
|
- return new Registry() {
|
||||||
|
- @NotNull
|
||||||
|
- @Override
|
||||||
|
- public Iterator iterator() {
|
||||||
|
- return null;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- @Nullable
|
||||||
|
- @Override
|
||||||
|
- public Keyed get(@NotNull NamespacedKey key) {
|
||||||
|
- return null;
|
||||||
|
- }
|
||||||
|
- };
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- );
|
||||||
|
- methodMap.put(
|
||||||
|
- Server.class.getMethod("getScoreboardCriteria", String.class),
|
||||||
|
- new MethodHandler() {
|
||||||
|
- @Override
|
||||||
|
- public Object handle(TestServer server, Object[] args) {
|
||||||
|
- // Does not need to return anything. Exists solely to test CriteriaTest which has static init fields
|
||||||
|
- return null;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- );
|
||||||
|
- methods = methodMap.build();
|
||||||
|
-
|
||||||
|
- TestServer server = new TestServer();
|
||||||
|
- Server instance = Proxy.getProxyClass(Server.class.getClassLoader(), Server.class).asSubclass(Server.class).getConstructor(InvocationHandler.class).newInstance(server);
|
||||||
|
- Bukkit.setServer(instance);
|
||||||
|
- server.pluginManager = new SimplePluginManager(instance, new SimpleCommandMap(instance));
|
||||||
|
- } catch (Throwable t) {
|
||||||
|
- throw new Error(t);
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- private Thread creatingThread = Thread.currentThread();
|
||||||
|
- private PluginManager pluginManager;
|
||||||
|
- private TestServer() {};
|
||||||
|
-
|
||||||
|
- public static Server getInstance() {
|
||||||
|
- return Bukkit.getServer();
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- @Override
|
||||||
|
- public Object invoke(Object proxy, Method method, Object[] args) {
|
||||||
|
- MethodHandler handler = methods.get(method);
|
||||||
|
- if (handler != null) {
|
||||||
|
- return handler.handle(this, args);
|
||||||
|
- }
|
||||||
|
- throw new UnsupportedOperationException(String.valueOf(method));
|
||||||
|
- }
|
||||||
|
-}
|
||||||
|
diff --git a/src/test/java/org/bukkit/TestWorld.java b/src/test/java/org/bukkit/TestWorld.java
|
||||||
|
index ab34f1199921d415fa2ca6e281a8125c9e6d7173..f64d024f5bbf9482aaddb56597b23b04c66f21bf 100644
|
||||||
|
--- a/src/test/java/org/bukkit/TestWorld.java
|
||||||
|
+++ b/src/test/java/org/bukkit/TestWorld.java
|
||||||
|
@@ -18,7 +18,7 @@ public final class TestWorld implements InvocationHandler {
|
||||||
|
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
- TestServer.getInstance();
|
||||||
|
+ io.papermc.paper.testing.TestServer.setup(); // Paper
|
||||||
|
|
||||||
|
ImmutableMap.Builder<Method, MethodHandler> methodMap = ImmutableMap.builder();
|
||||||
|
methodMap.put(
|
||||||
|
diff --git a/src/test/java/org/bukkit/event/SyntheticEventTest.java b/src/test/java/org/bukkit/event/SyntheticEventTest.java
|
||||||
|
index d402cb59f508205ebe9ee450594826b04cecb90b..09886568ae6167141b463b6262565fa212af3385 100644
|
||||||
|
--- a/src/test/java/org/bukkit/event/SyntheticEventTest.java
|
||||||
|
+++ b/src/test/java/org/bukkit/event/SyntheticEventTest.java
|
||||||
|
@@ -1,6 +1,5 @@
|
||||||
|
package org.bukkit.event;
|
||||||
|
|
||||||
|
-import org.bukkit.TestServer;
|
||||||
|
import org.bukkit.plugin.PluginLoader;
|
||||||
|
import org.bukkit.plugin.SimplePluginManager;
|
||||||
|
import org.bukkit.plugin.TestPlugin;
|
||||||
|
@@ -12,14 +11,15 @@ public class SyntheticEventTest {
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
- final JavaPluginLoader loader = new JavaPluginLoader(TestServer.getInstance());
|
||||||
|
+ io.papermc.paper.testing.TestServer.setup(); // Paper
|
||||||
|
+ final JavaPluginLoader loader = new JavaPluginLoader(org.bukkit.Bukkit.getServer()); // Paper
|
||||||
|
TestPlugin plugin = new TestPlugin(getClass().getName()) {
|
||||||
|
@Override
|
||||||
|
public PluginLoader getPluginLoader() {
|
||||||
|
return loader;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
- SimplePluginManager pluginManager = new SimplePluginManager(TestServer.getInstance(), null);
|
||||||
|
+ SimplePluginManager pluginManager = new SimplePluginManager(org.bukkit.Bukkit.getServer(), null); // Paper
|
||||||
|
|
||||||
|
TestEvent event = new TestEvent(false);
|
||||||
|
Impl impl = new Impl();
|
||||||
|
diff --git a/src/test/java/org/bukkit/plugin/PluginManagerTest.java b/src/test/java/org/bukkit/plugin/PluginManagerTest.java
|
||||||
|
index f188cd4f3b07027c30d41f1162db77a506b7b6bb..c46ed2acb82db814d660459b705dd49e6d44240f 100644
|
||||||
|
--- a/src/test/java/org/bukkit/plugin/PluginManagerTest.java
|
||||||
|
+++ b/src/test/java/org/bukkit/plugin/PluginManagerTest.java
|
||||||
|
@@ -2,7 +2,6 @@ package org.bukkit.plugin;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.*;
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
-import org.bukkit.TestServer;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.TestEvent;
|
||||||
|
import org.bukkit.permissions.Permission;
|
||||||
|
@@ -14,7 +13,7 @@ public class PluginManagerTest {
|
||||||
|
volatile Object value = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
- private static final PluginManager pm = TestServer.getInstance().getPluginManager();
|
||||||
|
+ private static final PluginManager pm = org.bukkit.Bukkit.getServer().getPluginManager(); // Paper
|
||||||
|
|
||||||
|
private final MutableObject store = new MutableObject();
|
||||||
|
|
||||||
|
diff --git a/src/test/java/org/bukkit/scoreboard/CriteriaTest.java b/src/test/java/org/bukkit/scoreboard/CriteriaTest.java
|
||||||
|
index eb94b6f4d58cd9f66b07791c57af7e359992e28c..a93f28e2f987a36e2c7e4f7d31506b750bdb222b 100644
|
||||||
|
--- a/src/test/java/org/bukkit/scoreboard/CriteriaTest.java
|
||||||
|
+++ b/src/test/java/org/bukkit/scoreboard/CriteriaTest.java
|
||||||
|
@@ -2,7 +2,6 @@ package org.bukkit.scoreboard;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Statistic;
|
||||||
|
-import org.bukkit.TestServer;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
@@ -11,7 +10,7 @@ public class CriteriaTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testStatistic() {
|
||||||
|
- TestServer.getInstance();
|
||||||
|
+ io.papermc.paper.testing.TestServer.setup(); // Paper
|
||||||
|
|
||||||
|
Assert.assertThrows(IllegalArgumentException.class, () -> Criteria.statistic(Statistic.AVIATE_ONE_CM, Material.STONE)); // Generic statistic with block
|
||||||
|
Assert.assertThrows(IllegalArgumentException.class, () -> Criteria.statistic(Statistic.AVIATE_ONE_CM, EntityType.CREEPER)); // Generic statistic with entity type
|
@ -7,7 +7,7 @@ Co-authored-by: zml <zml@stellardrift.ca>
|
|||||||
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
|
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||||
|
|
||||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||||
index c2928c6f2d54de0ffde164fd9407085cf9fa18a6..c9f9174a085174b96897c013e0ecb79738c2e9e3 100644
|
index d217f708b5bc57e402f4c2179ae3aea555b40f92..558fa62d87af1103efa703ef9114481cb928cf8d 100644
|
||||||
--- a/build.gradle.kts
|
--- a/build.gradle.kts
|
||||||
+++ b/build.gradle.kts
|
+++ b/build.gradle.kts
|
||||||
@@ -8,17 +8,37 @@ java {
|
@@ -8,17 +8,37 @@ java {
|
||||||
@ -49,7 +49,7 @@ index c2928c6f2d54de0ffde164fd9407085cf9fa18a6..c9f9174a085174b96897c013e0ecb797
|
|||||||
// Paper end
|
// Paper end
|
||||||
|
|
||||||
compileOnly("org.apache.maven:maven-resolver-provider:3.8.5")
|
compileOnly("org.apache.maven:maven-resolver-provider:3.8.5")
|
||||||
@@ -78,9 +98,24 @@ tasks.withType<Javadoc> {
|
@@ -79,9 +99,24 @@ tasks.withType<Javadoc> {
|
||||||
"https://guava.dev/releases/31.0.1-jre/api/docs/",
|
"https://guava.dev/releases/31.0.1-jre/api/docs/",
|
||||||
"https://javadoc.io/doc/org.yaml/snakeyaml/1.33/",
|
"https://javadoc.io/doc/org.yaml/snakeyaml/1.33/",
|
||||||
"https://javadoc.io/doc/org.jetbrains/annotations/23.0.0/", // Paper - we don't want Java 5 annotations
|
"https://javadoc.io/doc/org.jetbrains/annotations/23.0.0/", // Paper - we don't want Java 5 annotations
|
||||||
|
@ -84,11 +84,11 @@ index 9f32b57464352c08617f6adec144111b8fcad50c..5af99aa87e6d4fbff81bd9de40484f4e
|
|||||||
RegisteredListener[] listeners = handlers.getRegisteredListeners();
|
RegisteredListener[] listeners = handlers.getRegisteredListeners();
|
||||||
|
|
||||||
diff --git a/src/test/java/org/bukkit/plugin/PluginManagerTest.java b/src/test/java/org/bukkit/plugin/PluginManagerTest.java
|
diff --git a/src/test/java/org/bukkit/plugin/PluginManagerTest.java b/src/test/java/org/bukkit/plugin/PluginManagerTest.java
|
||||||
index f188cd4f3b07027c30d41f1162db77a506b7b6bb..1941c9f49e9514c1236c5f4ea9f7af47f7be85c5 100644
|
index c46ed2acb82db814d660459b705dd49e6d44240f..24dc87898e0fc40dfaf52f17a1bd26eccfbc7abc 100644
|
||||||
--- a/src/test/java/org/bukkit/plugin/PluginManagerTest.java
|
--- a/src/test/java/org/bukkit/plugin/PluginManagerTest.java
|
||||||
+++ b/src/test/java/org/bukkit/plugin/PluginManagerTest.java
|
+++ b/src/test/java/org/bukkit/plugin/PluginManagerTest.java
|
||||||
@@ -17,7 +17,7 @@ public class PluginManagerTest {
|
@@ -16,7 +16,7 @@ public class PluginManagerTest {
|
||||||
private static final PluginManager pm = TestServer.getInstance().getPluginManager();
|
private static final PluginManager pm = org.bukkit.Bukkit.getServer().getPluginManager(); // Paper
|
||||||
|
|
||||||
private final MutableObject store = new MutableObject();
|
private final MutableObject store = new MutableObject();
|
||||||
-
|
-
|
||||||
@ -96,7 +96,7 @@ index f188cd4f3b07027c30d41f1162db77a506b7b6bb..1941c9f49e9514c1236c5f4ea9f7af47
|
|||||||
@Test
|
@Test
|
||||||
public void testAsyncSameThread() {
|
public void testAsyncSameThread() {
|
||||||
final Event event = new TestEvent(true);
|
final Event event = new TestEvent(true);
|
||||||
@@ -28,14 +28,14 @@ public class PluginManagerTest {
|
@@ -27,14 +27,14 @@ public class PluginManagerTest {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
throw new IllegalStateException("No exception thrown");
|
throw new IllegalStateException("No exception thrown");
|
||||||
@ -113,7 +113,7 @@ index f188cd4f3b07027c30d41f1162db77a506b7b6bb..1941c9f49e9514c1236c5f4ea9f7af47
|
|||||||
@Test
|
@Test
|
||||||
public void testAsyncLocked() throws InterruptedException {
|
public void testAsyncLocked() throws InterruptedException {
|
||||||
final Event event = new TestEvent(true);
|
final Event event = new TestEvent(true);
|
||||||
@@ -129,7 +129,7 @@ public class PluginManagerTest {
|
@@ -128,7 +128,7 @@ public class PluginManagerTest {
|
||||||
if (store.value == null) {
|
if (store.value == null) {
|
||||||
throw new IllegalStateException("No exception thrown");
|
throw new IllegalStateException("No exception thrown");
|
||||||
}
|
}
|
||||||
|
@ -1134,7 +1134,7 @@ index bceaa1a97b2c5cc15c8f54ae8f6f18029708627a..15699ee58e06880a508689f761ecfdb7
|
|||||||
public interface Tag<T extends Keyed> extends Keyed {
|
public interface Tag<T extends Keyed> extends Keyed {
|
||||||
diff --git a/src/test/java/com/destroystokyo/paper/MaterialTagsTest.java b/src/test/java/com/destroystokyo/paper/MaterialTagsTest.java
|
diff --git a/src/test/java/com/destroystokyo/paper/MaterialTagsTest.java b/src/test/java/com/destroystokyo/paper/MaterialTagsTest.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..f849d8b12a7e3d1606698408ab4bb140a3b370e4
|
index 0000000000000000000000000000000000000000..e541f29e983d8dcaca91de9ee1459d587226b4c3
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/test/java/com/destroystokyo/paper/MaterialTagsTest.java
|
+++ b/src/test/java/com/destroystokyo/paper/MaterialTagsTest.java
|
||||||
@@ -0,0 +1,65 @@
|
@@ -0,0 +1,65 @@
|
||||||
@ -1146,8 +1146,8 @@ index 0000000000000000000000000000000000000000..f849d8b12a7e3d1606698408ab4bb140
|
|||||||
+
|
+
|
||||||
+import io.papermc.paper.tag.BaseTag;
|
+import io.papermc.paper.tag.BaseTag;
|
||||||
+import io.papermc.paper.tag.EntityTags;
|
+import io.papermc.paper.tag.EntityTags;
|
||||||
|
+import io.papermc.paper.testing.TestServer;
|
||||||
+import org.bukkit.Bukkit;
|
+import org.bukkit.Bukkit;
|
||||||
+import org.bukkit.TestServer;
|
|
||||||
+import org.junit.Before;
|
+import org.junit.Before;
|
||||||
+import org.junit.Test;
|
+import org.junit.Test;
|
||||||
+
|
+
|
||||||
@ -1163,7 +1163,7 @@ index 0000000000000000000000000000000000000000..f849d8b12a7e3d1606698408ab4bb140
|
|||||||
+
|
+
|
||||||
+ @Before
|
+ @Before
|
||||||
+ public void before() {
|
+ public void before() {
|
||||||
+ TestServer.getInstance();
|
+ TestServer.setup();
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Test
|
+ @Test
|
||||||
@ -1205,26 +1205,24 @@ index 0000000000000000000000000000000000000000..f849d8b12a7e3d1606698408ab4bb140
|
|||||||
+}
|
+}
|
||||||
diff --git a/src/test/java/io/papermc/paper/EntityTagsTest.java b/src/test/java/io/papermc/paper/EntityTagsTest.java
|
diff --git a/src/test/java/io/papermc/paper/EntityTagsTest.java b/src/test/java/io/papermc/paper/EntityTagsTest.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..06bb9d1180361d3d00c699796bbacbce5bef2177
|
index 0000000000000000000000000000000000000000..3caf03d8e50cd2180e9aac2dddeaa3afd0bf7438
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/test/java/io/papermc/paper/EntityTagsTest.java
|
+++ b/src/test/java/io/papermc/paper/EntityTagsTest.java
|
||||||
@@ -0,0 +1,24 @@
|
@@ -0,0 +1,22 @@
|
||||||
+package io.papermc.paper;
|
+package io.papermc.paper;
|
||||||
+
|
+
|
||||||
+import com.destroystokyo.paper.MaterialTags;
|
|
||||||
+import io.papermc.paper.tag.EntityTags;
|
+import io.papermc.paper.tag.EntityTags;
|
||||||
+import org.bukkit.Bukkit;
|
+import io.papermc.paper.testing.TestServer;
|
||||||
+import org.bukkit.TestServer;
|
|
||||||
+import org.junit.Test;
|
|
||||||
+
|
|
||||||
+import java.util.logging.Level;
|
+import java.util.logging.Level;
|
||||||
|
+import org.bukkit.Bukkit;
|
||||||
|
+import org.junit.Test;
|
||||||
+
|
+
|
||||||
+public class EntityTagsTest {
|
+public class EntityTagsTest {
|
||||||
+
|
+
|
||||||
+ @Test
|
+ @Test
|
||||||
+ public void testInitialize() {
|
+ public void testInitialize() {
|
||||||
+ try {
|
+ try {
|
||||||
+ TestServer.getInstance();
|
+ TestServer.setup();
|
||||||
+ EntityTags.HORSES.getValues();
|
+ EntityTags.HORSES.getValues();
|
||||||
+ assert true;
|
+ assert true;
|
||||||
+ } catch (Throwable e) {
|
+ } catch (Throwable e) {
|
||||||
@ -1233,24 +1231,3 @@ index 0000000000000000000000000000000000000000..06bb9d1180361d3d00c699796bbacbce
|
|||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/test/java/org/bukkit/TestServer.java b/src/test/java/org/bukkit/TestServer.java
|
|
||||||
index 701a17c10f31cd345238a3c568264178ce372faa..bfb39f48bea14ad616c53e2a8a6901e93f728768 100644
|
|
||||||
--- a/src/test/java/org/bukkit/TestServer.java
|
|
||||||
+++ b/src/test/java/org/bukkit/TestServer.java
|
|
||||||
@@ -32,6 +32,16 @@ public final class TestServer implements InvocationHandler {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
+ // Paper start
|
|
||||||
+ methodMap.put(
|
|
||||||
+ Server.class.getMethod("getTag", String.class, NamespacedKey.class, Class.class),
|
|
||||||
+ new MethodHandler() {
|
|
||||||
+ public Object handle(TestServer server, Object[] args) {
|
|
||||||
+ return new com.destroystokyo.paper.MaterialSetTag();
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ );
|
|
||||||
+ // Paper end
|
|
||||||
methodMap.put(
|
|
||||||
Server.class.getMethod("getPluginManager"),
|
|
||||||
new MethodHandler() {
|
|
||||||
|
280
patches/server/0004-Test-changes.patch
Normale Datei
280
patches/server/0004-Test-changes.patch
Normale Datei
@ -0,0 +1,280 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||||
|
Date: Mon, 13 Feb 2023 14:14:56 -0800
|
||||||
|
Subject: [PATCH] Test changes
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||||
|
index 064a0c5b2a4b379ceec84652ff1e004d57419115..218a0db30ac8e4403da4ee50ca0a67ca7bda40e4 100644
|
||||||
|
--- a/build.gradle.kts
|
||||||
|
+++ b/build.gradle.kts
|
||||||
|
@@ -12,6 +12,7 @@ dependencies {
|
||||||
|
implementation("org.apache.logging.log4j:log4j-iostreams:2.19.0") // Paper - remove exclusion
|
||||||
|
implementation("org.ow2.asm:asm:9.3")
|
||||||
|
implementation("org.ow2.asm:asm-commons:9.3") // Paper - ASM event executor generation
|
||||||
|
+ testImplementation("org.mockito:mockito-core:4.9.0") // Paper - switch to mockito
|
||||||
|
implementation("commons-lang:commons-lang:2.6")
|
||||||
|
runtimeOnly("org.xerial:sqlite-jdbc:3.36.0.3")
|
||||||
|
runtimeOnly("mysql:mysql-connector-java:8.0.29")
|
||||||
|
diff --git a/src/test/java/io/papermc/paper/testing/DummyServer.java b/src/test/java/io/papermc/paper/testing/DummyServer.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..286790061c9d81c872108ef63e1a1aba2fbec809
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/test/java/io/papermc/paper/testing/DummyServer.java
|
||||||
|
@@ -0,0 +1,66 @@
|
||||||
|
+package io.papermc.paper.testing;
|
||||||
|
+
|
||||||
|
+import java.util.logging.Logger;
|
||||||
|
+import org.bukkit.Bukkit;
|
||||||
|
+import org.bukkit.Material;
|
||||||
|
+import org.bukkit.NamespacedKey;
|
||||||
|
+import org.bukkit.Server;
|
||||||
|
+import org.bukkit.command.SimpleCommandMap;
|
||||||
|
+import org.bukkit.craftbukkit.CraftRegistry;
|
||||||
|
+import org.bukkit.craftbukkit.block.data.CraftBlockData;
|
||||||
|
+import org.bukkit.craftbukkit.inventory.CraftItemFactory;
|
||||||
|
+import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
||||||
|
+import org.bukkit.craftbukkit.util.CraftNamespacedKey;
|
||||||
|
+import org.bukkit.plugin.PluginManager;
|
||||||
|
+import org.bukkit.plugin.SimplePluginManager;
|
||||||
|
+import org.bukkit.support.AbstractTestingBase;
|
||||||
|
+
|
||||||
|
+import static org.mockito.Mockito.any;
|
||||||
|
+import static org.mockito.Mockito.mock;
|
||||||
|
+import static org.mockito.Mockito.when;
|
||||||
|
+
|
||||||
|
+public final class DummyServer {
|
||||||
|
+
|
||||||
|
+ @SuppressWarnings({"deprecation", "removal"})
|
||||||
|
+ public static void setup() {
|
||||||
|
+ //noinspection ConstantValue
|
||||||
|
+ if (Bukkit.getServer() != null) {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ final Server dummyServer = mock(Server.class);
|
||||||
|
+
|
||||||
|
+ final Logger logger = Logger.getLogger(DummyServer.class.getCanonicalName());
|
||||||
|
+ when(dummyServer.getLogger()).thenReturn(logger);
|
||||||
|
+ when(dummyServer.getName()).thenReturn(DummyServer.class.getSimpleName());
|
||||||
|
+ when(dummyServer.getVersion()).thenReturn("Version_" + DummyServer.class.getPackage().getImplementationVersion());
|
||||||
|
+ when(dummyServer.getBukkitVersion()).thenReturn("BukkitVersion_" + DummyServer.class.getPackage().getImplementationVersion());
|
||||||
|
+
|
||||||
|
+ final Thread currentThread = Thread.currentThread();
|
||||||
|
+ when(dummyServer.isPrimaryThread()).thenAnswer(ignored -> Thread.currentThread().equals(currentThread));
|
||||||
|
+
|
||||||
|
+ when(dummyServer.getItemFactory()).thenReturn(CraftItemFactory.instance());
|
||||||
|
+
|
||||||
|
+ when(dummyServer.getUnsafe()).thenAnswer(ignored -> CraftMagicNumbers.INSTANCE); // lambda for lazy load
|
||||||
|
+
|
||||||
|
+ when(dummyServer.createBlockData(any(Material.class))).thenAnswer(invocation -> {
|
||||||
|
+ return CraftBlockData.newData(invocation.getArgument(0, Material.class), null);
|
||||||
|
+ });
|
||||||
|
+
|
||||||
|
+ when(dummyServer.getLootTable(any(NamespacedKey.class))).thenAnswer(invocation -> {
|
||||||
|
+ final NamespacedKey key = invocation.getArgument(0, NamespacedKey.class);
|
||||||
|
+ return new org.bukkit.craftbukkit.CraftLootTable(key, AbstractTestingBase.DATA_PACK.getLootTables().get(CraftNamespacedKey.toMinecraft(key)));
|
||||||
|
+ });
|
||||||
|
+
|
||||||
|
+ when(dummyServer.getRegistry(any())).thenAnswer(invocation -> {
|
||||||
|
+ // LazyRegistry because the vanilla data hasn't been bootstrapped yet.
|
||||||
|
+ return new LazyRegistry(() -> CraftRegistry.createRegistry(invocation.getArgument(0, Class.class), AbstractTestingBase.REGISTRY_CUSTOM));
|
||||||
|
+ });
|
||||||
|
+
|
||||||
|
+ final PluginManager pluginManager = new SimplePluginManager(dummyServer, new SimpleCommandMap(dummyServer));
|
||||||
|
+ when(dummyServer.getPluginManager()).thenReturn(pluginManager);
|
||||||
|
+
|
||||||
|
+ Bukkit.setServer(dummyServer);
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
diff --git a/src/test/java/io/papermc/paper/testing/LazyRegistry.java b/src/test/java/io/papermc/paper/testing/LazyRegistry.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..8dd0df8c2cc25d37a2590a07872682230a9335f2
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/test/java/io/papermc/paper/testing/LazyRegistry.java
|
||||||
|
@@ -0,0 +1,23 @@
|
||||||
|
+package io.papermc.paper.testing;
|
||||||
|
+
|
||||||
|
+import java.util.Iterator;
|
||||||
|
+import java.util.function.Supplier;
|
||||||
|
+import org.bukkit.Keyed;
|
||||||
|
+import org.bukkit.NamespacedKey;
|
||||||
|
+import org.bukkit.Registry;
|
||||||
|
+import org.jetbrains.annotations.NotNull;
|
||||||
|
+import org.jetbrains.annotations.Nullable;
|
||||||
|
+
|
||||||
|
+public record LazyRegistry(Supplier<Registry<Keyed>> supplier) implements Registry<Keyed> {
|
||||||
|
+
|
||||||
|
+ @NotNull
|
||||||
|
+ @Override
|
||||||
|
+ public Iterator<Keyed> iterator() {
|
||||||
|
+ return this.supplier().get().iterator();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public @Nullable Keyed get(@NotNull final NamespacedKey key) {
|
||||||
|
+ return this.supplier().get().get(key);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
diff --git a/src/test/java/org/bukkit/support/AbstractTestingBase.java b/src/test/java/org/bukkit/support/AbstractTestingBase.java
|
||||||
|
index 492c1ec28a9f1facb117d05245b32231554385ad..007239914bd48263b83112c2b82a5d6406dcdbdc 100644
|
||||||
|
--- a/src/test/java/org/bukkit/support/AbstractTestingBase.java
|
||||||
|
+++ b/src/test/java/org/bukkit/support/AbstractTestingBase.java
|
||||||
|
@@ -2,7 +2,6 @@ package org.bukkit.support;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
|
import com.google.common.util.concurrent.MoreExecutors;
|
||||||
|
-import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import net.minecraft.SharedConstants;
|
||||||
|
import net.minecraft.commands.Commands;
|
||||||
|
@@ -41,6 +40,7 @@ public abstract class AbstractTestingBase {
|
||||||
|
public static final Registry<Biome> BIOMES;
|
||||||
|
|
||||||
|
static {
|
||||||
|
+ io.papermc.paper.testing.DummyServer.setup(); // Paper
|
||||||
|
SharedConstants.tryDetectVersion();
|
||||||
|
Bootstrap.bootStrap();
|
||||||
|
// Set up resource manager
|
||||||
|
@@ -56,7 +56,6 @@ public abstract class AbstractTestingBase {
|
||||||
|
// Biome shortcut
|
||||||
|
BIOMES = REGISTRY_CUSTOM.registryOrThrow(Registries.BIOME);
|
||||||
|
|
||||||
|
- DummyServer.setup();
|
||||||
|
DummyEnchantments.setup();
|
||||||
|
|
||||||
|
ImmutableList.Builder<Material> builder = ImmutableList.builder();
|
||||||
|
diff --git a/src/test/java/org/bukkit/support/DummyServer.java b/src/test/java/org/bukkit/support/DummyServer.java
|
||||||
|
deleted file mode 100644
|
||||||
|
index 946497353a64421592d2bae012c9a3cb874dd5b8..0000000000000000000000000000000000000000
|
||||||
|
--- a/src/test/java/org/bukkit/support/DummyServer.java
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,127 +0,0 @@
|
||||||
|
-package org.bukkit.support;
|
||||||
|
-
|
||||||
|
-import java.lang.reflect.InvocationHandler;
|
||||||
|
-import java.lang.reflect.Method;
|
||||||
|
-import java.lang.reflect.Proxy;
|
||||||
|
-import java.util.HashMap;
|
||||||
|
-import java.util.logging.Logger;
|
||||||
|
-import org.bukkit.Bukkit;
|
||||||
|
-import org.bukkit.Material;
|
||||||
|
-import org.bukkit.NamespacedKey;
|
||||||
|
-import org.bukkit.Server;
|
||||||
|
-import org.bukkit.craftbukkit.CraftLootTable;
|
||||||
|
-import org.bukkit.craftbukkit.CraftRegistry;
|
||||||
|
-import org.bukkit.craftbukkit.block.data.CraftBlockData;
|
||||||
|
-import org.bukkit.craftbukkit.inventory.CraftItemFactory;
|
||||||
|
-import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
||||||
|
-import org.bukkit.craftbukkit.util.CraftNamespacedKey;
|
||||||
|
-import org.bukkit.craftbukkit.util.Versioning;
|
||||||
|
-
|
||||||
|
-public final class DummyServer implements InvocationHandler {
|
||||||
|
- private static interface MethodHandler {
|
||||||
|
- Object handle(DummyServer server, Object[] args);
|
||||||
|
- }
|
||||||
|
- private static final HashMap<Method, MethodHandler> methods = new HashMap<Method, MethodHandler>();
|
||||||
|
- static {
|
||||||
|
- try {
|
||||||
|
- methods.put(
|
||||||
|
- Server.class.getMethod("getItemFactory"),
|
||||||
|
- new MethodHandler() {
|
||||||
|
- @Override
|
||||||
|
- public Object handle(DummyServer server, Object[] args) {
|
||||||
|
- return CraftItemFactory.instance();
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- );
|
||||||
|
- methods.put(
|
||||||
|
- Server.class.getMethod("getName"),
|
||||||
|
- new MethodHandler() {
|
||||||
|
- @Override
|
||||||
|
- public Object handle(DummyServer server, Object[] args) {
|
||||||
|
- return DummyServer.class.getName();
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- );
|
||||||
|
- methods.put(
|
||||||
|
- Server.class.getMethod("getVersion"),
|
||||||
|
- new MethodHandler() {
|
||||||
|
- @Override
|
||||||
|
- public Object handle(DummyServer server, Object[] args) {
|
||||||
|
- return DummyServer.class.getPackage().getImplementationVersion();
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- );
|
||||||
|
- methods.put(
|
||||||
|
- Server.class.getMethod("getBukkitVersion"),
|
||||||
|
- new MethodHandler() {
|
||||||
|
- @Override
|
||||||
|
- public Object handle(DummyServer server, Object[] args) {
|
||||||
|
- return Versioning.getBukkitVersion();
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- );
|
||||||
|
- methods.put(
|
||||||
|
- Server.class.getMethod("getLogger"),
|
||||||
|
- new MethodHandler() {
|
||||||
|
- final Logger logger = Logger.getLogger(DummyServer.class.getCanonicalName());
|
||||||
|
- @Override
|
||||||
|
- public Object handle(DummyServer server, Object[] args) {
|
||||||
|
- return logger;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- );
|
||||||
|
- methods.put(
|
||||||
|
- Server.class.getMethod("getUnsafe"),
|
||||||
|
- new MethodHandler() {
|
||||||
|
- @Override
|
||||||
|
- public Object handle(DummyServer server, Object[] args) {
|
||||||
|
- return CraftMagicNumbers.INSTANCE;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- );
|
||||||
|
- methods.put(
|
||||||
|
- Server.class.getMethod("createBlockData", Material.class),
|
||||||
|
- new MethodHandler() {
|
||||||
|
- final Logger logger = Logger.getLogger(DummyServer.class.getCanonicalName());
|
||||||
|
- @Override
|
||||||
|
- public Object handle(DummyServer server, Object[] args) {
|
||||||
|
- return CraftBlockData.newData((Material) args[0], null);
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- );
|
||||||
|
- methods.put(Server.class.getMethod("getLootTable", NamespacedKey.class),
|
||||||
|
- new MethodHandler() {
|
||||||
|
- @Override
|
||||||
|
- public Object handle(DummyServer server, Object[] args) {
|
||||||
|
- NamespacedKey key = (NamespacedKey) args[0];
|
||||||
|
- return new CraftLootTable(key, AbstractTestingBase.DATA_PACK.getLootTables().get(CraftNamespacedKey.toMinecraft(key)));
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- );
|
||||||
|
- methods.put(Server.class.getMethod("getRegistry", Class.class),
|
||||||
|
- new MethodHandler() {
|
||||||
|
- @Override
|
||||||
|
- public Object handle(DummyServer server, Object[] args) {
|
||||||
|
- return CraftRegistry.createRegistry((Class) args[0], AbstractTestingBase.REGISTRY_CUSTOM);
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- );
|
||||||
|
- Bukkit.setServer(Proxy.getProxyClass(Server.class.getClassLoader(), Server.class).asSubclass(Server.class).getConstructor(InvocationHandler.class).newInstance(new DummyServer()));
|
||||||
|
- } catch (Throwable t) {
|
||||||
|
- throw new Error(t);
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- public static void setup() {}
|
||||||
|
-
|
||||||
|
- private DummyServer() {};
|
||||||
|
-
|
||||||
|
- @Override
|
||||||
|
- public Object invoke(Object proxy, Method method, Object[] args) {
|
||||||
|
- MethodHandler handler = DummyServer.methods.get(method);
|
||||||
|
- if (handler != null) {
|
||||||
|
- return handler.handle(this, args);
|
||||||
|
- }
|
||||||
|
- throw new UnsupportedOperationException(String.valueOf(method));
|
||||||
|
- }
|
||||||
|
-}
|
@ -14,13 +14,13 @@ public org.spigotmc.SpigotWorldConfig getString(Ljava/lang/String;Ljava/lang/Str
|
|||||||
public net.minecraft.world.level.NaturalSpawner SPAWNING_CATEGORIES
|
public net.minecraft.world.level.NaturalSpawner SPAWNING_CATEGORIES
|
||||||
|
|
||||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||||
index 064a0c5b2a4b379ceec84652ff1e004d57419115..fc8a097b000e892630ddef00c350454a5f785281 100644
|
index 218a0db30ac8e4403da4ee50ca0a67ca7bda40e4..4ccaf2ac6f6ff3310ca2f0a0672875f2ab1f718f 100644
|
||||||
--- a/build.gradle.kts
|
--- a/build.gradle.kts
|
||||||
+++ b/build.gradle.kts
|
+++ b/build.gradle.kts
|
||||||
@@ -12,6 +12,7 @@ dependencies {
|
@@ -13,6 +13,7 @@ dependencies {
|
||||||
implementation("org.apache.logging.log4j:log4j-iostreams:2.19.0") // Paper - remove exclusion
|
|
||||||
implementation("org.ow2.asm:asm:9.3")
|
implementation("org.ow2.asm:asm:9.3")
|
||||||
implementation("org.ow2.asm:asm-commons:9.3") // Paper - ASM event executor generation
|
implementation("org.ow2.asm:asm-commons:9.3") // Paper - ASM event executor generation
|
||||||
|
testImplementation("org.mockito:mockito-core:4.9.0") // Paper - switch to mockito
|
||||||
+ implementation("org.spongepowered:configurate-yaml:4.1.2") // Paper - config files
|
+ implementation("org.spongepowered:configurate-yaml:4.1.2") // Paper - config files
|
||||||
implementation("commons-lang:commons-lang:2.6")
|
implementation("commons-lang:commons-lang:2.6")
|
||||||
runtimeOnly("org.xerial:sqlite-jdbc:3.36.0.3")
|
runtimeOnly("org.xerial:sqlite-jdbc:3.36.0.3")
|
||||||
@ -4660,12 +4660,12 @@ index 0000000000000000000000000000000000000000..0396589795da1f83ddf62426236dde9a
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/test/java/org/bukkit/support/AbstractTestingBase.java b/src/test/java/org/bukkit/support/AbstractTestingBase.java
|
diff --git a/src/test/java/org/bukkit/support/AbstractTestingBase.java b/src/test/java/org/bukkit/support/AbstractTestingBase.java
|
||||||
index 492c1ec28a9f1facb117d05245b32231554385ad..abf31f0fc3e68f3702f0500dbff7bb9d8be26887 100644
|
index 007239914bd48263b83112c2b82a5d6406dcdbdc..3d9ece71fecd5151bb3862282f6021df2d73e3dc 100644
|
||||||
--- a/src/test/java/org/bukkit/support/AbstractTestingBase.java
|
--- a/src/test/java/org/bukkit/support/AbstractTestingBase.java
|
||||||
+++ b/src/test/java/org/bukkit/support/AbstractTestingBase.java
|
+++ b/src/test/java/org/bukkit/support/AbstractTestingBase.java
|
||||||
@@ -58,6 +58,7 @@ public abstract class AbstractTestingBase {
|
@@ -57,6 +57,7 @@ public abstract class AbstractTestingBase {
|
||||||
|
BIOMES = REGISTRY_CUSTOM.registryOrThrow(Registries.BIOME);
|
||||||
|
|
||||||
DummyServer.setup();
|
|
||||||
DummyEnchantments.setup();
|
DummyEnchantments.setup();
|
||||||
+ io.papermc.paper.configuration.GlobalConfigTestingBase.setupGlobalConfigForTest(); // Paper
|
+ io.papermc.paper.configuration.GlobalConfigTestingBase.setupGlobalConfigForTest(); // Paper
|
||||||
|
|
@ -6523,7 +6523,7 @@ index 8309eb14140ebcf62ae7be1dfa0177ac7fcf83d7..8784b0702f10eb7582c309c15f18fe13
|
|||||||
public ServerLevel(MinecraftServer minecraftserver, Executor executor, LevelStorageSource.LevelStorageAccess convertable_conversionsession, PrimaryLevelData iworlddataserver, ResourceKey<Level> resourcekey, LevelStem worlddimension, ChunkProgressListener worldloadlistener, boolean flag, long i, List<CustomSpawner> list, boolean flag1, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider) {
|
public ServerLevel(MinecraftServer minecraftserver, Executor executor, LevelStorageSource.LevelStorageAccess convertable_conversionsession, PrimaryLevelData iworlddataserver, ResourceKey<Level> resourcekey, LevelStem worlddimension, ChunkProgressListener worldloadlistener, boolean flag, long i, List<CustomSpawner> list, boolean flag1, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider) {
|
||||||
// Holder holder = worlddimension.type(); // CraftBukkit - decompile error
|
// Holder holder = worlddimension.type(); // CraftBukkit - decompile error
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
index 957e816429fdf1ab5e3f4431a3d19340cccea837..48972d64710fb0d3821e7c1a0722a1d203c47e07 100644
|
index f7c5f0cd9d467305c123d3e86c5723055424600e..56016d59d66d90de2ac4326c16b09f86e4ac390b 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -247,6 +247,8 @@ public class ServerPlayer extends Player {
|
@@ -247,6 +247,8 @@ public class ServerPlayer extends Player {
|
||||||
@ -6683,7 +6683,7 @@ index a0b5895abc88d297045e05f25bb09527991d43f0..6e0bd0eab0b06a4ac3042496bbb91292
|
|||||||
super(type, world);
|
super(type, world);
|
||||||
this.xpReward = 5;
|
this.xpReward = 5;
|
||||||
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
|
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||||
index 1f7fe7995d3ecc1a47717927f5f2f74b8d99b33d..489cb50f70589c87dd8fb57087e5fa14fd5e1c43 100644
|
index 6439fcbbd31158ce7a8ccf191b47d95911c8c3c2..cf810a1d645dd63595702a5f07456cd48393ee79 100644
|
||||||
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
|
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||||
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
|
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||||
@@ -759,6 +759,25 @@ public final class ItemStack {
|
@@ -759,6 +759,25 @@ public final class ItemStack {
|
@ -2071,7 +2071,7 @@ index 0f7dd33d51281b383be0fb47d4e6b133f123ce1f..011c3d2dbd34dd0c2afba477202c937c
|
|||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
index 48972d64710fb0d3821e7c1a0722a1d203c47e07..6a8c67dc668c775809227b455b2dd522ea0dd70b 100644
|
index 56016d59d66d90de2ac4326c16b09f86e4ac390b..e06b2a8eece6f179e4a3f38754fd8d9e7b69bdc4 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -156,6 +156,7 @@ import net.minecraft.world.scores.Score;
|
@@ -156,6 +156,7 @@ import net.minecraft.world.scores.Score;
|
@ -4485,7 +4485,7 @@ index 74d1ae0104e8d0795df50f00317fd860de4f112e..a7feddc31da0870faa3d32a7108282e9
|
|||||||
private final DebugBuffer<ChunkHolder.ChunkSaveDebug> chunkToSaveHistory;
|
private final DebugBuffer<ChunkHolder.ChunkSaveDebug> chunkToSaveHistory;
|
||||||
public int oldTicketLevel;
|
public int oldTicketLevel;
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
||||||
index 4aaea477933a89c0febdcfedeebeae609e61f73e..779783037d024792f8052fea0ea8dbe6f06bc181 100644
|
index cb1387a18f4306829c75b07a73195b54dbe63ad0..a07c413f1ee1a1689ca8ca87137cf4992d85c7aa 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
|
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
||||||
@@ -131,7 +131,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
@@ -131,7 +131,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||||
@ -5059,7 +5059,7 @@ index 49f091183111958ebd3fb56964fc5d728c16755c..be181106a223f6bb824ddf5869067461
|
|||||||
|
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java b/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java
|
diff --git a/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java b/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java
|
||||||
index 7798cbbae6b72d64e6129cebf1f66696f21e15f9..e310b018004c8d7edbfec877f06671d17f7e47fd 100644
|
index 240c19f4a7552a01b3c48f1f6413119e4cfc2b67..4843bd864deba357e0a4b2fd844324218af9774f 100644
|
||||||
--- a/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java
|
--- a/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java
|
||||||
+++ b/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java
|
+++ b/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java
|
||||||
@@ -142,7 +142,7 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer
|
@@ -142,7 +142,7 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer
|
@ -15922,7 +15922,7 @@ index e96a0ca47e4701ba187555bd92c968345bc85677..73b96f804079288e9c5fcc11da54e61e
|
|||||||
+ // Paper end
|
+ // Paper end
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
index e4435962a60cf9c6d833183bd244a2758ff42808..b85545f997447875e737e4d22a8a8dbcf1f8e2c8 100644
|
index fdb7314784a2232a96a9ccdb049bd240e1cc9b06..8ef64f5192500f87f514c42432c0d5c8361145a7 100644
|
||||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
@@ -776,6 +776,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
@@ -776,6 +776,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
||||||
@ -18004,7 +18004,7 @@ index fd1da8431578832bcd1f3ca7890dd2150b916ebd..958c5faeddd3ee54ac2880eb3eb9e4ab
|
|||||||
// Spigot start
|
// Spigot start
|
||||||
private final org.bukkit.World.Spigot spigot = new org.bukkit.World.Spigot()
|
private final org.bukkit.World.Spigot spigot = new org.bukkit.World.Spigot()
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
index c0b89ccf7b7776d010e6e3632a43b2114ac6c128..8dc5aeaf9525dca447f718153d6210a039aa080e 100644
|
index b09d8420ffe3c7e2ba173ee98643bc17909db563..9a6c9c42b162315115781246cdf91af816d93293 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
@@ -176,6 +176,81 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
@@ -176,6 +176,81 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
@ -7,7 +7,7 @@ Subject: [PATCH] Add command line option to load extra plugin jars not in the
|
|||||||
ex: java -jar paperclip.jar nogui -add-plugin=/path/to/plugin.jar -add-plugin=/path/to/another/plugin_jar.jar
|
ex: java -jar paperclip.jar nogui -add-plugin=/path/to/plugin.jar -add-plugin=/path/to/another/plugin_jar.jar
|
||||||
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
index 241e328dda2f9d32a16bbb47f4848af33d8d7b45..1e8f5b6b74c469a77238b2798fe1d0897a7c6fb3 100644
|
index 720a078acfe770dba76413a8cfa4ef15616ae292..82b267898f98b7e6c808a2377951106769a4a763 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
@@ -418,10 +418,15 @@ public final class CraftServer implements Server {
|
@@ -418,10 +418,15 @@ public final class CraftServer implements Server {
|
||||||
@ -66,7 +66,7 @@ index 241e328dda2f9d32a16bbb47f4848af33d8d7b45..1e8f5b6b74c469a77238b2798fe1d089
|
|||||||
if (type == PluginLoadOrder.STARTUP) {
|
if (type == PluginLoadOrder.STARTUP) {
|
||||||
this.helpMap.clear();
|
this.helpMap.clear();
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||||
index e2cf043fb35ae8474bf1f6ba2cc2505566973cfe..44b30d0f297af5eb4ace4160a0c601ff824632f6 100644
|
index 5448d2a6fe8cace246b81742da19666ec24ca48c..a51581263f1c9d72aab7c9223a816d034630f702 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
|
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||||
@@ -149,6 +149,12 @@ public class Main {
|
@@ -149,6 +149,12 @@ public class Main {
|
@ -5,7 +5,7 @@ Subject: [PATCH] Configurable fishing time ranges
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
diff --git a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
||||||
index 41a3e97cda5e12658c69fc8f097250d1f2f5fdea..354fed07a1c8d88c97350be11388925e5bf82f9e 100644
|
index f0cb2fa768adf1ffe68a00457d39a7749899ac6b..9d0df8d64a2cfd2458295a214829f277798030f0 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
--- a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
+++ b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
||||||
@@ -86,6 +86,10 @@ public class FishingHook extends Projectile {
|
@@ -86,6 +86,10 @@ public class FishingHook extends Projectile {
|
@ -44,7 +44,7 @@ index b300d12e9e00519028b53aca9c3fb01f589eaa91..63acd109a79ed752a05df3d4f1b99309
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
|
diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
|
||||||
index 652da141c3ae19c4de790dea1477f9c3f4c0dee1..d11a715dccaaf2a2faeef8af9ff6e5f1914416cb 100644
|
index 8c2b562e46a35369389da453012b7af570145380..f21ae1ae8af79c1c0c6f2feaa933638add0aa065 100644
|
||||||
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
|
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
|
||||||
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
|
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
|
||||||
@@ -1184,11 +1184,11 @@ public class LevelChunk extends ChunkAccess {
|
@@ -1184,11 +1184,11 @@ public class LevelChunk extends ChunkAccess {
|
@ -5,7 +5,7 @@ Subject: [PATCH] Configurable end credits
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
index 72f9e0eedb142cb37f0cab85208d491c4918235e..38f40851a5927a2f71fb3126d554770ff6cb1107 100644
|
index e06b2a8eece6f179e4a3f38754fd8d9e7b69bdc4..d7b581a34d95b038e548a7380ce00ebba9835606 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -1011,6 +1011,7 @@ public class ServerPlayer extends Player {
|
@@ -1011,6 +1011,7 @@ public class ServerPlayer extends Player {
|
@ -5,7 +5,7 @@ Subject: [PATCH] Fix lag from explosions processing dead entities
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
|
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
|
||||||
index e0efb6ad5f25522bd395018b85df00dda33a443a..77dc0b310f48471c1ca1dc95bf01c5e24f1ed6d8 100644
|
index 84b903ec43ce39ef530ecbcc65999df748f785af..735442e98fc9f5a182ff15a526d9601162c9418d 100644
|
||||||
--- a/src/main/java/net/minecraft/world/level/Explosion.java
|
--- a/src/main/java/net/minecraft/world/level/Explosion.java
|
||||||
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
|
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
|
||||||
@@ -202,7 +202,7 @@ public class Explosion {
|
@@ -202,7 +202,7 @@ public class Explosion {
|
@ -5,7 +5,7 @@ Subject: [PATCH] Configurable mob spawner tick rate
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/BaseSpawner.java b/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
diff --git a/src/main/java/net/minecraft/world/level/BaseSpawner.java b/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
||||||
index d172f4e00b064c6c8fb5b1f6b0b68fd44a6efb62..cf9a0addcbec3f78a541fad85697961ed8ec884b 100644
|
index 3e83bff81a0656d5e1d079ad9e63c7d27561c8e3..b214a79efc4f5279d3dd29feb1f79efc45788a8d 100644
|
||||||
--- a/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
--- a/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
||||||
+++ b/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
+++ b/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
||||||
@@ -45,6 +45,7 @@ public abstract class BaseSpawner {
|
@@ -45,6 +45,7 @@ public abstract class BaseSpawner {
|
@ -5,7 +5,7 @@ Subject: [PATCH] Implement PlayerLocaleChangeEvent
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
index dadd073ff8df18c0ba2bcadbb631f93ee11181a4..a64bf2c4eab6ddb3d135bea245fa099e34534086 100644
|
index d7b581a34d95b038e548a7380ce00ebba9835606..a95e2e05db626edbedaa604f059e19a592a682a3 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -1787,7 +1787,7 @@ public class ServerPlayer extends Player {
|
@@ -1787,7 +1787,7 @@ public class ServerPlayer extends Player {
|
@ -5,7 +5,7 @@ Subject: [PATCH] Configurable container update tick rate
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
index fe1cf92644809b9aed5f74235166a21771893b72..91380d37ddd0c03301618849ea8fd9a72c333ae5 100644
|
index a95e2e05db626edbedaa604f059e19a592a682a3..c9e262967f040d224e284aa82256422db14aa9d5 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -233,6 +233,7 @@ public class ServerPlayer extends Player {
|
@@ -233,6 +233,7 @@ public class ServerPlayer extends Player {
|
@ -12,7 +12,7 @@ improve setPosition to use raw
|
|||||||
public net.minecraft.world.entity.Entity setRot(FF)V
|
public net.minecraft.world.entity.Entity setRot(FF)V
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||||
index 5463b07b24a4572bd9e83b6694fa0162d4911f7b..ae492b5c184896864bb6cc7429dfd701d560ae06 100644
|
index da36a7342c5ef34af9ea4330e6cee2880d8d4dc8..22b9f0b3764907fc3c3d8bf8d42ef84ff237cd71 100644
|
||||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||||
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||||
@@ -229,7 +229,7 @@ public abstract class PlayerList {
|
@@ -229,7 +229,7 @@ public abstract class PlayerList {
|
@ -21,7 +21,7 @@ character.
|
|||||||
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
|
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
index b85545f997447875e737e4d22a8a8dbcf1f8e2c8..4acffc3c509ca247a31a10099829a36a15d044a6 100644
|
index 8ef64f5192500f87f514c42432c0d5c8361145a7..f9f18e263d29421bdc83993a6fd55f47cb7ab926 100644
|
||||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
@@ -2040,7 +2040,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
@@ -2040,7 +2040,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
||||||
@ -107,7 +107,7 @@ index ecc94c04ba83aff8f232467aef2def69065a1c1e..21479b83bbf8a3fd83d2c28626c70b7e
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
index 2bd04b15330e436dad2bc5006406bf791200d8fd..18ca87ebdc58f1ed2c1dd37e91f7ab3d85f3d014 100644
|
index 63e01d1380135072735444724a9b060be364cec4..b3fc0f67715707bf4ad6ff88fbf8dab1c830d74b 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
@@ -504,7 +504,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
@@ -504,7 +504,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
@ -18,7 +18,7 @@ index 64c4b88f0a64436c126cf32d6e289b3876af8dfb..85abd62434cbe3beb63f61262504372b
|
|||||||
if (random.nextInt(10) == 0 && flag && pos.getY() < 40) {
|
if (random.nextInt(10) == 0 && flag && pos.getY() < 40) {
|
||||||
return checkMobSpawnRules(type, world, spawnReason, pos, random);
|
return checkMobSpawnRules(type, world, spawnReason, pos, random);
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
|
||||||
index cda6277a3a8eefc80de00ffc98687ce0afca7bf2..46b1cce7d482adea911b71f3e3623ac0574a85ae 100644
|
index a895c81ea6af0822c8371ae93cfe4b72d419439d..e4a533ace96829414844607a013831dba7a1e73e 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
|
||||||
@@ -177,7 +177,7 @@ public class CraftChunk implements Chunk {
|
@@ -177,7 +177,7 @@ public class CraftChunk implements Chunk {
|
Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden Mehr anzeigen
In neuem Issue referenzieren
Einen Benutzer sperren