Fix patch, fix .gitattributes file name
This commit is contained in:
parent
3c1cd3bdf2
commit
88bc74ec42
|
@ -1,117 +0,0 @@
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Minecrell <minecrell@minecrell.net>
|
|
||||||
Date: Thu, 21 Sep 2017 19:41:20 +0200
|
|
||||||
Subject: [PATCH] Add workaround for plugins modifying the parent of the plugin
|
|
||||||
logger
|
|
||||||
|
|
||||||
Essentials uses a custom logger name ("Essentials") instead of the
|
|
||||||
plugin logger. Log messages are redirected to the plugin logger by
|
|
||||||
setting the parent of the "Essentials" logger to the plugin logger.
|
|
||||||
|
|
||||||
With our changes, the plugin logger is now also called "Essentials",
|
|
||||||
resulting in an infinite loop. Make sure plugins can't change the
|
|
||||||
parent of the plugin logger to avoid this.
|
|
||||||
|
|
||||||
diff --git a/src/main/java/com/destroystokyo/paper/utils/PaperPluginLogger.java b/src/main/java/com/destroystokyo/paper/utils/PaperPluginLogger.java
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000000000000000000000000000000..76f2cb9cd99cad2a9484eab2becd8c36f1dd91b3
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/main/java/com/destroystokyo/paper/utils/PaperPluginLogger.java
|
|
||||||
@@ -0,0 +1,41 @@
|
|
||||||
+package com.destroystokyo.paper.utils;
|
|
||||||
+
|
|
||||||
+import org.bukkit.plugin.PluginDescriptionFile;
|
|
||||||
+
|
|
||||||
+import java.util.logging.Level;
|
|
||||||
+import java.util.logging.LogManager;
|
|
||||||
+import java.util.logging.Logger;
|
|
||||||
+import org.jetbrains.annotations.NotNull;
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * Prevents plugins (e.g. Essentials) from changing the parent of the plugin logger.
|
|
||||||
+ */
|
|
||||||
+public class PaperPluginLogger extends Logger {
|
|
||||||
+
|
|
||||||
+ @NotNull
|
|
||||||
+ public static Logger getLogger(@NotNull PluginDescriptionFile description) {
|
|
||||||
+ Logger logger = new PaperPluginLogger(description);
|
|
||||||
+ if (!LogManager.getLogManager().addLogger(logger)) {
|
|
||||||
+ // Disable this if it's going to happen across reloads anyways...
|
|
||||||
+ //logger.log(Level.WARNING, "Could not insert plugin logger - one was already found: {}", LogManager.getLogManager().getLogger(this.getName()));
|
|
||||||
+ logger = LogManager.getLogManager().getLogger(description.getPrefix() != null ? description.getPrefix() : description.getName());
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return logger;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ private PaperPluginLogger(@NotNull PluginDescriptionFile description) {
|
|
||||||
+ super(description.getPrefix() != null ? description.getPrefix() : description.getName(), null);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public void setParent(@NotNull Logger parent) {
|
|
||||||
+ if (getParent() != null) {
|
|
||||||
+ warning("Ignoring attempt to change parent of plugin logger");
|
|
||||||
+ } else {
|
|
||||||
+ this.log(Level.FINE, "Setting plugin logger parent to {0}", parent);
|
|
||||||
+ super.setParent(parent);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+}
|
|
||||||
diff --git a/src/main/java/org/bukkit/plugin/java/JavaPlugin.java b/src/main/java/org/bukkit/plugin/java/JavaPlugin.java
|
|
||||||
index bb2e55e97bf887a28cac7d4f9a0a23960d22cf56..04fa3991f6ce4e9dad804f28fc6c947695857089 100644
|
|
||||||
--- a/src/main/java/org/bukkit/plugin/java/JavaPlugin.java
|
|
||||||
+++ b/src/main/java/org/bukkit/plugin/java/JavaPlugin.java
|
|
||||||
@@ -42,7 +42,7 @@ public abstract class JavaPlugin extends PluginBase {
|
|
||||||
private boolean naggable = true;
|
|
||||||
private FileConfiguration newConfig = null;
|
|
||||||
private File configFile = null;
|
|
||||||
- private Logger logger = null; // Paper - PluginLogger -> Logger
|
|
||||||
+ Logger logger = null; // Paper - PluginLogger -> Logger, package-private
|
|
||||||
|
|
||||||
public JavaPlugin() {
|
|
||||||
final ClassLoader classLoader = this.getClass().getClassLoader();
|
|
||||||
@@ -276,8 +276,11 @@ public abstract class JavaPlugin extends PluginBase {
|
|
||||||
this.dataFolder = dataFolder;
|
|
||||||
this.classLoader = classLoader;
|
|
||||||
this.configFile = new File(dataFolder, "config.yml");
|
|
||||||
- // Paper - Handle plugin prefix in implementation
|
|
||||||
- this.logger = Logger.getLogger(description.getPrefix() != null ? description.getPrefix() : description.getName());
|
|
||||||
+ // Paper start
|
|
||||||
+ if (this.logger == null) {
|
|
||||||
+ this.logger = com.destroystokyo.paper.utils.PaperPluginLogger.getLogger(this.description);
|
|
||||||
+ }
|
|
||||||
+ // Paper end
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
diff --git a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
|
|
||||||
index 13100c688bfccb826b3072aaa92901f8634cf9ab..b9766b9b47547c400ed075f1635bb1461cb5e860 100644
|
|
||||||
--- a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
|
|
||||||
+++ b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
|
|
||||||
@@ -44,6 +44,7 @@ public final class PluginClassLoader extends URLClassLoader { // Spigot
|
|
||||||
private JavaPlugin pluginInit;
|
|
||||||
private IllegalStateException pluginState;
|
|
||||||
private final Set<String> seenIllegalAccess = Collections.newSetFromMap(new ConcurrentHashMap<>());
|
|
||||||
+ private java.util.logging.Logger logger; // Paper - add field
|
|
||||||
|
|
||||||
static {
|
|
||||||
ClassLoader.registerAsParallelCapable();
|
|
||||||
@@ -62,6 +63,8 @@ public final class PluginClassLoader extends URLClassLoader { // Spigot
|
|
||||||
this.url = file.toURI().toURL();
|
|
||||||
this.libraryLoader = libraryLoader;
|
|
||||||
|
|
||||||
+ this.logger = com.destroystokyo.paper.utils.PaperPluginLogger.getLogger(description); // Paper - Register logger early
|
|
||||||
+
|
|
||||||
try {
|
|
||||||
Class<?> jarClass;
|
|
||||||
try {
|
|
||||||
@@ -222,6 +225,7 @@ public final class PluginClassLoader extends URLClassLoader { // Spigot
|
|
||||||
pluginState = new IllegalStateException("Initial initialization");
|
|
||||||
this.pluginInit = javaPlugin;
|
|
||||||
|
|
||||||
+ javaPlugin.logger = this.logger; // Paper - set logger
|
|
||||||
javaPlugin.init(loader, loader.server, description, dataFolder, file, this);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -37,17 +37,17 @@ index 0204bde9802429aca5470c235cb10232e5c8f58a..bc15a3d8f3807caee357d55952b51326
|
||||||
|
|
||||||
} catch (Throwable throwable) {
|
} catch (Throwable throwable) {
|
||||||
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 037dafb59e54047d1d54474c44897d35b8f46c98..59996bb75dc050f51cadb31ad57c25eb46485f52 100644
|
index 037dafb59e54047d1d54474c44897d35b8f46c98..e310c1eb1108780bcff4d7ba9d49cefa2926287c 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
|
||||||
@@ -160,6 +160,7 @@ public abstract class BaseSpawner {
|
@@ -166,6 +166,7 @@ public abstract class BaseSpawner {
|
||||||
if (this.nextSpawnData.getTag().size() == 1 && this.nextSpawnData.getTag().contains("id", 8)) {
|
}
|
||||||
((Mob) entity).finalizeSpawn(world, world.getCurrentDifficultyAt(entity.blockPosition()), MobSpawnType.SPAWNER, (SpawnGroupData) null, (CompoundTag) null);
|
// Spigot End
|
||||||
}
|
}
|
||||||
+ entity.spawnedViaMobSpawner = true; // Paper
|
+ entity.spawnedViaMobSpawner = true; // Paper
|
||||||
// Spigot Start
|
// Spigot Start
|
||||||
if (entityinsentient.level.spigotConfig.nerfSpawnerMobs) {
|
if (org.bukkit.craftbukkit.event.CraftEventFactory.callSpawnerSpawnEvent(entity, pos).isCancelled()) {
|
||||||
entityinsentient.aware = false;
|
Entity vehicle = entity.getVehicle();
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||||
index 271b4e3354c3885e38ae0c547edba48bf06f1e19..1fd891b53c54153c28d636b2679b4a083510ba3c 100644
|
index 271b4e3354c3885e38ae0c547edba48bf06f1e19..1fd891b53c54153c28d636b2679b4a083510ba3c 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||||
|
|
|
@ -5,18 +5,10 @@ Subject: [PATCH] Reset spawner timer when spawner event is cancelled
|
||||||
|
|
||||||
|
|
||||||
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 59996bb75dc050f51cadb31ad57c25eb46485f52..a3d829eb2e43f51db0e1282ff32039bca574a752 100644
|
index e310c1eb1108780bcff4d7ba9d49cefa2926287c..e3a69ed5ac791d8afb9c5beb924f9cf99dc0b410 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
|
||||||
@@ -167,6 +167,7 @@ public abstract class BaseSpawner {
|
@@ -190,7 +190,7 @@ public abstract class BaseSpawner {
|
||||||
}
|
|
||||||
// Spigot End
|
|
||||||
}
|
|
||||||
+ flag = true; // Paper
|
|
||||||
// Spigot Start
|
|
||||||
if (org.bukkit.craftbukkit.event.CraftEventFactory.callSpawnerSpawnEvent(entity, pos).isCancelled()) {
|
|
||||||
Entity vehicle = entity.getVehicle();
|
|
||||||
@@ -190,7 +191,7 @@ public abstract class BaseSpawner {
|
|
||||||
((Mob) entity).spawnAnim();
|
((Mob) entity).spawnAnim();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue