diff --git a/sources/src/main/java/co/aikar/timings/TimingHandler.java b/sources/src/main/java/co/aikar/timings/TimingHandler.java
index f51b4eeb2..72950f91d 100644
--- a/sources/src/main/java/co/aikar/timings/TimingHandler.java
+++ b/sources/src/main/java/co/aikar/timings/TimingHandler.java
@@ -30,10 +30,8 @@ import org.bukkit.Bukkit;
import java.util.logging.Level;
/**
- * Akarin Changes Note
- *
- * 1) Add volatile to fields
- * @author cakoyo
+ * Akarin Changes Note
+ * 1) Add volatile to fields (safety issue)
*/
class TimingHandler implements Timing {
diff --git a/sources/src/main/java/io/akarin/server/mixin/lighting/MixinChunk.java b/sources/src/main/java/io/akarin/server/mixin/lighting/MixinChunk.java
index 755c41fba..b2d682a85 100644
--- a/sources/src/main/java/io/akarin/server/mixin/lighting/MixinChunk.java
+++ b/sources/src/main/java/io/akarin/server/mixin/lighting/MixinChunk.java
@@ -293,7 +293,7 @@ public abstract class MixinChunk implements IMixinChunk {
if (chunk == null) {
continue;
}
- chunk.checkLightSide(enumfacing.opposite());
+ chunk.a(enumfacing.opposite()); // PAIL: checkLightSide
}
this.setSkylightUpdated();
diff --git a/sources/src/main/java/net/minecraft/server/Chunk.java b/sources/src/main/java/net/minecraft/server/Chunk.java
index 245ac4ff3..42acb6d9a 100644
--- a/sources/src/main/java/net/minecraft/server/Chunk.java
+++ b/sources/src/main/java/net/minecraft/server/Chunk.java
@@ -20,11 +20,9 @@ import org.bukkit.Server; // CraftBukkit
import org.bukkit.craftbukkit.util.CraftMagicNumbers; // Paper
/**
- * Akarin Changes Note
- *
- * 1) Add volatile to fields
- * 2) Add OBFHELPER
- * @author cakoyo
+ * Akarin Changes Note
+ * 1) Add volatile to fields (async lighting)
+ * 2) Expose private methods (async lighting)
*/
public class Chunk {
@@ -1340,8 +1338,7 @@ public class Chunk {
this.h(false);
}
- public void checkLightSide(EnumDirection direction) { a(direction); } // Akarin - OBFHELPER
- private void a(EnumDirection enumdirection) {
+ public void a(EnumDirection enumdirection) { // Akarin - private -> public
if (this.done) {
int i;
diff --git a/sources/src/main/java/net/minecraft/server/EnchantmentManager.java b/sources/src/main/java/net/minecraft/server/EnchantmentManager.java
index e86e978fc..10e89e7e9 100644
--- a/sources/src/main/java/net/minecraft/server/EnchantmentManager.java
+++ b/sources/src/main/java/net/minecraft/server/EnchantmentManager.java
@@ -11,10 +11,8 @@ import java.util.Random;
import java.util.Map.Entry;
/**
- * Akarin Changes Note
- *
- * 1) Expose private members
- * @author cakoyo
+ * Akarin Changes Note
+ * 1) Expose private members (cause mixin errors)
*/
public class EnchantmentManager {
diff --git a/sources/src/main/java/net/minecraft/server/EntityPlayer.java b/sources/src/main/java/net/minecraft/server/EntityPlayer.java
index 4c5cf0cbf..e22dbfdea 100644
--- a/sources/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/sources/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -32,10 +32,9 @@ import org.bukkit.inventory.MainHand;
// CraftBukkit end
/**
- * Akarin Changes Note
- *
- * 1) Add volatile to fields
- * @author cakoyo
+ * Akarin Changes Note
+ * 1) Add volatile to fields (time update)
+ * 2) Add lock to player track (safety issue)
*/
public class EntityPlayer extends EntityHuman implements ICrafting {
diff --git a/sources/src/main/java/net/minecraft/server/EntityTracker.java b/sources/src/main/java/net/minecraft/server/EntityTracker.java
index eb92f4155..aeb5a8cd3 100644
--- a/sources/src/main/java/net/minecraft/server/EntityTracker.java
+++ b/sources/src/main/java/net/minecraft/server/EntityTracker.java
@@ -12,10 +12,8 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
- * Akarin Changes Note
- *
- * 1) Add lock for entries-set operations
- * @author cakoyo
+ * Akarin Changes Note
+ * 1) Add lock for entries set operations (safety issue)
*/
public class EntityTracker {
diff --git a/sources/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/sources/src/main/java/net/minecraft/server/EntityTrackerEntry.java
index 66a9c2625..6645c26ea 100644
--- a/sources/src/main/java/net/minecraft/server/EntityTrackerEntry.java
+++ b/sources/src/main/java/net/minecraft/server/EntityTrackerEntry.java
@@ -13,6 +13,10 @@ import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerVelocityEvent;
// CraftBukkit end
+/**
+ * Akarin Changes Note
+ * 1) Make trackedPlayerMap thread-safe (safety issue)
+ */
public class EntityTrackerEntry {
private static final Logger c = LogManager.getLogger();
diff --git a/sources/src/main/java/net/minecraft/server/EnumDirection.java b/sources/src/main/java/net/minecraft/server/EnumDirection.java
index 53e445c9b..141e1c302 100644
--- a/sources/src/main/java/net/minecraft/server/EnumDirection.java
+++ b/sources/src/main/java/net/minecraft/server/EnumDirection.java
@@ -10,10 +10,8 @@ import java.util.Random;
import javax.annotation.Nullable;
/**
- * Akarin Changes Note
- *
- * 1) Add OBFHELPER
- * @author cakoyo
+ * Akarin Changes Note
+ * 1) Add OBFHELPER (panda redstone)
*/
public enum EnumDirection implements INamable {
diff --git a/sources/src/main/java/net/minecraft/server/ItemEnderEye.java b/sources/src/main/java/net/minecraft/server/ItemEnderEye.java
index ae70e0e73..57bab9f03 100644
--- a/sources/src/main/java/net/minecraft/server/ItemEnderEye.java
+++ b/sources/src/main/java/net/minecraft/server/ItemEnderEye.java
@@ -3,10 +3,8 @@ package net.minecraft.server;
import io.akarin.server.core.AkarinGlobalConfig;
/**
- * Akarin Changes Note
- *
- * 1) Add end portal disable feature
- * @author cakoyo
+ * Akarin Changes Note
+ * 1) Add end portal disable feature (feature)
*/
public class ItemEnderEye extends Item {
diff --git a/sources/src/main/java/net/minecraft/server/MinecraftServer.java b/sources/src/main/java/net/minecraft/server/MinecraftServer.java
index e9bf949cd..d2f7ecd79 100644
--- a/sources/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/sources/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -43,6 +43,10 @@ import joptsimple.OptionSet;
import org.spigotmc.SlackActivityAccountant; // Spigot
import co.aikar.timings.MinecraftTimings; // Paper
+/**
+ * Akarin Changes Note
+ * 1) Make worlds list thread-safe (slack service)
+ */
public abstract class MinecraftServer implements ICommandListener, Runnable, IAsyncTaskHandler, IMojangStatistics {
private static MinecraftServer SERVER; // Paper
diff --git a/sources/src/main/java/net/minecraft/server/NetworkManager.java b/sources/src/main/java/net/minecraft/server/NetworkManager.java
index e0439887d..047c67c29 100644
--- a/sources/src/main/java/net/minecraft/server/NetworkManager.java
+++ b/sources/src/main/java/net/minecraft/server/NetworkManager.java
@@ -32,11 +32,11 @@ import org.apache.logging.log4j.Marker;
import org.apache.logging.log4j.MarkerManager;
/**
- * Akarin Changes Note
- *
- * 1) Add volatile to fields
- * 2) Expose private members
- * @author cakoyo
+ * Akarin Changes Note
+ * 1) Add volatile to fields (nsc)
+ * 2) Expose private members (nsc)
+ * 3) Changes lock type to updatable lock (compatibility)
+ * 4) Removes unneed array creation (performance)
*/
public class NetworkManager extends SimpleChannelInboundHandler> {
diff --git a/sources/src/main/java/net/minecraft/server/PaperLightingQueue.java b/sources/src/main/java/net/minecraft/server/PaperLightingQueue.java
deleted file mode 100644
index 8fa62c20b..000000000
--- a/sources/src/main/java/net/minecraft/server/PaperLightingQueue.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package net.minecraft.server;
-
-import co.aikar.timings.Timing;
-import it.unimi.dsi.fastutil.objects.ObjectCollection;
-
-import java.util.ArrayDeque;
-
-/**
- * Akarin Changes Note
- *
- * 1) Expose private members
- * @author cakoyo
- */
-class PaperLightingQueue {
- private static final long MAX_TIME = (long) (1000000000 / 20 * .95);
- private static int updatesThisTick;
-
-
- static void processQueue(long curTime) {
- updatesThisTick = 0;
-
- final long startTime = System.nanoTime();
- final long maxTickTime = MAX_TIME - (startTime - curTime);
-
- START:
- for (World world : MinecraftServer.getServer().worlds) {
- if (!world.paperConfig.queueLightUpdates) {
- continue;
- }
-
- ObjectCollection loadedChunks = ((WorldServer) world).getChunkProviderServer().chunks.values();
- for (Chunk chunk : loadedChunks.toArray(new Chunk[loadedChunks.size()])) {
- if (chunk.lightingQueue.processQueue(startTime, maxTickTime)) {
- break START;
- }
- }
- }
- }
-
- public static class LightingQueue extends ArrayDeque { // Akarin - public
- final private Chunk chunk;
-
- LightingQueue(Chunk chunk) {
- super();
- this.chunk = chunk;
- }
-
- /**
- * Processes the lighting queue for this chunk
- *
- * @param startTime If start Time is 0, we will not limit execution time
- * @param maxTickTime Maximum time to spend processing lighting updates
- * @return true to abort processing furthur lighting updates
- */
- private boolean processQueue(long startTime, long maxTickTime) {
- if (this.isEmpty()) {
- return false;
- }
- try (Timing ignored = chunk.world.timings.lightingQueueTimer.startTiming()) {
- Runnable lightUpdate;
- while ((lightUpdate = this.poll()) != null) {
- lightUpdate.run();
- if (startTime > 0 && ++PaperLightingQueue.updatesThisTick % 10 == 0 && PaperLightingQueue.updatesThisTick > 10) {
- if (System.nanoTime() - startTime > maxTickTime) {
- return true;
- }
- }
- }
- }
-
- return false;
- }
-
- /**
- * Flushes lighting updates to unload the chunk
- */
- public void processUnload() { // Akarin - public
- if (!chunk.world.paperConfig.queueLightUpdates) {
- return;
- }
- processQueue(0, 0); // No timeout
-
- final int radius = 1; // TODO: bitflip, why should this ever be 2?
- for (int x = chunk.locX - radius; x <= chunk.locX + radius; ++x) {
- for (int z = chunk.locZ - radius; z <= chunk.locZ + radius; ++z) {
- if (x == chunk.locX && z == chunk.locZ) {
- continue;
- }
-
- Chunk neighbor = MCUtil.getLoadedChunkWithoutMarkingActive(chunk.world, x, z);
- if (neighbor != null) {
- neighbor.lightingQueue.processQueue(0, 0); // No timeout
- }
- }
- }
- }
- }
-}
diff --git a/sources/src/main/java/net/minecraft/server/PlayerChunk.java b/sources/src/main/java/net/minecraft/server/PlayerChunk.java
index bc0434a51..aa5e8722f 100644
--- a/sources/src/main/java/net/minecraft/server/PlayerChunk.java
+++ b/sources/src/main/java/net/minecraft/server/PlayerChunk.java
@@ -14,10 +14,8 @@ import org.bukkit.craftbukkit.chunkio.ChunkIOExecutor;
// CraftBukkit end
/**
- * Akarin Changes Note
- *
- * 1) Check player list empty
- * @author cakoyo
+ * Akarin Changes Note
+ * 1) Check whether players empty (performance, MC-120780)
*/
public class PlayerChunk {
diff --git a/sources/src/main/java/net/minecraft/server/PlayerConnection.java b/sources/src/main/java/net/minecraft/server/PlayerConnection.java
index e247281db..f892a865e 100644
--- a/sources/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/sources/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -62,12 +62,11 @@ import co.aikar.timings.MinecraftTimings; // Paper
// CraftBukkit end
/**
- * Akarin Changes Note
- *
- * 1) Add volatile to fields
- * 2) Expose private members
- * 3) Migrated keep alive packet handling to service thread
- * @author cakoyo
+ * Akarin Changes Note
+ * 1) Add volatile to fields (slack service)
+ * 2) Expose private members (slack service)
+ * 3) Removed keep-alive codes (slack service)
+ * 4) Accessible keep-alive limit (feature, compatibility)
*/
public class PlayerConnection implements PacketListenerPlayIn, ITickable {
diff --git a/sources/src/main/java/net/minecraft/server/PlayerList.java b/sources/src/main/java/net/minecraft/server/PlayerList.java
index ce4b58d43..0ec255217 100644
--- a/sources/src/main/java/net/minecraft/server/PlayerList.java
+++ b/sources/src/main/java/net/minecraft/server/PlayerList.java
@@ -48,10 +48,8 @@ import org.spigotmc.event.player.PlayerSpawnLocationEvent;
// CraftBukkit end
/**
- * Akarin Changes Note
- *
- * 1) Modify disconnect and connect messages
- * @author cakoyo
+ * Akarin Changes Note
+ * 1) Changes (dis)connect messages (feature)
*/
public abstract class PlayerList {
diff --git a/sources/src/main/java/net/minecraft/server/TileEntitySkull.java b/sources/src/main/java/net/minecraft/server/TileEntitySkull.java
index df58de738..60aa80fa8 100644
--- a/sources/src/main/java/net/minecraft/server/TileEntitySkull.java
+++ b/sources/src/main/java/net/minecraft/server/TileEntitySkull.java
@@ -24,6 +24,10 @@ import com.mojang.authlib.ProfileLookupCallback;
import java.util.concurrent.Callable;
// Spigot end
+/**
+ * Akarin Changes Note
+ * 1) Guava -> Caffeine (performance)
+ */
public class TileEntitySkull extends TileEntity /*implements ITickable*/ { // Paper - remove tickable
private int a;
diff --git a/sources/src/main/java/net/minecraft/server/WorldData.java b/sources/src/main/java/net/minecraft/server/WorldData.java
index 943557e68..0c64de254 100644
--- a/sources/src/main/java/net/minecraft/server/WorldData.java
+++ b/sources/src/main/java/net/minecraft/server/WorldData.java
@@ -12,10 +12,8 @@ import org.bukkit.event.weather.WeatherChangeEvent;
// CraftBukkit end
/**
- * Akarin Changes Note
- *
- * 1) Add volatile to fields
- * @author cakoyo
+ * Akarin Changes Note
+ * 1) Add volatile to fields (slack service)
*/
public class WorldData {
diff --git a/sources/src/main/java/net/minecraft/server/WorldServer.java b/sources/src/main/java/net/minecraft/server/WorldServer.java
index 27c0c28b4..d1931dae2 100644
--- a/sources/src/main/java/net/minecraft/server/WorldServer.java
+++ b/sources/src/main/java/net/minecraft/server/WorldServer.java
@@ -27,10 +27,9 @@ import org.bukkit.event.weather.LightningStrikeEvent;
// CraftBukkit end
/**
- * Akarin Changes Note
- *
- * 1) Expose private members
- * @author cakoyo
+ * Akarin Changes Note
+ * 1) Expose private members (core, safety issue)
+ * 2) Removed hardcore difficulty codes (slack service, feature)
*/
public class WorldServer extends World implements IAsyncTaskHandler {
diff --git a/sources/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/sources/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index c34dfc198..71583c422 100644
--- a/sources/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/sources/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -138,7 +138,10 @@ import net.md_5.bungee.api.chat.BaseComponent;
import javax.annotation.Nullable; // Paper
import javax.annotation.Nonnull; // Paper
-
+/**
+ * Akarin Changes Note
+ * 1) Guava -> Caffeine (performance)
+ */
public final class CraftServer implements Server {
private final String serverName = "Paper";
private final String serverVersion;
diff --git a/sources/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/sources/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 6b7455acc..66c757e17 100644
--- a/sources/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/sources/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -76,10 +76,8 @@ import org.bukkit.scoreboard.Scoreboard;
import javax.annotation.Nullable;
/**
- * Akarin Changes Note
- *
- * 1) Make hidden-players-set concurrent
- * @author cakoyo
+ * Akarin Changes Note
+ * 1) Make hidden players thread-safe (safety issue)
*/
@DelegateDeserialization(CraftOfflinePlayer.class)
public class CraftPlayer extends CraftHumanEntity implements Player {