mirror of
https://github.com/YatopiaMC/Yatopia.git
synced 2024-12-05 00:53:43 +01:00
74c4554995
* Updated Upstream and Sidestream(s) (Paper/Tuinity/Airplane/Purpur/Origami) Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Paper Changes: 151457628 Fix Counter#decrement recursive call (#5665) 21ac7dc98 [Auto] Updated Upstream (CraftBukkit) 18ad2c9dd Add environment variable (PAPER_DISABLE_SERVER_GUI) to disable server gui 6ecbe5776 Rename leftover resource->datapack (#5662) ec90a7859 I give up on trying to teach people to avoid the incorrect ways. dc7b7a160 Fix missing username console death message (#5654) (#5658) c639a52a6 Add basic Datapack API (#5653) (#5653) 99c1d9da6 Updated Upstream (CraftBukkit) (#5652) 2d50c17e2 [CI-SKIP] Add PR rebasing steps (#5634) 2c5f8085e Remove boat interaction event (Fixes #5539) 96ee1fb8f fix WorldSaveEvent not firing with /save-all (#5650) e90e7829e remove unneeded patch (#5641) d875bacc2 Activate warning by default when people are doing silly things (#5642) cb896d471 Updated Upstream (Bukkit/CraftBukkit/Spigot) (#5643) ecbf5a38e Revert "Updated Upstream (Bukkit/CraftBukkit/Spigot) (#5636)" 20fc4ab70 Updated Upstream (Bukkit/CraftBukkit/Spigot) (#5636) 20d8812ea Fix CraftPotionBrewer cache (#5632) cd6ae8816 Add a "Should Burn in Sunlight" API for Phantoms and Skeletons (#5608) 25edfe58b Remove unneeded component conversion for kick msg (#5626) cec386f66 Call PortalCreateEvent when players enter the end (#5618) 453c7f05c Add ItemStack#displayName to get the formatted display name of an ItemStack (#5628) 4efe8b498 Update Java version warning (#5621) e0a021ccc Add ItemStack#getTranslationKey() (#5616) 53d71b717 Add setPotionUseTimeLeft to Witch (#5597) 239935d18 Add Inventory#close (#5610) 29bf6cd41 Updated Upstream (CraftBukkit) ad45f316c Add raw address to AsyncPlayerPreLoginEvent (#5614) 28865335a [Auto] Updated Upstream (CraftBukkit) 750049fa2 Fix incorrect colors in some log messages (#5609) c5fa3f0d4 Add Adventure message to PlayerAdvancementDoneEvent (#5030) 69c09cdb0 Updated Upstream (CraftBukkit) (#5607) Tuinity Changes: 1222573 Fix incorrect status dataconverter for pre 1.13 chunks Airplane Changes: 3dce697 Fix gradle stuff 209bce3 Patches Purpur Changes: 72708f4 Option to disable dragon egg teleporting 5f87a45 Updated Upstream (Paper) 7bfc70d swap heavy logic to end bb9d72d Fix #338 - Phantoms always burning bug 8fa99b3 Configurable critical damage multiplier (#339) dc4a1cb Updated Upstream (Paper & Tuinity) c166841 Configurable powered rail boost modifier (closes #329) (#333) ab9b8ca Updated Upstream (Paper & Airplane) 44e72f7 Let parrots breed using any tempting item 09d98d3 this part is important, too :3 2015fe5 Breedable parrots 552d783 Iron golem poppy calms anger 1fa06a1 Optimize collisions (#328) 1112240 Extend Halloween Optimization (#321) 03f1aec Config for health to impact Creeper explosion radius (#304) 8f7bce4 Add config for hidden from entity selector patch 21906a2 Hide hidden players from entity selector 445496d [ci-skip] fix this too, now.. jfc 3ba8c81 Ya'll didn't see nothing.. 2d4611b Updated Upstream (Paper) beed258 Better offline mode warning (#330) c1efe3c It's meant to be double 🤦 3f9958b Implement the Mob Blindness mod 6e98c88 Add missing repo to settings.gradle.kts da5185b Update Gradle to 7.0.1 fbd28d8 Updated Upstream (Paper & Tuinity) cb42dec Updated Upstream (Paper) e883991 Fix compatibility with MyPet Origami Changes: 4c0616d Update Paper * Updated Upstream and Sidestream(s) (Paper) Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Paper Changes: 45e19ffb0 [Auto] Updated Upstream (CraftBukkit) * Updated Upstream and Sidestream(s) (Paper/Purpur) Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Paper Changes: 7989028a5 More Enchantment API (#5588) c0cb5c129 Adds methods for checking item repairability (#5651) 22399b07f Actually use extended/ambient in BeaconEffectEvent (#5647) 979135878 Add cause and cancel message to PlayerGameModeChangeEvent (#5638) 51e1e58d2 Fix Adventure support in UnknownCommandEvent (#5664) Purpur Changes: ca9be56 Do not allow duplicate unsafe enchants * Updated Upstream and Sidestream(s) (Paper/Purpur/Paper) Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Paper Changes: 7989028a5 More Enchantment API (#5588) c0cb5c129 Adds methods for checking item repairability (#5651) 22399b07f Actually use extended/ambient in BeaconEffectEvent (#5647) 979135878 Add cause and cancel message to PlayerGameModeChangeEvent (#5638) 51e1e58d2 Fix Adventure support in UnknownCommandEvent (#5664) Purpur Changes: ca9be56 Do not allow duplicate unsafe enchants Paper Changes: 322886c86 Avoid NPE due to PlayerBedFailEnterEvent d3c9a195c removed duplicate ProjectileHitEvent for fireball (#5671) * Updated Upstream and Sidestream(s) (Paper/Airplane/Empirecraft) Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Paper Changes: 2c6b1f048 Revert "Remove itneract event from boat" (Fixes #5677) aae1c54a9 Add command line option to load extra plugin jars not in the plugins folder Airplane Changes: 4a22184 Updated Upstream (Tuinity) Empirecraft Changes: d0aaf527 Updated Paper * Updated Upstream and Sidestream(s) (Airplane/Purpur) Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Airplane Changes: 046ae54 Improve hopper performance via bitset Purpur Changes: c333d3d Add config for the unverified username message (#348) 703b5da Fix invulnerable-while-accepting-resource-pack not being used * Updated Upstream and Sidestream(s) (Paper/Purpur) Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Paper Changes: 6c183f1ae [Auto] Updated Upstream (CraftBukkit) Purpur Changes: e0991e0 allow using legacy section symbol in unverified username message 6bd246b Updated Upstream (Paper) * Updated Upstream and Sidestream(s) (Airplane) Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Airplane Changes: 5fab6a2 Improvements to fluid & profiler patches * Updated Upstream and Sidestream(s) (Paper/Tuinity/Airplane/Purpur/Empirecraft) Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Paper Changes: 41e6073ce [Auto] Updated Upstream (CraftBukkit) 6f93dc95d Add cause to Weather/ThunderChangeEvents (#4832) 507cf19b3 [CI-SKIP] [Auto] Rebuild Patches afe0785bf Added PlayerPurchaseEvent for standalone Merchant GUIs (#5583) 615df3d8a Fix entity motion tag from mob spawners (#5718) 2d34898b5 Add methods for getting default item attributes (#5593) d9766433e Add EntityInsideBlockEvent (#5596) 47d48790d Change return type of ItemStack#editMeta to allow checking for successful vs non-successful edits 7aabe7d56 [CI-SKIP] fix minecart vs minecraft typos (#5713) f775e87b4 [CI-SKIP] ci: update setup-java action (#5710) c58b3b277 ci: replace Java 11 with Java 16 in GH Actions build flow (#5709) 4b72327a6 ItemStack#editMeta 68984b664 Add Unix domain socket support (#5611) 68c67e680 Add Mob#lookAt API (#5633) 4bacecd16 [Auto] Updated Upstream (Bukkit/CraftBukkit) 1f28e6eeb Fix default ChatRenderer when no plugins are installed (#5702) ecb0d32ca Enhance (Async)ChatEvent with per-viewer rendering API (#5684) f3e541ca1 Actually list all missing hard depends (#5701) 11f83fe8e [CI-SKIP] [Auto] Rebuild Patches a36e5d65f MC-148809: Fix incorrect structure block data length 3dcbdc73b Fix force upgrade patch (#5699) dab6ec6cd List all missing hard depends not just first (#5673) aed5031e3 Fix/Optimize world and light datafixes (#5693) 719040d92 [Auto] Updated Upstream (CraftBukkit) Tuinity Changes: f0e91a4 Updated Upstream (Paper) f88659c Fix and optimise world force upgrading Airplane Changes: 636dbff [ci skip] Cleanup mcdev import files c579320 [ci skip] Remove icons 7ada9a4 [skip ci] Need to specify 1.16.5 in the README of course 813df1a Update README daf3f0b Optimize air case for raytracing 1c252a5 Update Tuinity URL 50babee Updated Upstream (Tuinity) 85e0c63 Revert "Allow plugins to stupidly replace server internals" db3fe2c Remove auto import 6b32e01 Allow plugins to stupidly replace server internals f849f00 Flare Update ac10e43 Flare Update 7f3b091 Move check 040fa19 Better checking for useless move packets Purpur Changes: adb0cafe Updated Upstream (Paper) f9ccf6dd Updated Upstream (Paper & Airplane) 1343a050 Updated Upstream (Paper, Tuinity, & Airplane) af2dd61a Updated Upstream (Paper, Tuinity, & Airplane) 1808888a Expand gamemode extra perms some more Empirecraft Changes: 9e2881e6 Don't dismount on teleports... 7ed16bf3 Updated Paper c3d0a1b2 Re-add missing line in Vehicle teleporting patch * drop Improved-oversized-chunk-data-packet-handling.patch
263 lines
11 KiB
Diff
263 lines
11 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: snoopdoooggyttv <snoopdoooggyttv@users.noreply.github.com>
|
|
Date: Wed, 5 May 2021 20:32:22 +0200
|
|
Subject: [PATCH] Fix Log4j Warning
|
|
|
|
|
|
diff --git a/src/main/java/org/apache/logging/log4j/util/StackLocator.java b/src/main/java/org/apache/logging/log4j/util/StackLocator.java
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..44161840e64946b4b6ce0483495304809d15ade8
|
|
--- /dev/null
|
|
+++ b/src/main/java/org/apache/logging/log4j/util/StackLocator.java
|
|
@@ -0,0 +1,250 @@
|
|
+/*
|
|
+ * Licensed to the Apache Software Foundation (ASF) under one or more
|
|
+ * contributor license agreements. See the NOTICE file distributed with
|
|
+ * this work for additional information regarding copyright ownership.
|
|
+ * The ASF licenses this file to You under the Apache license, Version 2.0
|
|
+ * (the "License"); you may not use this file except in compliance with
|
|
+ * the License. You may obtain a copy of the License at
|
|
+ *
|
|
+ * http://www.apache.org/licenses/LICENSE-2.0
|
|
+ *
|
|
+ * Unless required by applicable law or agreed to in writing, software
|
|
+ * distributed under the License is distributed on an "AS IS" BASIS,
|
|
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
+ * See the license for the specific language governing permissions and
|
|
+ * limitations under the license.
|
|
+ */
|
|
+package org.apache.logging.log4j.util;
|
|
+
|
|
+import java.lang.reflect.Method;
|
|
+import java.util.Stack;
|
|
+
|
|
+/**
|
|
+ * <em>Consider this class private.</em> Provides various methods to determine the caller class. <h3>Background</h3>
|
|
+ * <p>
|
|
+ * This method, available only in the Oracle/Sun/OpenJDK implementations of the Java Virtual Machine, is a much more
|
|
+ * efficient mechanism for determining the {@link Class} of the caller of a particular method. When it is not available,
|
|
+ * a {@link SecurityManager} is the second-best option. When this is also not possible, the {@code StackTraceElement[]}
|
|
+ * returned by {@link Throwable#getStackTrace()} must be used, and its {@code String} class name converted to a
|
|
+ * {@code Class} using the slow {@link Class#forName} (which can add an extra microsecond or more for each invocation
|
|
+ * depending on the runtime ClassLoader hierarchy).
|
|
+ * </p>
|
|
+ * <p>
|
|
+ * During Java 8 development, the {@code sun.reflect.Reflection.getCallerClass(int)} was removed from OpenJDK, and this
|
|
+ * change was back-ported to Java 7 in version 1.7.0_25 which changed the behavior of the call and caused it to be off
|
|
+ * by one stack frame. This turned out to be beneficial for the survival of this API as the change broke hundreds of
|
|
+ * libraries and frameworks relying on the API which brought much more attention to the intended API removal.
|
|
+ * </p>
|
|
+ * <p>
|
|
+ * After much community backlash, the JDK team agreed to restore {@code getCallerClass(int)} and keep its existing
|
|
+ * behavior for the rest of Java 7. However, the method is deprecated in Java 8, and current Java 9 development has not
|
|
+ * addressed this API. Therefore, the functionality of this class cannot be relied upon for all future versions of Java.
|
|
+ * It does, however, work just fine in Sun JDK 1.6, OpenJDK 1.6, Oracle/OpenJDK 1.7, and Oracle/OpenJDK 1.8. Other Java
|
|
+ * environments may fall back to using {@link Throwable#getStackTrace()} which is significantly slower due to
|
|
+ * examination of every virtual frame of execution.
|
|
+ * </p>
|
|
+ */
|
|
+public final class StackLocator {
|
|
+
|
|
+ // Checkstyle Suppress: the lower-case 'u' ticks off CheckStyle...
|
|
+ // CHECKSTYLE:OFF
|
|
+ static final int JDK_7u25_OFFSET;
|
|
+ // CHECKSTYLE:OFF
|
|
+
|
|
+ private static final Method GET_CALLER_CLASS;
|
|
+
|
|
+ private static final StackLocator INSTANCE;
|
|
+
|
|
+ static {
|
|
+ Method getCallerClass;
|
|
+ int java7u25CompensationOffset = 0;
|
|
+ try {
|
|
+ final Class<?> sunReflectionClass = LoaderUtil.loadClass("sun.reflect.Reflection");
|
|
+ getCallerClass = sunReflectionClass.getDeclaredMethod("getCallerClass", int.class);
|
|
+ Object o = getCallerClass.invoke(null, 0);
|
|
+ getCallerClass.invoke(null, 0);
|
|
+ if (o == null || o != sunReflectionClass) {
|
|
+ getCallerClass = null;
|
|
+ java7u25CompensationOffset = -1;
|
|
+ } else {
|
|
+ o = getCallerClass.invoke(null, 1);
|
|
+ if (o == sunReflectionClass) {
|
|
+ System.out.println("WARNING: Java 1.7.0_25 is in use which has a broken implementation of Reflection.getCallerClass(). " +
|
|
+ " Please consider upgrading to Java 1.7.0_40 or later.");
|
|
+ java7u25CompensationOffset = 1;
|
|
+ }
|
|
+ }
|
|
+ } catch (final Exception | LinkageError e) {
|
|
+ //System.out.println("WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance."); // Yatopia - Fix Error Message
|
|
+ getCallerClass = null;
|
|
+ java7u25CompensationOffset = -1;
|
|
+ }
|
|
+
|
|
+ GET_CALLER_CLASS = getCallerClass;
|
|
+ JDK_7u25_OFFSET = java7u25CompensationOffset;
|
|
+
|
|
+ INSTANCE = new StackLocator();
|
|
+ }
|
|
+
|
|
+ public static StackLocator getInstance() {
|
|
+ return INSTANCE;
|
|
+ }
|
|
+
|
|
+ private StackLocator() {
|
|
+ }
|
|
+
|
|
+ // TODO: return Object.class instead of null (though it will have a null ClassLoader)
|
|
+ // (MS) I believe this would work without any modifications elsewhere, but I could be wrong
|
|
+
|
|
+ // migrated from ReflectiveCallerClassUtility
|
|
+ @PerformanceSensitive
|
|
+ public Class<?> getCallerClass(final int depth) {
|
|
+ if (depth < 0) {
|
|
+ throw new IndexOutOfBoundsException(Integer.toString(depth));
|
|
+ }
|
|
+ if (GET_CALLER_CLASS == null) {
|
|
+ return null;
|
|
+ }
|
|
+ // note that we need to add 1 to the depth value to compensate for this method, but not for the Method.invoke
|
|
+ // since Reflection.getCallerClass ignores the call to Method.invoke()
|
|
+ try {
|
|
+ return (Class<?>) GET_CALLER_CLASS.invoke(null, depth + 1 + JDK_7u25_OFFSET);
|
|
+ } catch (final Exception e) {
|
|
+ // theoretically this could happen if the caller class were native code
|
|
+ // TODO: return Object.class
|
|
+ return null;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ // migrated from Log4jLoggerFactory
|
|
+ @PerformanceSensitive
|
|
+ public Class<?> getCallerClass(final String fqcn, final String pkg) {
|
|
+ return getCallerClass(fqcn, pkg, 0);
|
|
+ }
|
|
+
|
|
+ @PerformanceSensitive
|
|
+ public Class<?> getCallerClass(final String fqcn, final String pkg, final int skipDepth) {
|
|
+ if (skipDepth < 0) {
|
|
+ throw new IllegalArgumentException("skipDepth cannot be negative");
|
|
+ }
|
|
+ boolean next = false;
|
|
+ Class<?> clazz;
|
|
+ for (int i = 2; null != (clazz = getCallerClass(i)); i++) {
|
|
+ if (fqcn.equals(clazz.getName())) {
|
|
+ next = true;
|
|
+ continue;
|
|
+ }
|
|
+ if (next && clazz.getName().startsWith(pkg)) {
|
|
+ return skipDepth == 0
|
|
+ ? clazz
|
|
+ : getCallerClass(i + skipDepth);
|
|
+ }
|
|
+ }
|
|
+ // TODO: return Object.class
|
|
+ return null;
|
|
+ }
|
|
+
|
|
+ // added for use in LoggerAdapter implementations mainly
|
|
+ @PerformanceSensitive
|
|
+ public Class<?> getCallerClass(final Class<?> anchor) {
|
|
+ boolean next = false;
|
|
+ Class<?> clazz;
|
|
+ for (int i = 2; null != (clazz = getCallerClass(i)); i++) {
|
|
+ if (anchor.equals(clazz)) {
|
|
+ next = true;
|
|
+ continue;
|
|
+ }
|
|
+ if (next) {
|
|
+ return clazz;
|
|
+ }
|
|
+ }
|
|
+ return Object.class;
|
|
+ }
|
|
+
|
|
+ // migrated from ThrowableProxy
|
|
+ @PerformanceSensitive
|
|
+ public Stack<Class<?>> getCurrentStackTrace() {
|
|
+ // benchmarks show that using the SecurityManager is much faster than looping through getCallerClass(int)
|
|
+ if (PrivateSecurityManagerStackTraceUtil.isEnabled()) {
|
|
+ return PrivateSecurityManagerStackTraceUtil.getCurrentStackTrace();
|
|
+ }
|
|
+ // slower version using getCallerClass where we cannot use a SecurityManager
|
|
+ final Stack<Class<?>> classes = new Stack<>();
|
|
+ Class<?> clazz;
|
|
+ for (int i = 1; null != (clazz = getCallerClass(i)); i++) {
|
|
+ classes.push(clazz);
|
|
+ }
|
|
+ return classes;
|
|
+ }
|
|
+
|
|
+ public StackTraceElement calcLocation(final String fqcnOfLogger) {
|
|
+ if (fqcnOfLogger == null) {
|
|
+ return null;
|
|
+ }
|
|
+ // LOG4J2-1029 new Throwable().getStackTrace is faster than Thread.currentThread().getStackTrace().
|
|
+ final StackTraceElement[] stackTrace = new Throwable().getStackTrace();
|
|
+ boolean found = false;
|
|
+ for (int i = 0; i < stackTrace.length; i++) {
|
|
+ final String className = stackTrace[i].getClassName();
|
|
+ if (fqcnOfLogger.equals(className)) {
|
|
+
|
|
+ found = true;
|
|
+ continue;
|
|
+ }
|
|
+ if (found && !fqcnOfLogger.equals(className)) {
|
|
+ return stackTrace[i];
|
|
+ }
|
|
+ }
|
|
+ return null;
|
|
+ }
|
|
+
|
|
+ public StackTraceElement getStackTraceElement(final int depth) {
|
|
+ // (MS) I tested the difference between using Throwable.getStackTrace() and Thread.getStackTrace(), and
|
|
+ // the version using Throwable was surprisingly faster! at least on Java 1.8. See ReflectionBenchmark.
|
|
+ final StackTraceElement[] elements = new Throwable().getStackTrace();
|
|
+ int i = 0;
|
|
+ for (final StackTraceElement element : elements) {
|
|
+ if (isValid(element)) {
|
|
+ if (i == depth) {
|
|
+ return element;
|
|
+ }
|
|
+ ++i;
|
|
+ }
|
|
+ }
|
|
+ throw new IndexOutOfBoundsException(Integer.toString(depth));
|
|
+ }
|
|
+
|
|
+ private boolean isValid(final StackTraceElement element) {
|
|
+ // ignore native methods (oftentimes are repeated frames)
|
|
+ if (element.isNativeMethod()) {
|
|
+ return false;
|
|
+ }
|
|
+ final String cn = element.getClassName();
|
|
+ // ignore OpenJDK internal classes involved with reflective invocation
|
|
+ if (cn.startsWith("sun.reflect.")) {
|
|
+ return false;
|
|
+ }
|
|
+ final String mn = element.getMethodName();
|
|
+ // ignore use of reflection including:
|
|
+ // Method.invoke
|
|
+ // InvocationHandler.invoke
|
|
+ // Constructor.newInstance
|
|
+ if (cn.startsWith("java.lang.reflect.") && (mn.equals("invoke") || mn.equals("newInstance"))) {
|
|
+ return false;
|
|
+ }
|
|
+ // ignore use of Java 1.9+ reflection classes
|
|
+ if (cn.startsWith("jdk.internal.reflect.")) {
|
|
+ return false;
|
|
+ }
|
|
+ // ignore Class.newInstance
|
|
+ if (cn.equals("java.lang.Class") && mn.equals("newInstance")) {
|
|
+ return false;
|
|
+ }
|
|
+ // ignore use of Java 1.7+ MethodHandle.invokeFoo() methods
|
|
+ if (cn.equals("java.lang.invoke.MethodHandle") && mn.startsWith("invoke")) {
|
|
+ return false;
|
|
+ }
|
|
+ // any others?
|
|
+ return true;
|
|
+ }
|
|
+}
|