Async Pathfinding is back

This commit is contained in:
etil2jz
2022-10-15 19:24:38 +02:00
parent 1ea55a65e2
commit 6ee6969152
18 changed files with 1765 additions and 588 deletions

View File

@@ -216,144 +216,13 @@ index c5d5648f4ca603ef2b1df723b58f9caf4dd3c722..d0a342ce8a5cc1a12ecab7969187166f
.variable(LineReader.HISTORY_FILE, java.nio.file.Paths.get(".console_history")) .variable(LineReader.HISTORY_FILE, java.nio.file.Paths.get(".console_history"))
.completer(new ConsoleCommandCompleter(this.server)) .completer(new ConsoleCommandCompleter(this.server))
.option(LineReader.Option.COMPLETE_IN_WORD, true); .option(LineReader.Option.COMPLETE_IN_WORD, true);
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/dev/etil/mirai/MiraiVersionFetcher.java b/src/main/java/dev/etil/mirai/MiraiVersionFetcher.java
index af9da39dffda01325af2ab3dd8b5e1efb18e013a..da9623b90f3d25dc4c3e3aa269c4ccd2c8a0a52c 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -923,7 +923,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
shutdownThread = Thread.currentThread();
org.spigotmc.WatchdogThread.doStop(); // Paper
if (!isSameThread()) {
- MinecraftServer.LOGGER.info("Stopping main thread (Ignore any thread death message you see! - DO NOT REPORT THREAD DEATH TO PAPER)");
+ MinecraftServer.LOGGER.info("Stopping main thread (Ignore any thread death message you see! - DO NOT REPORT THREAD DEATH TO MIRAI)"); // Mirai
while (this.getRunningThread().isAlive()) {
this.getRunningThread().stop();
try {
@@ -1656,7 +1656,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@DontObfuscate
public String getServerModName() {
- return "Pufferfish"; // Pufferfish - Pufferfish > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla!
+ return "Mirai"; // Mirai - Mirai > // Pufferfish - Pufferfish > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla!
}
public SystemReport fillSystemReport(SystemReport details) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index b8efe50c860a7537f345f46f3b3d68906ad54006..adf6308c0d8dbd8919db60abce51082091005bd1 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -248,7 +248,7 @@ import javax.annotation.Nullable; // Paper
import javax.annotation.Nonnull; // Paper
public final class CraftServer implements Server {
- private final String serverName = "Pufferfish"; // Paper // Pufferfish
+ private final String serverName = "Mirai"; // Paper // Pufferfish // Mirai
private final String serverVersion;
private final String bukkitVersion = Versioning.getBukkitVersion();
private final Logger logger = Logger.getLogger("Minecraft");
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
index 05cc8f9cdcd7e920bf9503f68efb16cd74a359a2..eff5dda2232fec841e5a5ba393f09475b0ce2861 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -430,7 +430,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
@Override
public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() {
- return new gg.pufferfish.pufferfish.PufferfishVersionFetcher(); // Pufferfish
+ return new wtf.etil.mirai.MiraiVersionFetcher(); // Mirai
}
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
index 80553face9c70c2a3d897681e7761df85b22d464..bcdb4fd83b665a6f96b6d6e989f2cfe2370cc0db 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
@@ -8,22 +8,27 @@ import java.util.logging.Logger;
import org.bukkit.Bukkit;
public final class Versioning {
- public static String getBukkitVersion() {
- String result = "Unknown-Version";
+ // Mirai start - cache getBukkitVersion
+ public static String bukkitVersion;
+ static {
+ bukkitVersion = "Unknown-Version";
- InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/gg.pufferfish.pufferfish/pufferfish-api/pom.properties"); // Pufferfish
+ InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/wtf.etil.mirai/mirai-api/pom.properties"); // Pufferfish // Mirai
Properties properties = new Properties();
if (stream != null) {
try {
properties.load(stream);
- result = properties.getProperty("version");
+ bukkitVersion = properties.getProperty("version");
} catch (IOException ex) {
Logger.getLogger(Versioning.class.getName()).log(Level.SEVERE, "Could not get Bukkit version!", ex);
}
}
+ }
+ // Mirai end
- return result;
+ public static String getBukkitVersion() {
+ return bukkitVersion; // Mirai
}
}
diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java
index e9fa7faaa4451e36b3908cbcbbe0baf213abde96..a566fa4b061961fb07720642564c4d521fbacab6 100644
--- a/src/main/java/org/spigotmc/WatchdogThread.java
+++ b/src/main/java/org/spigotmc/WatchdogThread.java
@@ -155,14 +155,14 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
if (isLongTimeout) {
// Paper end
log.log( Level.SEVERE, "------------------------------" );
- log.log( Level.SEVERE, "The server has stopped responding! This is (probably) not a Paper bug." ); // Paper
+ log.log( Level.SEVERE, "The server has stopped responding! This is (probably) not a Mirai bug." ); // Paper // Mirai
log.log( Level.SEVERE, "If you see a plugin in the Server thread dump below, then please report it to that author" );
log.log( Level.SEVERE, "\t *Especially* if it looks like HTTP or MySQL operations are occurring" );
log.log( Level.SEVERE, "If you see a world save or edit, then it means you did far more than your server can handle at once" );
log.log( Level.SEVERE, "\t If this is the case, consider increasing timeout-time in spigot.yml but note that this will replace the crash with LARGE lag spikes" );
- log.log( Level.SEVERE, "If you are unsure or still think this is a Paper bug, please report this to https://github.com/PaperMC/Paper/issues" );
+ log.log( Level.SEVERE, "If you are unsure or still think this is a Mirai bug, please report this to https://github.com/etil2jz/Mirai/issues" ); // Mirai
log.log( Level.SEVERE, "Be sure to include ALL relevant console errors and Minecraft crash reports" );
- log.log( Level.SEVERE, "Paper version: " + Bukkit.getServer().getVersion() );
+ log.log( Level.SEVERE, "Mirai version: " + Bukkit.getServer().getVersion() ); // Mirai
//
if ( net.minecraft.world.level.Level.lastPhysicsProblem != null )
{
@@ -185,12 +185,12 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
// Paper end
} else
{
- log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH - " + Bukkit.getServer().getVersion() + " ---");
+ log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO MIRAI - THIS IS NOT A BUG OR A CRASH - " + Bukkit.getServer().getVersion() + " ---"); // Mirai
log.log(Level.SEVERE, "The server has not responded for " + (currentTime - lastTick) / 1000 + " seconds! Creating thread dump");
}
// Paper end - Different message for short timeout
log.log( Level.SEVERE, "------------------------------" );
- log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Paper!):" ); // Paper
+ log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Mirai!):" ); // Paper // Mirai
io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler.dumpAllChunkLoadInfo(isLongTimeout); // Paper // Paper - rewrite chunk system
this.dumpTickingInfo(); // Paper - log detailed tick information
WatchdogThread.dumpThread( ManagementFactory.getThreadMXBean().getThreadInfo( MinecraftServer.getServer().serverThread.getId(), Integer.MAX_VALUE ), log );
@@ -206,7 +206,7 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
WatchdogThread.dumpThread( thread, log );
}
} else {
- log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH ---");
+ log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO MIRAI - THIS IS NOT A BUG OR A CRASH ---"); // Mirai
}
log.log( Level.SEVERE, "------------------------------" );
diff --git a/src/main/java/wtf/etil/mirai/MiraiVersionFetcher.java b/src/main/java/wtf/etil/mirai/MiraiVersionFetcher.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..55c0edecc8d7b51e1ec7bbda3db24102bfa35333 index 0000000000000000000000000000000000000000..7be6bb03891e0831ad72e581900fdf1118fe6454
--- /dev/null --- /dev/null
+++ b/src/main/java/wtf/etil/mirai/MiraiVersionFetcher.java +++ b/src/main/java/dev/etil/mirai/MiraiVersionFetcher.java
@@ -0,0 +1,136 @@ @@ -0,0 +1,136 @@
+package wtf.etil.mirai; +package dev.etil.mirai;
+ +
+import static net.kyori.adventure.text.Component.text; +import static net.kyori.adventure.text.Component.text;
+import static net.kyori.adventure.text.format.NamedTextColor.GREEN; +import static net.kyori.adventure.text.format.NamedTextColor.GREEN;
@@ -490,3 +359,134 @@ index 0000000000000000000000000000000000000000..55c0edecc8d7b51e1ec7bbda3db24102
+ } + }
+} +}
\ No newline at end of file \ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index af9da39dffda01325af2ab3dd8b5e1efb18e013a..da9623b90f3d25dc4c3e3aa269c4ccd2c8a0a52c 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -923,7 +923,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
shutdownThread = Thread.currentThread();
org.spigotmc.WatchdogThread.doStop(); // Paper
if (!isSameThread()) {
- MinecraftServer.LOGGER.info("Stopping main thread (Ignore any thread death message you see! - DO NOT REPORT THREAD DEATH TO PAPER)");
+ MinecraftServer.LOGGER.info("Stopping main thread (Ignore any thread death message you see! - DO NOT REPORT THREAD DEATH TO MIRAI)"); // Mirai
while (this.getRunningThread().isAlive()) {
this.getRunningThread().stop();
try {
@@ -1656,7 +1656,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@DontObfuscate
public String getServerModName() {
- return "Pufferfish"; // Pufferfish - Pufferfish > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla!
+ return "Mirai"; // Mirai - Mirai > // Pufferfish - Pufferfish > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla!
}
public SystemReport fillSystemReport(SystemReport details) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index b8efe50c860a7537f345f46f3b3d68906ad54006..adf6308c0d8dbd8919db60abce51082091005bd1 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -248,7 +248,7 @@ import javax.annotation.Nullable; // Paper
import javax.annotation.Nonnull; // Paper
public final class CraftServer implements Server {
- private final String serverName = "Pufferfish"; // Paper // Pufferfish
+ private final String serverName = "Mirai"; // Paper // Pufferfish // Mirai
private final String serverVersion;
private final String bukkitVersion = Versioning.getBukkitVersion();
private final Logger logger = Logger.getLogger("Minecraft");
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
index 05cc8f9cdcd7e920bf9503f68efb16cd74a359a2..a0b8889efef36664feb47d9f8b97fae533d1f5bf 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -430,7 +430,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
@Override
public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() {
- return new gg.pufferfish.pufferfish.PufferfishVersionFetcher(); // Pufferfish
+ return new dev.etil.mirai.MiraiVersionFetcher(); // Mirai
}
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
index 80553face9c70c2a3d897681e7761df85b22d464..fdfb304a860a1c5bda8fa6a9a5fc6e65cd1e6df4 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
@@ -8,22 +8,27 @@ import java.util.logging.Logger;
import org.bukkit.Bukkit;
public final class Versioning {
- public static String getBukkitVersion() {
- String result = "Unknown-Version";
+ // Mirai start - cache getBukkitVersion
+ public static String bukkitVersion;
+ static {
+ bukkitVersion = "Unknown-Version";
- InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/gg.pufferfish.pufferfish/pufferfish-api/pom.properties"); // Pufferfish
+ InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/dev.etil.mirai/mirai-api/pom.properties"); // Pufferfish // Mirai
Properties properties = new Properties();
if (stream != null) {
try {
properties.load(stream);
- result = properties.getProperty("version");
+ bukkitVersion = properties.getProperty("version");
} catch (IOException ex) {
Logger.getLogger(Versioning.class.getName()).log(Level.SEVERE, "Could not get Bukkit version!", ex);
}
}
+ }
+ // Mirai end
- return result;
+ public static String getBukkitVersion() {
+ return bukkitVersion; // Mirai
}
}
diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java
index e9fa7faaa4451e36b3908cbcbbe0baf213abde96..a566fa4b061961fb07720642564c4d521fbacab6 100644
--- a/src/main/java/org/spigotmc/WatchdogThread.java
+++ b/src/main/java/org/spigotmc/WatchdogThread.java
@@ -155,14 +155,14 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
if (isLongTimeout) {
// Paper end
log.log( Level.SEVERE, "------------------------------" );
- log.log( Level.SEVERE, "The server has stopped responding! This is (probably) not a Paper bug." ); // Paper
+ log.log( Level.SEVERE, "The server has stopped responding! This is (probably) not a Mirai bug." ); // Paper // Mirai
log.log( Level.SEVERE, "If you see a plugin in the Server thread dump below, then please report it to that author" );
log.log( Level.SEVERE, "\t *Especially* if it looks like HTTP or MySQL operations are occurring" );
log.log( Level.SEVERE, "If you see a world save or edit, then it means you did far more than your server can handle at once" );
log.log( Level.SEVERE, "\t If this is the case, consider increasing timeout-time in spigot.yml but note that this will replace the crash with LARGE lag spikes" );
- log.log( Level.SEVERE, "If you are unsure or still think this is a Paper bug, please report this to https://github.com/PaperMC/Paper/issues" );
+ log.log( Level.SEVERE, "If you are unsure or still think this is a Mirai bug, please report this to https://github.com/etil2jz/Mirai/issues" ); // Mirai
log.log( Level.SEVERE, "Be sure to include ALL relevant console errors and Minecraft crash reports" );
- log.log( Level.SEVERE, "Paper version: " + Bukkit.getServer().getVersion() );
+ log.log( Level.SEVERE, "Mirai version: " + Bukkit.getServer().getVersion() ); // Mirai
//
if ( net.minecraft.world.level.Level.lastPhysicsProblem != null )
{
@@ -185,12 +185,12 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
// Paper end
} else
{
- log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH - " + Bukkit.getServer().getVersion() + " ---");
+ log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO MIRAI - THIS IS NOT A BUG OR A CRASH - " + Bukkit.getServer().getVersion() + " ---"); // Mirai
log.log(Level.SEVERE, "The server has not responded for " + (currentTime - lastTick) / 1000 + " seconds! Creating thread dump");
}
// Paper end - Different message for short timeout
log.log( Level.SEVERE, "------------------------------" );
- log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Paper!):" ); // Paper
+ log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Mirai!):" ); // Paper // Mirai
io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler.dumpAllChunkLoadInfo(isLongTimeout); // Paper // Paper - rewrite chunk system
this.dumpTickingInfo(); // Paper - log detailed tick information
WatchdogThread.dumpThread( ManagementFactory.getThreadMXBean().getThreadInfo( MinecraftServer.getServer().serverThread.getId(), Integer.MAX_VALUE ), log );
@@ -206,7 +206,7 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
WatchdogThread.dumpThread( thread, log );
}
} else {
- log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH ---");
+ log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO MIRAI - THIS IS NOT A BUG OR A CRASH ---"); // Mirai
}
log.log( Level.SEVERE, "------------------------------" );

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Mirai Configuration
diff --git a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java diff --git a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java
index 2cc44fbf8e5bd436b6d4e19f6c06b351e750cb31..848ffaab670a6a245c40e52c43e0e7e826b3acbb 100644 index 2cc44fbf8e5bd436b6d4e19f6c06b351e750cb31..3491ee7e1dfeb130ffab57e9696b784220aeae67 100644
--- a/src/main/java/co/aikar/timings/TimingsExport.java --- a/src/main/java/co/aikar/timings/TimingsExport.java
+++ b/src/main/java/co/aikar/timings/TimingsExport.java +++ b/src/main/java/co/aikar/timings/TimingsExport.java
@@ -242,7 +242,8 @@ public class TimingsExport extends Thread { @@ -242,7 +242,8 @@ public class TimingsExport extends Thread {
@@ -14,30 +14,17 @@ index 2cc44fbf8e5bd436b6d4e19f6c06b351e750cb31..848ffaab670a6a245c40e52c43e0e7e8
pair("paper", mapAsJSON(Bukkit.spigot().getPaperConfig(), null)), // Pufferfish pair("paper", mapAsJSON(Bukkit.spigot().getPaperConfig(), null)), // Pufferfish
- pair("pufferfish", mapAsJSON(gg.pufferfish.pufferfish.PufferfishConfig.getConfigCopy(), null)) // Pufferfish - pair("pufferfish", mapAsJSON(gg.pufferfish.pufferfish.PufferfishConfig.getConfigCopy(), null)) // Pufferfish
+ pair("pufferfish", mapAsJSON(gg.pufferfish.pufferfish.PufferfishConfig.getConfigCopy(), null)), // Pufferfish // Mirai + pair("pufferfish", mapAsJSON(gg.pufferfish.pufferfish.PufferfishConfig.getConfigCopy(), null)), // Pufferfish // Mirai
+ pair("mirai", mapAsJSON(wtf.etil.mirai.MiraiConfig.getConfigCopy(), null)) // Mirai + pair("mirai", mapAsJSON(dev.etil.mirai.MiraiConfig.getConfigCopy(), null)) // Mirai
)); ));
new TimingsExport(listeners, parent, history).start(); new TimingsExport(listeners, parent, history).start();
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java diff --git a/src/main/java/dev/etil/mirai/MiraiCommand.java b/src/main/java/dev/etil/mirai/MiraiCommand.java
index 519883c5549744e047a8a96afee142746fcb49cd..2ef1d4feff67f9e618dc96bd1a3a086ddff25673 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -228,6 +228,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
// Paper end
gg.pufferfish.pufferfish.PufferfishConfig.load(); // Pufferfish
gg.pufferfish.pufferfish.PufferfishCommand.init(); // Pufferfish
+ wtf.etil.mirai.MiraiConfig.load(); // Mirai
+ wtf.etil.mirai.MiraiCommand.init(); // Mirai
this.setPvpAllowed(dedicatedserverproperties.pvp);
this.setFlightAllowed(dedicatedserverproperties.allowFlight);
diff --git a/src/main/java/wtf/etil/mirai/MiraiCommand.java b/src/main/java/wtf/etil/mirai/MiraiCommand.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..d73428f5554384e5bbf1c8607073b50d74c9a4cc index 0000000000000000000000000000000000000000..cdfb44177311987a19d3867df2d158647e6cc9a3
--- /dev/null --- /dev/null
+++ b/src/main/java/wtf/etil/mirai/MiraiCommand.java +++ b/src/main/java/dev/etil/mirai/MiraiCommand.java
@@ -0,0 +1,68 @@ @@ -0,0 +1,68 @@
+package wtf.etil.mirai; +package dev.etil.mirai;
+ +
+import java.io.IOException; +import java.io.IOException;
+import java.util.Collections; +import java.util.Collections;
@@ -106,13 +93,13 @@ index 0000000000000000000000000000000000000000..d73428f5554384e5bbf1c8607073b50d
+ } + }
+} +}
\ No newline at end of file \ No newline at end of file
diff --git a/src/main/java/wtf/etil/mirai/MiraiConfig.java b/src/main/java/wtf/etil/mirai/MiraiConfig.java diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..adf6004cd1637a2662e2d448221b063688a26016 index 0000000000000000000000000000000000000000..54cab7abec16b0c7155fc494f317119f17804d49
--- /dev/null --- /dev/null
+++ b/src/main/java/wtf/etil/mirai/MiraiConfig.java +++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
@@ -0,0 +1,134 @@ @@ -0,0 +1,134 @@
+package wtf.etil.mirai; +package dev.etil.mirai;
+ +
+import java.io.File; +import java.io.File;
+import java.io.IOException; +import java.io.IOException;
@@ -247,6 +234,19 @@ index 0000000000000000000000000000000000000000..adf6004cd1637a2662e2d448221b0636
+ +
+} +}
\ No newline at end of file \ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index d4efadbc87ee0b6cb8564c57fc9dcbb48367a767..d0c3b59233875e3dd05695ef4176573900d74b19 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -228,6 +228,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
// Paper end
gg.pufferfish.pufferfish.PufferfishConfig.load(); // Pufferfish
gg.pufferfish.pufferfish.PufferfishCommand.init(); // Pufferfish
+ dev.etil.mirai.MiraiConfig.load(); // Mirai
+ dev.etil.mirai.MiraiCommand.init(); // Mirai
this.setPvpAllowed(dedicatedserverproperties.pvp);
this.setFlightAllowed(dedicatedserverproperties.allowFlight);
diff --git a/src/main/resources/logo.png b/src/main/resources/logo.png diff --git a/src/main/resources/logo.png b/src/main/resources/logo.png
index a7d785f60c884ee4ee487cc364402d66c3dc2ecc..17697262316fba32f4a87ea50a9bc8993be50820 100644 index a7d785f60c884ee4ee487cc364402d66c3dc2ecc..17697262316fba32f4a87ea50a9bc8993be50820 100644
GIT binary patch GIT binary patch

View File

@@ -6,29 +6,10 @@ Subject: [PATCH] Add config for logging login location
Original code by YatopiaMC, licensed under MIT Original code by YatopiaMC, licensed under MIT
You can find the original code on https://github.com/YatopiaMC/Yatopia You can find the original code on https://github.com/YatopiaMC/Yatopia
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/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
index c50d214eed0414e9b8dc3062d67dc9427c534ef0..c687056ff9be0ff6877a22ba4d7aeda0d94e73e7 100644 index 54cab7abec16b0c7155fc494f317119f17804d49..5f3ba184fae5170425cfdbd95150ed00c3f3433b 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java --- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
@@ -504,7 +504,13 @@ public abstract class PlayerList {
}
// Paper end
// CraftBukkit - Moved from above, added world
- PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), s1, player.getId(), worldserver1.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ());
+ // Yatopia start - configurable logging of player login location
+ if (wtf.etil.mirai.MiraiConfig.logPlayerLoginLoc) {
+ PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), s1, player.getId(), worldserver1.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ());
+ } else {
+ PlayerList.LOGGER.info("{}[{}] logged in with entity id {}", player.getName().getString(), s1, player.getId());
+ }
+ // Yatopia end - configurable logging of player login location
}
public void updateEntireScoreboard(ServerScoreboard scoreboard, ServerPlayer player) {
diff --git a/src/main/java/wtf/etil/mirai/MiraiConfig.java b/src/main/java/wtf/etil/mirai/MiraiConfig.java
index adf6004cd1637a2662e2d448221b063688a26016..6f05bb1fe09dd68d4cd3e0569cbb55d5966d00a1 100644
--- a/src/main/java/wtf/etil/mirai/MiraiConfig.java
+++ b/src/main/java/wtf/etil/mirai/MiraiConfig.java
@@ -131,4 +131,10 @@ public class MiraiConfig { @@ -131,4 +131,10 @@ public class MiraiConfig {
return config.getStringList(key); return config.getStringList(key);
} }
@@ -41,3 +22,22 @@ index adf6004cd1637a2662e2d448221b063688a26016..6f05bb1fe09dd68d4cd3e0569cbb55d5
+ +
} }
\ No newline at end of file \ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 3fc95b7d7b41e078e1d219e29ada27aeab1320bf..1a10be52986bc55c20434b984443ca7164a867c1 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -504,7 +504,13 @@ public abstract class PlayerList {
}
// Paper end
// CraftBukkit - Moved from above, added world
- PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), s1, player.getId(), worldserver1.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ());
+ // Yatopia start - configurable logging of player login location
+ if (dev.etil.mirai.MiraiConfig.logPlayerLoginLoc) {
+ PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), s1, player.getId(), worldserver1.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ());
+ } else {
+ PlayerList.LOGGER.info("{}[{}] logged in with entity id {}", player.getName().getString(), s1, player.getId());
+ }
+ // Yatopia end - configurable logging of player login location
}
public void updateEntireScoreboard(ServerScoreboard scoreboard, ServerPlayer player) {

View File

@@ -4,23 +4,10 @@ Date: Thu, 9 Dec 2021 15:39:29 +0100
Subject: [PATCH] Configurable max bees in hive Subject: [PATCH] Configurable max bees in hive
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
index 41c9f074203915c31c1ae7a160ce509c13383f84..ce56e8ca4b4f866eddcf0849c3b53928550a6126 100644 index 5f3ba184fae5170425cfdbd95150ed00c3f3433b..e9c604aa084b159ffa22d4afae4f90e9e7af236c 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java --- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
@@ -43,7 +43,7 @@ public class BeehiveBlockEntity extends BlockEntity {
private final List<BeehiveBlockEntity.BeeData> stored = Lists.newArrayList();
@Nullable
public BlockPos savedFlowerPos;
- public int maxBees = 3; // CraftBukkit - allow setting max amount of bees a hive can hold
+ public int maxBees = wtf.etil.mirai.MiraiConfig.maxBees; // CraftBukkit - allow setting max amount of bees a hive can hold // Mirai - configurable max bees in hive
public BeehiveBlockEntity(BlockPos pos, BlockState state) {
super(BlockEntityType.BEEHIVE, pos, state);
diff --git a/src/main/java/wtf/etil/mirai/MiraiConfig.java b/src/main/java/wtf/etil/mirai/MiraiConfig.java
index 10bcda92607b04b255819a6c70358131e97baa1a..2849478bde14769d1202ca15ecaa8a341f1043a3 100644
--- a/src/main/java/wtf/etil/mirai/MiraiConfig.java
+++ b/src/main/java/wtf/etil/mirai/MiraiConfig.java
@@ -137,4 +137,11 @@ public class MiraiConfig { @@ -137,4 +137,11 @@ public class MiraiConfig {
"Whether or not player login location should be written in logs."); "Whether or not player login location should be written in logs.");
} }
@@ -34,3 +21,16 @@ index 10bcda92607b04b255819a6c70358131e97baa1a..2849478bde14769d1202ca15ecaa8a34
+ +
} }
\ No newline at end of file \ No newline at end of file
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
index 41c9f074203915c31c1ae7a160ce509c13383f84..53b2984d4e5c689f4bce26ec996ede8bcdd69d7d 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
@@ -43,7 +43,7 @@ public class BeehiveBlockEntity extends BlockEntity {
private final List<BeehiveBlockEntity.BeeData> stored = Lists.newArrayList();
@Nullable
public BlockPos savedFlowerPos;
- public int maxBees = 3; // CraftBukkit - allow setting max amount of bees a hive can hold
+ public int maxBees = dev.etil.mirai.MiraiConfig.maxBees; // CraftBukkit - allow setting max amount of bees a hive can hold // Mirai - configurable max bees in hive
public BeehiveBlockEntity(BlockPos pos, BlockState state) {
super(BlockEntityType.BEEHIVE, pos, state);

View File

@@ -6,32 +6,10 @@ Subject: [PATCH] Configurable flight checks
Original code by YatopiaMC, licensed under MIT Original code by YatopiaMC, licensed under MIT
You can find the original code on https://github.com/YatopiaMC/Yatopia You can find the original code on https://github.com/YatopiaMC/Yatopia
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/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
index 69316c97dd898ecf1a72f032374ccd8ed9f974b9..092a5313c7bb178bfa8fa7abfe6cfd667a1a24a0 100644 index e9c604aa084b159ffa22d4afae4f90e9e7af236c..db60b0dc87c5c7d50a5161ed2816067a49f2f5a7 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
@@ -367,7 +367,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
++this.tickCount;
this.knownMovePacketCount = this.receivedMovePacketCount;
if (this.clientIsFloating && !this.player.isSleeping() && !this.player.isPassenger()) {
- if (++this.aboveGroundTickCount > 80) {
+ if (wtf.etil.mirai.MiraiConfig.checkFlying && ++this.aboveGroundTickCount > 80) { // Yatopia - Configurable flight checks
ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked for floating too long!", this.player.getName().getString());
this.disconnect(io.papermc.paper.configuration.GlobalConfiguration.get().messages.kick.flyingPlayer, org.bukkit.event.player.PlayerKickEvent.Cause.FLYING_PLAYER); // Paper - use configurable kick message & kick event cause
return;
@@ -386,7 +386,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.vehicleLastGoodY = this.lastVehicle.getY();
this.vehicleLastGoodZ = this.lastVehicle.getZ();
if (this.clientVehicleIsFloating && this.player.getRootVehicle().getControllingPassenger() == this.player) {
- if (++this.aboveGroundVehicleTickCount > 80) {
+ if (wtf.etil.mirai.MiraiConfig.checkVehicleFlying && ++this.aboveGroundVehicleTickCount > 80) { // Yatopia - Configurable flight checks
ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked for floating a vehicle too long!", this.player.getName().getString());
this.disconnect(io.papermc.paper.configuration.GlobalConfiguration.get().messages.kick.flyingVehicle, org.bukkit.event.player.PlayerKickEvent.Cause.FLYING_VEHICLE); // Paper - use configurable kick message & kick event cause
return;
diff --git a/src/main/java/wtf/etil/mirai/MiraiConfig.java b/src/main/java/wtf/etil/mirai/MiraiConfig.java
index 2baea22bbccae7dcf5617e3d6c830247939b396f..0f94e6a76ab2c323562231ffe58a7c18819e6b00 100644
--- a/src/main/java/wtf/etil/mirai/MiraiConfig.java
+++ b/src/main/java/wtf/etil/mirai/MiraiConfig.java
@@ -144,4 +144,13 @@ public class MiraiConfig { @@ -144,4 +144,13 @@ public class MiraiConfig {
"Allowing more bees in a hive can reduce the number of ticking hives."); "Allowing more bees in a hive can reduce the number of ticking hives.");
} }
@@ -47,3 +25,25 @@ index 2baea22bbccae7dcf5617e3d6c830247939b396f..0f94e6a76ab2c323562231ffe58a7c18
+ +
} }
\ No newline at end of file \ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 50cbd7ca6394cc486b673fcf0d2bc4dc8c1f32de..12d09b01c6e167e38d3492235651ea7373b96087 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -367,7 +367,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
++this.tickCount;
this.knownMovePacketCount = this.receivedMovePacketCount;
if (this.clientIsFloating && !this.player.isSleeping() && !this.player.isPassenger()) {
- if (++this.aboveGroundTickCount > 80) {
+ if (dev.etil.mirai.MiraiConfig.checkFlying && ++this.aboveGroundTickCount > 80) { // Yatopia - Configurable flight checks
ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked for floating too long!", this.player.getName().getString());
this.disconnect(io.papermc.paper.configuration.GlobalConfiguration.get().messages.kick.flyingPlayer, org.bukkit.event.player.PlayerKickEvent.Cause.FLYING_PLAYER); // Paper - use configurable kick message & kick event cause
return;
@@ -386,7 +386,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.vehicleLastGoodY = this.lastVehicle.getY();
this.vehicleLastGoodZ = this.lastVehicle.getZ();
if (this.clientVehicleIsFloating && this.player.getRootVehicle().getControllingPassenger() == this.player) {
- if (++this.aboveGroundVehicleTickCount > 80) {
+ if (dev.etil.mirai.MiraiConfig.checkVehicleFlying && ++this.aboveGroundVehicleTickCount > 80) { // Yatopia - Configurable flight checks
ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked for floating a vehicle too long!", this.player.getName().getString());
this.disconnect(io.papermc.paper.configuration.GlobalConfiguration.get().messages.kick.flyingVehicle, org.bukkit.event.player.PlayerKickEvent.Cause.FLYING_VEHICLE); // Paper - use configurable kick message & kick event cause
return;

View File

@@ -6,15 +6,31 @@ Subject: [PATCH] Dont send useless entity packets
Original code by PurpurMC, licensed under MIT Original code by PurpurMC, licensed under MIT
You can find the original code on https://github.com/PurpurMC/Purpur You can find the original code on https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
index db60b0dc87c5c7d50a5161ed2816067a49f2f5a7..9379fd91df73ac482064a89462764dac9835c71f 100644
--- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
@@ -153,4 +153,10 @@ public class MiraiConfig {
"Whether or not vanilla anticheat should check for passengers flying.");
}
+ public static boolean dontSendUselessEntityPackets;
+ private static void uselessEntityPackets() {
+ dontSendUselessEntityPackets = getBoolean("dont-send-useless-entity-packets", true,
+ "Whether or not server should send entity packets with null movements.");
+ }
+
}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
index 9901ffe9de585a73e9ef32c700b1e8702f8786d3..aa1bd3423829900729d413a5f98f4a0b9aaf6135 100644 index 9901ffe9de585a73e9ef32c700b1e8702f8786d3..bf314a8ea0145a82c5ff4fdff23444b8978845fe 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java --- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
@@ -181,6 +181,7 @@ public class ServerEntity { @@ -181,6 +181,7 @@ public class ServerEntity {
this.teleportDelay = 0; this.teleportDelay = 0;
packet1 = new ClientboundTeleportEntityPacket(this.entity); packet1 = new ClientboundTeleportEntityPacket(this.entity);
} }
+ if (wtf.etil.mirai.MiraiConfig.dontSendUselessEntityPackets && isUselessPacket(packet1)) packet1 = null; // Purpur + if (dev.etil.mirai.MiraiConfig.dontSendUselessEntityPackets && isUselessPacket(packet1)) packet1 = null; // Purpur
} }
if ((this.trackDelta || this.entity.hasImpulse || this.entity instanceof LivingEntity && ((LivingEntity) this.entity).isFallFlying()) && this.tickCount > 0) { if ((this.trackDelta || this.entity.hasImpulse || this.entity instanceof LivingEntity && ((LivingEntity) this.entity).isFallFlying()) && this.tickCount > 0) {
@@ -41,19 +57,3 @@ index 9901ffe9de585a73e9ef32c700b1e8702f8786d3..aa1bd3423829900729d413a5f98f4a0b
public void removePairing(ServerPlayer player) { public void removePairing(ServerPlayer player) {
this.entity.stopSeenByPlayer(player); this.entity.stopSeenByPlayer(player);
player.connection.send(new ClientboundRemoveEntitiesPacket(new int[]{this.entity.getId()})); player.connection.send(new ClientboundRemoveEntitiesPacket(new int[]{this.entity.getId()}));
diff --git a/src/main/java/wtf/etil/mirai/MiraiConfig.java b/src/main/java/wtf/etil/mirai/MiraiConfig.java
index 0f94e6a76ab2c323562231ffe58a7c18819e6b00..992ab312e6e2b8283ef8187bcbeeb35dd51858a1 100644
--- a/src/main/java/wtf/etil/mirai/MiraiConfig.java
+++ b/src/main/java/wtf/etil/mirai/MiraiConfig.java
@@ -153,4 +153,10 @@ public class MiraiConfig {
"Whether or not vanilla anticheat should check for passengers flying.");
}
+ public static boolean dontSendUselessEntityPackets;
+ private static void uselessEntityPackets() {
+ dontSendUselessEntityPackets = getBoolean("dont-send-useless-entity-packets", true,
+ "Whether or not server should send entity packets with null movements.");
+ }
+
}
\ No newline at end of file

View File

@@ -6,8 +6,25 @@ Subject: [PATCH] Alternative Keepalive Handling
Original code by PurpurMC, licensed under MIT Original code by PurpurMC, licensed under MIT
You can find the original code on https://github.com/PurpurMC/Purpur You can find the original code on https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
index 9379fd91df73ac482064a89462764dac9835c71f..432ba1293419dea0903e31043f68f5ad45ed0c2d 100644
--- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
@@ -159,4 +159,11 @@ public class MiraiConfig {
"Whether or not server should send entity packets with null movements.");
}
+ public static boolean useAlternateKeepAlive;
+ private static void alternateKeepAlive() {
+ useAlternateKeepAlive = getBoolean("use-alternate-keepalive", true,
+ "Whether or not server should use an alternative keepalive algorithm.",
+ "This can drastically reduce players timeouts due to a bad connection.");
+ }
+
}
\ No newline at end of file
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 ca245019669591a5468de2df6dedc3080b61282e..507cc0d0322bff3e2536629b89339982cdc8352f 100644 index 40d0d7bc43e8c1465088408efe7eeed845eeb9f7..3bd4fd4a0b197bde9b254ec8f264e396064bf583 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
@@ -260,6 +260,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -260,6 +260,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@@ -23,7 +40,7 @@ index ca245019669591a5468de2df6dedc3080b61282e..507cc0d0322bff3e2536629b89339982
long elapsedTime = currentTime - this.keepAliveTime; long elapsedTime = currentTime - this.keepAliveTime;
+ // Purpur start + // Purpur start
+ if (wtf.etil.mirai.MiraiConfig.useAlternateKeepAlive) { + if (dev.etil.mirai.MiraiConfig.useAlternateKeepAlive) {
+ if (elapsedTime >= 1000L) { // 1 second + if (elapsedTime >= 1000L) { // 1 second
+ if (!processedDisconnect && keepAlives.size() > KEEPALIVE_LIMIT) { + if (!processedDisconnect && keepAlives.size() > KEEPALIVE_LIMIT) {
+ LOGGER.warn("{} was kicked due to keepalive timeout!", player.getName()); + LOGGER.warn("{} was kicked due to keepalive timeout!", player.getName());
@@ -45,7 +62,7 @@ index ca245019669591a5468de2df6dedc3080b61282e..507cc0d0322bff3e2536629b89339982
@Override @Override
public void handleKeepAlive(ServerboundKeepAlivePacket packet) { public void handleKeepAlive(ServerboundKeepAlivePacket packet) {
+ // Purpur start + // Purpur start
+ if (wtf.etil.mirai.MiraiConfig.useAlternateKeepAlive) { + if (dev.etil.mirai.MiraiConfig.useAlternateKeepAlive) {
+ long id = packet.getId(); + long id = packet.getId();
+ if (keepAlives.size() > 0 && keepAlives.contains(id)) { + if (keepAlives.size() > 0 && keepAlives.contains(id)) {
+ int ping = (int) (Util.getMillis() - id); + int ping = (int) (Util.getMillis() - id);
@@ -57,20 +74,3 @@ index ca245019669591a5468de2df6dedc3080b61282e..507cc0d0322bff3e2536629b89339982
//PacketUtils.ensureRunningOnSameThread(packet, this, this.player.getLevel()); // CraftBukkit // Paper - This shouldn't be on the main thread //PacketUtils.ensureRunningOnSameThread(packet, this, this.player.getLevel()); // CraftBukkit // Paper - This shouldn't be on the main thread
if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) { if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) {
int i = (int) (Util.getMillis() - this.keepAliveTime); int i = (int) (Util.getMillis() - this.keepAliveTime);
diff --git a/src/main/java/wtf/etil/mirai/MiraiConfig.java b/src/main/java/wtf/etil/mirai/MiraiConfig.java
index 992ab312e6e2b8283ef8187bcbeeb35dd51858a1..ffbee643991ff36bb3a0b8de937fcf518c25a294 100644
--- a/src/main/java/wtf/etil/mirai/MiraiConfig.java
+++ b/src/main/java/wtf/etil/mirai/MiraiConfig.java
@@ -159,4 +159,11 @@ public class MiraiConfig {
"Whether or not server should send entity packets with null movements.");
}
+ public static boolean useAlternateKeepAlive;
+ private static void alternateKeepAlive() {
+ useAlternateKeepAlive = getBoolean("use-alternate-keepalive", true,
+ "Whether or not server should use an alternative keepalive algorithm.",
+ "This can drastically reduce players timeouts due to a bad connection.");
+ }
+
}
\ No newline at end of file

View File

@@ -6,75 +6,10 @@ Subject: [PATCH] Logger settings (suppressing pointless logs)
Original code by PurpurMC, licensed under MIT Original code by PurpurMC, licensed under MIT
You can find the original code on https://github.com/PurpurMC/Purpur You can find the original code on https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
index a0c19503aabab5378d672a30163d35a5ba05b6c1..90173d7c0e8fc41ecd70ffce81eaa624045eac70 100644 index 432ba1293419dea0903e31043f68f5ad45ed0c2d..15e0cf25afc0a57f70af63294e5933632b409630 100644
--- a/src/main/java/net/minecraft/server/PlayerAdvancements.java --- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java +++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
@@ -183,7 +183,7 @@ public class PlayerAdvancements {
if (advancement == null) {
// CraftBukkit start
if (entry.getKey().getNamespace().equals("minecraft")) {
- PlayerAdvancements.LOGGER.warn("Ignored advancement '{}' in progress file {} - it doesn't exist anymore?", entry.getKey(), this.file);
+ if (!wtf.etil.mirai.MiraiConfig.loggerSuppressIgnoredAdvancementWarnings) PlayerAdvancements.LOGGER.warn("Ignored advancement '{}' in progress file {} - it doesn't exist anymore?", entry.getKey(), this.file); // Purpur
}
// CraftBukkit end
} else {
diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
index 80c1e0e47818486a68e0114b063395290365346b..1194c501a82e0e84d961d4ccb62f0c6092db559e 100644
--- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java
+++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
@@ -295,7 +295,7 @@ public class WorldGenRegion implements WorldGenLevel {
return true;
} else {
// Paper start
- if (!hasSetFarWarned) {
+ if (!hasSetFarWarned && !wtf.etil.mirai.MiraiConfig.loggerSuppressSetBlockFarChunk) { // Purpur
Util.logAndPauseIfInIde("Detected setBlock in a far chunk [" + i + ", " + j + "], pos: " + pos + ", status: " + this.generatingStatus + (this.currentlyGenerating == null ? "" : ", currently generating: " + (String) this.currentlyGenerating.get()));
hasSetFarWarned = true;
if (this.getServer() != null && this.getServer().isDebugging()) {
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 507cc0d0322bff3e2536629b89339982cdc8352f..181922e26036fa07464b0a2ab6a66f2314d43ebd 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2627,7 +2627,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
if (playerchatmessage.hasExpiredServer(Instant.now())) {
- ServerGamePacketListenerImpl.LOGGER.warn("{} sent expired chat: '{}'. Is the client/server system time unsynchronized? c: {} s: {}", this.player.getName().getString(), playerchatmessage.signedContent().plain(), playerchatmessage.timeStamp().getEpochSecond(), Instant.now().getEpochSecond()); // Paper
+ if (!wtf.etil.mirai.MiraiConfig.loggerSuppressSentExpiredChat) ServerGamePacketListenerImpl.LOGGER.warn("{} sent expired chat: '{}'. Is the client/server system time unsynchronized? c: {} s: {}", this.player.getName().getString(), playerchatmessage.signedContent().plain(), playerchatmessage.timeStamp().getEpochSecond(), Instant.now().getEpochSecond()); // Paper // Purpur
}
return true;
diff --git a/src/main/java/net/minecraft/stats/ServerRecipeBook.java b/src/main/java/net/minecraft/stats/ServerRecipeBook.java
index d13ed3069e944d138442ea440ac3eaf8d44c18d3..1caa394029b712a76a9e5ed13a57c08752549fed 100644
--- a/src/main/java/net/minecraft/stats/ServerRecipeBook.java
+++ b/src/main/java/net/minecraft/stats/ServerRecipeBook.java
@@ -122,7 +122,7 @@ public class ServerRecipeBook extends RecipeBook {
Optional<? extends Recipe<?>> optional = recipeManager.byKey(minecraftkey);
if (!optional.isPresent()) {
- ServerRecipeBook.LOGGER.error("Tried to load unrecognized recipe: {} removed now.", minecraftkey);
+ if (!wtf.etil.mirai.MiraiConfig.loggerSuppressUnrecognizedRecipeErrors) ServerRecipeBook.LOGGER.error("Tried to load unrecognized recipe: {} removed now.", minecraftkey); // Purpur
} else {
handler.accept((Recipe) optional.get());
}
diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java
index b2a15c986c7500a0ce227a54cb61ec3f5378f6f3..9e71c0cba898bac4921c34040397132b3f2f3ccf 100644
--- a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java
+++ b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java
@@ -255,7 +255,7 @@ public final class CraftLegacy {
}
static {
- System.err.println("Initializing Legacy Material Support. Unless you have legacy plugins and/or data this is a bug!");
+ if (!wtf.etil.mirai.MiraiConfig.loggerSuppressInitLegacyMaterialError) System.err.println("Initializing Legacy Material Support. Unless you have legacy plugins and/or data this is a bug!"); // Purpur
if (MinecraftServer.getServer() != null && MinecraftServer.getServer().isDebugging()) {
new Exception().printStackTrace();
}
diff --git a/src/main/java/wtf/etil/mirai/MiraiConfig.java b/src/main/java/wtf/etil/mirai/MiraiConfig.java
index ffbee643991ff36bb3a0b8de937fcf518c25a294..047b2a9ab1eae5c6aa7a95800892aa76554555dd 100644
--- a/src/main/java/wtf/etil/mirai/MiraiConfig.java
+++ b/src/main/java/wtf/etil/mirai/MiraiConfig.java
@@ -166,4 +166,27 @@ public class MiraiConfig { @@ -166,4 +166,27 @@ public class MiraiConfig {
"This can drastically reduce players timeouts due to a bad connection."); "This can drastically reduce players timeouts due to a bad connection.");
} }
@@ -104,3 +39,68 @@ index ffbee643991ff36bb3a0b8de937fcf518c25a294..047b2a9ab1eae5c6aa7a95800892aa76
+ +
} }
\ No newline at end of file \ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java
index a0c19503aabab5378d672a30163d35a5ba05b6c1..b5d2e67fef5f9c7802ca6b2cf9b3f86c1aa1882d 100644
--- a/src/main/java/net/minecraft/server/PlayerAdvancements.java
+++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java
@@ -183,7 +183,7 @@ public class PlayerAdvancements {
if (advancement == null) {
// CraftBukkit start
if (entry.getKey().getNamespace().equals("minecraft")) {
- PlayerAdvancements.LOGGER.warn("Ignored advancement '{}' in progress file {} - it doesn't exist anymore?", entry.getKey(), this.file);
+ if (!dev.etil.mirai.MiraiConfig.loggerSuppressIgnoredAdvancementWarnings) PlayerAdvancements.LOGGER.warn("Ignored advancement '{}' in progress file {} - it doesn't exist anymore?", entry.getKey(), this.file); // Purpur
}
// CraftBukkit end
} else {
diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
index 80c1e0e47818486a68e0114b063395290365346b..91b273d058d2fe83207cc562a25711e4d621c862 100644
--- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java
+++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
@@ -295,7 +295,7 @@ public class WorldGenRegion implements WorldGenLevel {
return true;
} else {
// Paper start
- if (!hasSetFarWarned) {
+ if (!hasSetFarWarned && !dev.etil.mirai.MiraiConfig.loggerSuppressSetBlockFarChunk) { // Purpur
Util.logAndPauseIfInIde("Detected setBlock in a far chunk [" + i + ", " + j + "], pos: " + pos + ", status: " + this.generatingStatus + (this.currentlyGenerating == null ? "" : ", currently generating: " + (String) this.currentlyGenerating.get()));
hasSetFarWarned = true;
if (this.getServer() != null && this.getServer().isDebugging()) {
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 3bd4fd4a0b197bde9b254ec8f264e396064bf583..f2e61291dccffb76c73bd7d53eb2eb84307407c2 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2627,7 +2627,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
if (playerchatmessage.hasExpiredServer(Instant.now())) {
- ServerGamePacketListenerImpl.LOGGER.warn("{} sent expired chat: '{}'. Is the client/server system time unsynchronized? c: {} s: {}", this.player.getName().getString(), playerchatmessage.signedContent().plain(), playerchatmessage.timeStamp().getEpochSecond(), Instant.now().getEpochSecond()); // Paper
+ if (!dev.etil.mirai.MiraiConfig.loggerSuppressSentExpiredChat) ServerGamePacketListenerImpl.LOGGER.warn("{} sent expired chat: '{}'. Is the client/server system time unsynchronized? c: {} s: {}", this.player.getName().getString(), playerchatmessage.signedContent().plain(), playerchatmessage.timeStamp().getEpochSecond(), Instant.now().getEpochSecond()); // Paper // Purpur
}
return true;
diff --git a/src/main/java/net/minecraft/stats/ServerRecipeBook.java b/src/main/java/net/minecraft/stats/ServerRecipeBook.java
index d13ed3069e944d138442ea440ac3eaf8d44c18d3..ce0a08ac0d24f2ebf822837751ebb6d615ba7fe7 100644
--- a/src/main/java/net/minecraft/stats/ServerRecipeBook.java
+++ b/src/main/java/net/minecraft/stats/ServerRecipeBook.java
@@ -122,7 +122,7 @@ public class ServerRecipeBook extends RecipeBook {
Optional<? extends Recipe<?>> optional = recipeManager.byKey(minecraftkey);
if (!optional.isPresent()) {
- ServerRecipeBook.LOGGER.error("Tried to load unrecognized recipe: {} removed now.", minecraftkey);
+ if (!dev.etil.mirai.MiraiConfig.loggerSuppressUnrecognizedRecipeErrors) ServerRecipeBook.LOGGER.error("Tried to load unrecognized recipe: {} removed now.", minecraftkey); // Purpur
} else {
handler.accept((Recipe) optional.get());
}
diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java
index b2a15c986c7500a0ce227a54cb61ec3f5378f6f3..640aa6fabd89fb0691875b576d45bfc3681a3f21 100644
--- a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java
+++ b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java
@@ -255,7 +255,7 @@ public final class CraftLegacy {
}
static {
- System.err.println("Initializing Legacy Material Support. Unless you have legacy plugins and/or data this is a bug!");
+ if (!dev.etil.mirai.MiraiConfig.loggerSuppressInitLegacyMaterialError) System.err.println("Initializing Legacy Material Support. Unless you have legacy plugins and/or data this is a bug!"); // Purpur
if (MinecraftServer.getServer() != null && MinecraftServer.getServer().isDebugging()) {
new Exception().printStackTrace();
}

View File

@@ -6,42 +6,10 @@ Subject: [PATCH] Fix stuck in portals
Original code by PurpurMC, licensed under MIT Original code by PurpurMC, licensed under MIT
You can find the original code on https://github.com/PurpurMC/Purpur You can find the original code on https://github.com/PurpurMC/Purpur
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/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
index eb634c540842a06bfea196bc9fe4bfbd73012bf1..63e222d8a981a391b1dd01a8a10bb5df8099f922 100644 index 15e0cf25afc0a57f70af63294e5933632b409630..a907c023ec88011f2806a9c27bc27e129aa49980 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
@@ -1157,6 +1157,7 @@ public class ServerPlayer extends Player {
playerlist.sendPlayerPermissionLevel(this);
worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION);
this.unsetRemoved();
+ this.portalPos = net.minecraft.server.MCUtil.toBlockPosition(exit); // Purpur
// CraftBukkit end
this.setLevel(worldserver);
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index d96422f871c18303ce7ff7a182c685b0ddbfa04d..0d326cd7fd6a903474638d9279075e0ee8b272f0 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2875,12 +2875,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
return Vec3.directionFromRotation(this.getRotationVector());
}
+ public BlockPos portalPos = BlockPos.ZERO; // Purpur
public void handleInsidePortal(BlockPos pos) {
if (this.isOnPortalCooldown()) {
+ if (!(wtf.etil.mirai.MiraiConfig.playerFixStuckPortal && this instanceof Player && !pos.equals(portalPos))) // Purpur
this.setPortalCooldown();
} else {
if (!this.level.isClientSide && !pos.equals(this.portalEntrancePos)) {
this.portalEntrancePos = pos.immutable();
+ portalPos = BlockPos.ZERO; // Purpur
}
this.isInsidePortal = true;
diff --git a/src/main/java/wtf/etil/mirai/MiraiConfig.java b/src/main/java/wtf/etil/mirai/MiraiConfig.java
index 047b2a9ab1eae5c6aa7a95800892aa76554555dd..65db00dd6dc75af71a0d84e89529a0f55a730102 100644
--- a/src/main/java/wtf/etil/mirai/MiraiConfig.java
+++ b/src/main/java/wtf/etil/mirai/MiraiConfig.java
@@ -189,4 +189,11 @@ public class MiraiConfig { @@ -189,4 +189,11 @@ public class MiraiConfig {
"'{} sent expired chat: '{}'. Is the client/server system time unsynchronized?'"); "'{} sent expired chat: '{}'. Is the client/server system time unsynchronized?'");
} }
@@ -55,3 +23,35 @@ index 047b2a9ab1eae5c6aa7a95800892aa76554555dd..65db00dd6dc75af71a0d84e89529a0f5
+ +
} }
\ No newline at end of file \ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index eb634c540842a06bfea196bc9fe4bfbd73012bf1..63e222d8a981a391b1dd01a8a10bb5df8099f922 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1157,6 +1157,7 @@ public class ServerPlayer extends Player {
playerlist.sendPlayerPermissionLevel(this);
worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION);
this.unsetRemoved();
+ this.portalPos = net.minecraft.server.MCUtil.toBlockPosition(exit); // Purpur
// CraftBukkit end
this.setLevel(worldserver);
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index d96422f871c18303ce7ff7a182c685b0ddbfa04d..e144637e995ed0b4bd336e2c444e2b30e083dc09 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2875,12 +2875,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
return Vec3.directionFromRotation(this.getRotationVector());
}
+ public BlockPos portalPos = BlockPos.ZERO; // Purpur
public void handleInsidePortal(BlockPos pos) {
if (this.isOnPortalCooldown()) {
+ if (!(dev.etil.mirai.MiraiConfig.playerFixStuckPortal && this instanceof Player && !pos.equals(portalPos))) // Purpur
this.setPortalCooldown();
} else {
if (!this.level.isClientSide && !pos.equals(this.portalEntrancePos)) {
this.portalEntrancePos = pos.immutable();
+ portalPos = BlockPos.ZERO; // Purpur
}
this.isInsidePortal = true;

View File

@@ -6,32 +6,10 @@ Subject: [PATCH] Entities can use portals configuration
Original code by PurpurMC, licensed under MIT Original code by PurpurMC, licensed under MIT
You can find the original code on https://github.com/PurpurMC/Purpur You can find the original code on https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
index 0d326cd7fd6a903474638d9279075e0ee8b272f0..e46948c61c4f694c2224bed2bee695570d196ab9 100644 index a907c023ec88011f2806a9c27bc27e129aa49980..8e720820a94cf5d39e59998700932bfbb5c15544 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
@@ -2880,7 +2880,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
if (this.isOnPortalCooldown()) {
if (!(wtf.etil.mirai.MiraiConfig.playerFixStuckPortal && this instanceof Player && !pos.equals(portalPos))) // Purpur
this.setPortalCooldown();
- } else {
+ } else if (wtf.etil.mirai.MiraiConfig.entitiesCanUsePortals || this instanceof ServerPlayer) { // Purpur
if (!this.level.isClientSide && !pos.equals(this.portalEntrancePos)) {
this.portalEntrancePos = pos.immutable();
portalPos = BlockPos.ZERO; // Purpur
@@ -3553,7 +3553,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
public boolean canChangeDimensions() {
- return isAlive() && valid; // Paper
+ return isAlive() && valid && (wtf.etil.mirai.MiraiConfig.entitiesCanUsePortals || this instanceof ServerPlayer); // Paper // Purpur
}
public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) {
diff --git a/src/main/java/wtf/etil/mirai/MiraiConfig.java b/src/main/java/wtf/etil/mirai/MiraiConfig.java
index 65db00dd6dc75af71a0d84e89529a0f55a730102..54fc6d04f10ed8d5aa637c381854e0fa098b48b4 100644
--- a/src/main/java/wtf/etil/mirai/MiraiConfig.java
+++ b/src/main/java/wtf/etil/mirai/MiraiConfig.java
@@ -196,4 +196,10 @@ public class MiraiConfig { @@ -196,4 +196,10 @@ public class MiraiConfig {
"walking to another block in case they are stuck."); "walking to another block in case they are stuck.");
} }
@@ -44,3 +22,25 @@ index 65db00dd6dc75af71a0d84e89529a0f55a730102..54fc6d04f10ed8d5aa637c381854e0fa
+ +
} }
\ No newline at end of file \ No newline at end of file
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index e144637e995ed0b4bd336e2c444e2b30e083dc09..d13824eb725f32bdc01aa6d13436c2d1c3528fef 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2880,7 +2880,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
if (this.isOnPortalCooldown()) {
if (!(dev.etil.mirai.MiraiConfig.playerFixStuckPortal && this instanceof Player && !pos.equals(portalPos))) // Purpur
this.setPortalCooldown();
- } else {
+ } else if (dev.etil.mirai.MiraiConfig.entitiesCanUsePortals || this instanceof ServerPlayer) { // Purpur
if (!this.level.isClientSide && !pos.equals(this.portalEntrancePos)) {
this.portalEntrancePos = pos.immutable();
portalPos = BlockPos.ZERO; // Purpur
@@ -3553,7 +3553,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
public boolean canChangeDimensions() {
- return isAlive() && valid; // Paper
+ return isAlive() && valid && (dev.etil.mirai.MiraiConfig.entitiesCanUsePortals || this instanceof ServerPlayer); // Paper // Purpur
}
public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) {

View File

@@ -4,22 +4,10 @@ Date: Fri, 24 Jun 2022 20:10:19 +0200
Subject: [PATCH] Configurable enchantment table book animation tick Subject: [PATCH] Configurable enchantment table book animation tick
diff --git a/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
index 2341a5a249d455628165fc6ba508fc6d70c3dbfb..5a144c724eb6045909febf1fe32367179a3e04a3 100644 index 8e720820a94cf5d39e59998700932bfbb5c15544..929ccc5cf475a5b3d19e44d8d6b324e1d647b5d1 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java --- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java +++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
@@ -48,6 +48,7 @@ public class EnchantmentTableBlockEntity extends BlockEntity implements Nameable
}
public static void bookAnimationTick(Level world, BlockPos pos, BlockState state, EnchantmentTableBlockEntity blockEntity) {
+ if (!wtf.etil.mirai.MiraiConfig.bookAnimationTick) return; // Mirai - skip enchantment table book tick
blockEntity.oOpen = blockEntity.open;
blockEntity.oRot = blockEntity.rot;
Player player = world.getNearestPlayer((double)pos.getX() + 0.5D, (double)pos.getY() + 0.5D, (double)pos.getZ() + 0.5D, 3.0D, false);
diff --git a/src/main/java/wtf/etil/mirai/MiraiConfig.java b/src/main/java/wtf/etil/mirai/MiraiConfig.java
index 54fc6d04f10ed8d5aa637c381854e0fa098b48b4..13aab54df6d4e1a59063732852a02b8e67603591 100644
--- a/src/main/java/wtf/etil/mirai/MiraiConfig.java
+++ b/src/main/java/wtf/etil/mirai/MiraiConfig.java
@@ -202,4 +202,11 @@ public class MiraiConfig { @@ -202,4 +202,11 @@ public class MiraiConfig {
"Whether or not entities should be able to use portals."); "Whether or not entities should be able to use portals.");
} }
@@ -33,3 +21,15 @@ index 54fc6d04f10ed8d5aa637c381854e0fa098b48b4..13aab54df6d4e1a59063732852a02b8e
+ +
} }
\ No newline at end of file \ No newline at end of file
diff --git a/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java
index 2341a5a249d455628165fc6ba508fc6d70c3dbfb..20e224ea5dbd96fd0d12ea5a1143fe0702cd6e77 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java
@@ -48,6 +48,7 @@ public class EnchantmentTableBlockEntity extends BlockEntity implements Nameable
}
public static void bookAnimationTick(Level world, BlockPos pos, BlockState state, EnchantmentTableBlockEntity blockEntity) {
+ if (!dev.etil.mirai.MiraiConfig.bookAnimationTick) return; // Mirai - skip enchantment table book tick
blockEntity.oOpen = blockEntity.open;
blockEntity.oRot = blockEntity.rot;
Player player = world.getNearestPlayer((double)pos.getX() + 0.5D, (double)pos.getY() + 0.5D, (double)pos.getZ() + 0.5D, 3.0D, false);

View File

@@ -8,43 +8,10 @@ This patch adds toggles for three criterion triggers that are called every tick.
Original code by YatopiaMC, licensed under MIT Original code by YatopiaMC, licensed under MIT
You can find the original code on https://github.com/YatopiaMC/Yatopia You can find the original code on https://github.com/YatopiaMC/Yatopia
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/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
index 63e222d8a981a391b1dd01a8a10bb5df8099f922..66daae13483c3dfd84047ead2aa2cdade540f835 100644 index 929ccc5cf475a5b3d19e44d8d6b324e1d647b5d1..dde09a19916798afabe28902636a2ced642017a5 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
@@ -619,7 +619,7 @@ public class ServerPlayer extends Player {
@Override
protected void onInsideBlock(BlockState state) {
- CriteriaTriggers.ENTER_BLOCK.trigger(this, state);
+ if (wtf.etil.mirai.MiraiConfig.criterionTriggerEnterBlock) CriteriaTriggers.ENTER_BLOCK.trigger(this, state); // Mirai
}
@Override
@@ -665,7 +665,7 @@ public class ServerPlayer extends Player {
}
}
- CriteriaTriggers.TICK.trigger(this);
+ if (wtf.etil.mirai.MiraiConfig.criterionTriggerTick) CriteriaTriggers.TICK.trigger(this); // Mirai
if (this.levitationStartPos != null) {
CriteriaTriggers.LEVITATION.trigger(this, this.levitationStartPos, this.tickCount - this.levitationStartTime);
}
@@ -741,9 +741,7 @@ public class ServerPlayer extends Player {
this.connection.send(new ClientboundSetExperiencePacket(this.experienceProgress, this.totalExperience, this.experienceLevel));
}
- if (this.tickCount % 20 == 0) {
- CriteriaTriggers.LOCATION.trigger(this);
- }
+ if (wtf.etil.mirai.MiraiConfig.criterionTriggerLocation && this.tickCount % 20 == 0) CriteriaTriggers.LOCATION.trigger(this); // Mirai
// CraftBukkit start - initialize oldLevel, fire PlayerLevelChangeEvent, and tick client-sided world border
if (this.oldLevel == -1) {
diff --git a/src/main/java/wtf/etil/mirai/MiraiConfig.java b/src/main/java/wtf/etil/mirai/MiraiConfig.java
index 13aab54df6d4e1a59063732852a02b8e67603591..559d0fb9931ae8a7d14a43e13fe1fdf544915ecb 100644
--- a/src/main/java/wtf/etil/mirai/MiraiConfig.java
+++ b/src/main/java/wtf/etil/mirai/MiraiConfig.java
@@ -209,4 +209,16 @@ public class MiraiConfig { @@ -209,4 +209,16 @@ public class MiraiConfig {
"Disabling it can save MSPT, especially with quite a lot of enchantment tables."); "Disabling it can save MSPT, especially with quite a lot of enchantment tables.");
} }
@@ -63,3 +30,36 @@ index 13aab54df6d4e1a59063732852a02b8e67603591..559d0fb9931ae8a7d14a43e13fe1fdf5
+ +
} }
\ No newline at end of file \ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 63e222d8a981a391b1dd01a8a10bb5df8099f922..d83093e1d6c09d643242a5baa4a73eeb20cd72e0 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -619,7 +619,7 @@ public class ServerPlayer extends Player {
@Override
protected void onInsideBlock(BlockState state) {
- CriteriaTriggers.ENTER_BLOCK.trigger(this, state);
+ if (dev.etil.mirai.MiraiConfig.criterionTriggerEnterBlock) CriteriaTriggers.ENTER_BLOCK.trigger(this, state); // Mirai
}
@Override
@@ -665,7 +665,7 @@ public class ServerPlayer extends Player {
}
}
- CriteriaTriggers.TICK.trigger(this);
+ if (dev.etil.mirai.MiraiConfig.criterionTriggerTick) CriteriaTriggers.TICK.trigger(this); // Mirai
if (this.levitationStartPos != null) {
CriteriaTriggers.LEVITATION.trigger(this, this.levitationStartPos, this.tickCount - this.levitationStartTime);
}
@@ -741,9 +741,7 @@ public class ServerPlayer extends Player {
this.connection.send(new ClientboundSetExperiencePacket(this.experienceProgress, this.totalExperience, this.experienceLevel));
}
- if (this.tickCount % 20 == 0) {
- CriteriaTriggers.LOCATION.trigger(this);
- }
+ if (dev.etil.mirai.MiraiConfig.criterionTriggerLocation && this.tickCount % 20 == 0) CriteriaTriggers.LOCATION.trigger(this); // Mirai
// CraftBukkit start - initialize oldLevel, fire PlayerLevelChangeEvent, and tick client-sided world border
if (this.oldLevel == -1) {

View File

@@ -11,34 +11,10 @@ NFT-Worlds is related to Stellar devs, known for countless paid forks mostly tak
doing questionable/buggy ones, and claiming breathtaking performance improvements. Never ever pay for doing questionable/buggy ones, and claiming breathtaking performance improvements. Never ever pay for
any of those Spigot forks! any of those Spigot forks!
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
index 6e094f495dd4cdc13645b7593399ba14bfd2a81e..bbb555d367e5c8b59c43f9169ed43a10294f97c8 100644 index dde09a19916798afabe28902636a2ced642017a5..b9ab67acf30d20745111b9fe5c6ccf44dca3e006 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
@@ -1205,7 +1205,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
this.tryCheckInsideBlocks();
- float f2 = this.getBlockSpeedFactor();
+ // NFT-Worlds start
+ float f2;
+ if (wtf.etil.mirai.MiraiConfig.fastSpeedCheck) {
+ if (this.getDeltaMovement().x == 0 && this.getDeltaMovement().z == 0) {
+ f2 = 1;
+ } else {
+ f2 = this.getBlockSpeedFactor();
+ }
+ } else {
+ f2 = this.getBlockSpeedFactor();
+ }
+ // NFT-Worlds stop
this.setDeltaMovement(this.getDeltaMovement().multiply((double) f2, 1.0D, (double) f2));
// Paper start - remove expensive streams from here
diff --git a/src/main/java/wtf/etil/mirai/MiraiConfig.java b/src/main/java/wtf/etil/mirai/MiraiConfig.java
index 559d0fb9931ae8a7d14a43e13fe1fdf544915ecb..39b0c038ae053ef78c62691c73edecad94938fc7 100644
--- a/src/main/java/wtf/etil/mirai/MiraiConfig.java
+++ b/src/main/java/wtf/etil/mirai/MiraiConfig.java
@@ -221,4 +221,11 @@ public class MiraiConfig { @@ -221,4 +221,11 @@ public class MiraiConfig {
"Whether or not server should listen to location triggers."); "Whether or not server should listen to location triggers.");
} }
@@ -52,3 +28,27 @@ index 559d0fb9931ae8a7d14a43e13fe1fdf544915ecb..39b0c038ae053ef78c62691c73edecad
+ +
} }
\ No newline at end of file \ No newline at end of file
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 8e88ae24d7e3299d7250a2021cb3604c045eaac9..d2bffae52474883488a05534273dff9450a1634c 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1205,7 +1205,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
this.tryCheckInsideBlocks();
- float f2 = this.getBlockSpeedFactor();
+ // NFT-Worlds start
+ float f2;
+ if (dev.etil.mirai.MiraiConfig.fastSpeedCheck) {
+ if (this.getDeltaMovement().x == 0 && this.getDeltaMovement().z == 0) {
+ f2 = 1;
+ } else {
+ f2 = this.getBlockSpeedFactor();
+ }
+ } else {
+ f2 = this.getBlockSpeedFactor();
+ }
+ // NFT-Worlds stop
this.setDeltaMovement(this.getDeltaMovement().multiply((double) f2, 1.0D, (double) f2));
// Paper start - remove expensive streams from here

View File

@@ -10,7 +10,7 @@ Copyright (c) 2020 Fx Morin
diff --git a/src/main/java/carpetfixes/helpers/FastMath.java b/src/main/java/carpetfixes/helpers/FastMath.java diff --git a/src/main/java/carpetfixes/helpers/FastMath.java b/src/main/java/carpetfixes/helpers/FastMath.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..2f48a1c71356f7ebc00aaa44b28f6e10b2de1dee index 0000000000000000000000000000000000000000..e9d6256ab8bfd2d4147063235d6ab1de71da93a8
--- /dev/null --- /dev/null
+++ b/src/main/java/carpetfixes/helpers/FastMath.java +++ b/src/main/java/carpetfixes/helpers/FastMath.java
@@ -0,0 +1,59 @@ @@ -0,0 +1,59 @@
@@ -26,7 +26,7 @@ index 0000000000000000000000000000000000000000..2f48a1c71356f7ebc00aaa44b28f6e10
+ * ~1.25x faster than {@link Math#round(float)} + * ~1.25x faster than {@link Math#round(float)}
+ */ + */
+ public static int round(float a) { + public static int round(float a) {
+ if (wtf.etil.mirai.MiraiConfig.optimizedRound) return a > 0F ? (int)(a + .5F) : (int)(a - .5F); + if (dev.etil.mirai.MiraiConfig.optimizedRound) return a > 0F ? (int)(a + .5F) : (int)(a - .5F);
+ return Math.round(a); + return Math.round(a);
+ } + }
+ +
@@ -35,7 +35,7 @@ index 0000000000000000000000000000000000000000..2f48a1c71356f7ebc00aaa44b28f6e10
+ * ~1.28x faster than {@link Math#round(double)} + * ~1.28x faster than {@link Math#round(double)}
+ */ + */
+ public static long round(double a) { + public static long round(double a) {
+ if (wtf.etil.mirai.MiraiConfig.optimizedRound) return a > 0D ? (long)(a + .5D) : (long)(a - .5D); + if (dev.etil.mirai.MiraiConfig.optimizedRound) return a > 0D ? (long)(a + .5D) : (long)(a - .5D);
+ return Math.round(a); + return Math.round(a);
+ } + }
+ +
@@ -99,6 +99,25 @@ index c3e54da4ab6440811aab2f9dd1e218802ac13285..db1319c51a5410ee106d023fce759f1e
used, getTime(m.x))); used, getTime(m.x)));
} }
} }
diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
index b9ab67acf30d20745111b9fe5c6ccf44dca3e006..3719d421ea6a959a6bae512cf9860085c0679c27 100644
--- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
@@ -228,4 +228,13 @@ public class MiraiConfig {
"to check when entity delta movement is null.");
}
+ public static boolean optimizedRound;
+ public static boolean optimizedHypot;
+ private static void fastMath() {
+ optimizedRound = getBoolean("optimize-math-round", true,
+ "Whether or not Math.round should be replaced by a faster version.");
+ optimizedHypot = getBoolean("optimize-math-hypot", true,
+ "Whether or not Math.hypot should be replaced by a faster version.");
+ }
+
}
\ No newline at end of file
diff --git a/src/main/java/gg/pufferfish/pufferfish/flare/collectors/TPSCollector.java b/src/main/java/gg/pufferfish/pufferfish/flare/collectors/TPSCollector.java diff --git a/src/main/java/gg/pufferfish/pufferfish/flare/collectors/TPSCollector.java b/src/main/java/gg/pufferfish/pufferfish/flare/collectors/TPSCollector.java
index 40447d00aefb5ffedb8a2ee87155a04088f0649f..633a6e313174244cf13ed89b53893ea5900e2828 100644 index 40447d00aefb5ffedb8a2ee87155a04088f0649f..633a6e313174244cf13ed89b53893ea5900e2828 100644
--- a/src/main/java/gg/pufferfish/pufferfish/flare/collectors/TPSCollector.java --- a/src/main/java/gg/pufferfish/pufferfish/flare/collectors/TPSCollector.java
@@ -190,14 +209,14 @@ index 88f10d729aa1e0a01790521821d691a0ecd373a2..45b2aa542969798a5a3b73af78de21cc
// Paper end // Paper end
} }
diff --git a/src/main/java/net/minecraft/util/Mth.java b/src/main/java/net/minecraft/util/Mth.java diff --git a/src/main/java/net/minecraft/util/Mth.java b/src/main/java/net/minecraft/util/Mth.java
index ec587cf6592a1dc0d90d6f54af1bdfab97aec7c6..41fe8bbdf9235ce79bffe6b2fe1339f79f34822f 100644 index ec587cf6592a1dc0d90d6f54af1bdfab97aec7c6..497497058500a9a1a1e530149fbed8a8e15acb5a 100644
--- a/src/main/java/net/minecraft/util/Mth.java --- a/src/main/java/net/minecraft/util/Mth.java
+++ b/src/main/java/net/minecraft/util/Mth.java +++ b/src/main/java/net/minecraft/util/Mth.java
@@ -792,6 +792,7 @@ public class Mth { @@ -792,6 +792,7 @@ public class Mth {
} }
public static double length(double a, double b) { public static double length(double a, double b) {
+ if (wtf.etil.mirai.MiraiConfig.optimizedHypot) return carpetfixes.helpers.FastMath.hypot(a, b); // Mirai + if (dev.etil.mirai.MiraiConfig.optimizedHypot) return carpetfixes.helpers.FastMath.hypot(a, b); // Mirai
return Math.sqrt(lengthSquared(a, b)); return Math.sqrt(lengthSquared(a, b));
} }
@@ -517,22 +536,3 @@ index 0ecac76577eb440a0c3104ef4603acec826c474d..26ff7f68dacad945095d794c1def4752
} }
// Yatopia start - Last tick time API // Yatopia start - Last tick time API
diff --git a/src/main/java/wtf/etil/mirai/MiraiConfig.java b/src/main/java/wtf/etil/mirai/MiraiConfig.java
index 39b0c038ae053ef78c62691c73edecad94938fc7..110757bfec231278e7b5d0f22ede20f04cdbb913 100644
--- a/src/main/java/wtf/etil/mirai/MiraiConfig.java
+++ b/src/main/java/wtf/etil/mirai/MiraiConfig.java
@@ -228,4 +228,13 @@ public class MiraiConfig {
"to check when entity delta movement is null.");
}
+ public static boolean optimizedRound;
+ public static boolean optimizedHypot;
+ private static void fastMath() {
+ optimizedRound = getBoolean("optimize-math-round", true,
+ "Whether or not Math.round should be replaced by a faster version.");
+ optimizedHypot = getBoolean("optimize-math-hypot", true,
+ "Whether or not Math.hypot should be replaced by a faster version.");
+ }
+
}
\ No newline at end of file

View File

@@ -4,32 +4,50 @@ Date: Tue, 2 Aug 2022 14:48:12 +0200
Subject: [PATCH] Configurable chat message signatures Subject: [PATCH] Configurable chat message signatures
diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
index 3719d421ea6a959a6bae512cf9860085c0679c27..40755fa049ab889f31f626cd04eca4799197de13 100644
--- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
@@ -237,4 +237,12 @@ public class MiraiConfig {
"Whether or not Math.hypot should be replaced by a faster version.");
}
+ public static boolean chatMessageSignatures;
+ private static void chatreport() {
+ chatMessageSignatures = getBoolean("disable-chat-reports", false,
+ "Whether or not players should be able to report chat messages.",
+ "It also disables the popup when joining a server without",
+ "'secure chat', such as offline-mode servers.");
+ }
+
}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java b/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java diff --git a/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java b/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
index 11183b4a39b9897e1b1067eb2a3556d2b1d90f52..d08127b516fbae1a5500a9d3f0df02a437b0d250 100644 index 11183b4a39b9897e1b1067eb2a3556d2b1d90f52..df109dd1b2d252f82096d02e57596fdd4076771f 100644
--- a/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java --- a/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
+++ b/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java +++ b/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
@@ -78,6 +78,7 @@ public class ServerStatus { @@ -78,6 +78,7 @@ public class ServerStatus {
} }
public boolean enforcesSecureChat() { public boolean enforcesSecureChat() {
+ if (wtf.etil.mirai.MiraiConfig.chatMessageSignatures) return true; // Mirai - configurable chat message signatures + if (dev.etil.mirai.MiraiConfig.chatMessageSignatures) return true; // Mirai - configurable chat message signatures
return this.enforcesSecureChat; return this.enforcesSecureChat;
} }
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 7cce3a758a0b19956572135162d88e92e4412018..6fd98bfba759af0f21d5225664757c023a9e4f6c 100644 index 54a53a65130919b68f9cd8fd2d580fd8b9d2dfb3..7d7d88d2f920446a98c63229a351dc0dc07d454b 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -646,6 +646,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -646,6 +646,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@Override @Override
public boolean enforceSecureProfile() { public boolean enforceSecureProfile() {
+ if (wtf.etil.mirai.MiraiConfig.chatMessageSignatures) return false; // Mirai - configurable chat message signatures + if (dev.etil.mirai.MiraiConfig.chatMessageSignatures) return false; // Mirai - configurable chat message signatures
return this.getProperties().enforceSecureProfile && this.getProperties().onlineMode; return this.getProperties().enforceSecureProfile && this.getProperties().onlineMode;
} }
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 181922e26036fa07464b0a2ab6a66f2314d43ebd..deb87d0012e858b556e9a72bc0a9c644d46ccf60 100644 index f2e61291dccffb76c73bd7d53eb2eb84307407c2..c1f40592ee346e610d018542a65a79f2c9f5e8bd 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
@@ -2165,10 +2165,34 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -2165,10 +2165,34 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@@ -37,7 +55,7 @@ index 181922e26036fa07464b0a2ab6a66f2314d43ebd..deb87d0012e858b556e9a72bc0a9c644
@Override @Override
public void send(Packet<?> packet) { public void send(Packet<?> packet) {
+ // Mirai start - configurable chat message signatures + // Mirai start - configurable chat message signatures
+ if (wtf.etil.mirai.MiraiConfig.chatMessageSignatures) { + if (dev.etil.mirai.MiraiConfig.chatMessageSignatures) {
+ if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatHeaderPacket) { + if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatHeaderPacket) {
+ return; + return;
+ } else if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatPacket chat) { + } else if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatPacket chat) {
@@ -55,7 +73,7 @@ index 181922e26036fa07464b0a2ab6a66f2314d43ebd..deb87d0012e858b556e9a72bc0a9c644
public void send(Packet<?> packet, @Nullable PacketSendListener callbacks) { public void send(Packet<?> packet, @Nullable PacketSendListener callbacks) {
+ // Mirai start - configurable chat message signatures + // Mirai start - configurable chat message signatures
+ if (wtf.etil.mirai.MiraiConfig.chatMessageSignatures) { + if (dev.etil.mirai.MiraiConfig.chatMessageSignatures) {
+ if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatHeaderPacket) { + if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatHeaderPacket) {
+ return; + return;
+ } else if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatPacket chat && callbacks != null) { + } else if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatPacket chat && callbacks != null) {
@@ -68,44 +86,26 @@ index 181922e26036fa07464b0a2ab6a66f2314d43ebd..deb87d0012e858b556e9a72bc0a9c644
if (packet == null || this.processedDisconnect) { // Spigot if (packet == null || this.processedDisconnect) { // Spigot
return; return;
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 b4158aed45ec60be71251d5b90e340f790e239fb..631cb49918cb0eef97407ffc95a0b001ecd31a62 100644 index e5d8d85bfa84c52208dbf4efa1579286d2b22e75..1b0e26afd4cbc8daec655513fe78933abb4a2151 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
@@ -1489,6 +1489,7 @@ public abstract class PlayerList { @@ -1489,6 +1489,7 @@ public abstract class PlayerList {
} }
public boolean verifyChatTrusted(PlayerChatMessage message, ChatSender profile) { // Paper - private -> public public boolean verifyChatTrusted(PlayerChatMessage message, ChatSender profile) { // Paper - private -> public
+ if (wtf.etil.mirai.MiraiConfig.chatMessageSignatures) return true; // Mirai - configurable chat message signatures + if (dev.etil.mirai.MiraiConfig.chatMessageSignatures) return true; // Mirai - configurable chat message signatures
return !message.hasExpiredServer(Instant.now()) && message.verify(profile); return !message.hasExpiredServer(Instant.now()) && message.verify(profile);
} }
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
index 18c4f2eeb6bb427c1314608fc6a81e4642d92888..b029ae19db2bfde9b08950f41ba8a09e8e4091a0 100644 index 18c4f2eeb6bb427c1314608fc6a81e4642d92888..d9ea767bac44e47d5e580d2264cbdb4c8edb4fff 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java --- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -1516,6 +1516,7 @@ public abstract class Player extends LivingEntity { @@ -1516,6 +1516,7 @@ public abstract class Player extends LivingEntity {
@Nullable @Nullable
public ProfilePublicKey getProfilePublicKey() { public ProfilePublicKey getProfilePublicKey() {
+ if (wtf.etil.mirai.MiraiConfig.chatMessageSignatures) return null; // Mirai - configurable chat message signatures + if (dev.etil.mirai.MiraiConfig.chatMessageSignatures) return null; // Mirai - configurable chat message signatures
return this.profilePublicKey; return this.profilePublicKey;
} }
diff --git a/src/main/java/wtf/etil/mirai/MiraiConfig.java b/src/main/java/wtf/etil/mirai/MiraiConfig.java
index 110757bfec231278e7b5d0f22ede20f04cdbb913..57df9a7d26855ca205190584f61fc8026d98225c 100644
--- a/src/main/java/wtf/etil/mirai/MiraiConfig.java
+++ b/src/main/java/wtf/etil/mirai/MiraiConfig.java
@@ -237,4 +237,12 @@ public class MiraiConfig {
"Whether or not Math.hypot should be replaced by a faster version.");
}
+ public static boolean chatMessageSignatures;
+ private static void chatreport() {
+ chatMessageSignatures = getBoolean("disable-chat-reports", false,
+ "Whether or not players should be able to report chat messages.",
+ "It also disables the popup when joining a server without",
+ "'secure chat', such as offline-mode servers.");
+ }
+
}
\ No newline at end of file

View File

@@ -6,8 +6,25 @@ Subject: [PATCH] Lobotomize stuck villagers
Original license: MIT Original license: MIT
Original project: https://github.com/PurpurMC/Purpur Original project: https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
index 40755fa049ab889f31f626cd04eca4799197de13..3cd738e0f8bd1fdb2ec5203f8f73daad1e230205 100644
--- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
@@ -245,4 +245,11 @@ public class MiraiConfig {
"'secure chat', such as offline-mode servers.");
}
+ public static boolean villagerLobotomizeEnabled;
+ private static void lobotomizing() {
+ villagerLobotomizeEnabled = getBoolean("villager-lobotomize", false,
+ "Whether or not villagers should be lobotomized when",
+ "standing on a 1x1 block while being stuck.");
+ }
+
}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
index 93077e8c6b5a35adc6febb749d1d08be172402f1..839e6a8819dfbfe8c54e116b5f5b23ded94e7ca1 100644 index 93077e8c6b5a35adc6febb749d1d08be172402f1..e9c36f92bec3a54653db1fd9327467a20b577765 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -139,6 +139,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -139,6 +139,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -24,7 +41,7 @@ index 93077e8c6b5a35adc6febb749d1d08be172402f1..839e6a8819dfbfe8c54e116b5f5b23de
protected void mobTick(boolean inactive) { protected void mobTick(boolean inactive) {
this.level.getProfiler().push("villagerBrain"); this.level.getProfiler().push("villagerBrain");
+ // Purpur start + // Purpur start
+ if (wtf.etil.mirai.MiraiConfig.villagerLobotomizeEnabled) { + if (dev.etil.mirai.MiraiConfig.villagerLobotomizeEnabled) {
+ // treat as inactive if lobotomized + // treat as inactive if lobotomized
+ inactive = inactive || checkLobotomized(); + inactive = inactive || checkLobotomized();
+ } else { + } else {
@@ -111,20 +128,3 @@ index f0b910df1ee471b4d72d97c6197ab14f2854976e..6ce32a52d621a0c2629568ea07e445f5
+ } + }
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/wtf/etil/mirai/MiraiConfig.java b/src/main/java/wtf/etil/mirai/MiraiConfig.java
index 57df9a7d26855ca205190584f61fc8026d98225c..156f5c1f28e36ca69b0ef5c15550d004b0ef69a4 100644
--- a/src/main/java/wtf/etil/mirai/MiraiConfig.java
+++ b/src/main/java/wtf/etil/mirai/MiraiConfig.java
@@ -245,4 +245,11 @@ public class MiraiConfig {
"'secure chat', such as offline-mode servers.");
}
+ public static boolean villagerLobotomizeEnabled;
+ private static void lobotomizing() {
+ villagerLobotomizeEnabled = getBoolean("villager-lobotomize", false,
+ "Whether or not villagers should be lobotomized when",
+ "standing on a 1x1 block while being stuck.");
+ }
+
}
\ No newline at end of file

View File

@@ -4,48 +4,10 @@ Date: Wed, 31 Aug 2022 11:19:23 +0200
Subject: [PATCH] Configurable mobs from spawners picking up loot Subject: [PATCH] Configurable mobs from spawners picking up loot
diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
index b8abee145fc92faddef98da913eca7715b6bfc03..512476fd32055e4eab0d780cc0da19d6f9885fda 100644 index 3cd738e0f8bd1fdb2ec5203f8f73daad1e230205..24e2c81fe0de5eb2e9a17554d81cfd14a36f90c4 100644
--- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java --- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
@@ -156,7 +156,13 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
this.populateDefaultEquipmentSlots(randomsource, difficulty);
this.populateDefaultEquipmentEnchantments(randomsource, difficulty);
this.reassessWeaponGoal();
- this.setCanPickUpLoot(this.level.paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.skeletons || randomsource.nextFloat() < 0.55F * difficulty.getSpecialMultiplier()); // Paper
+ // Mirai start
+ if (wtf.etil.mirai.MiraiConfig.skeletonPickupLoot && spawnReason == MobSpawnType.SPAWNER) {
+ this.setCanPickUpLoot(false);
+ } else {
+ this.setCanPickUpLoot(this.level.paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.skeletons || randomsource.nextFloat() < 0.55F * difficulty.getSpecialMultiplier()); // Paper
+ }
+ // Mirai end
if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) {
LocalDate localdate = LocalDate.now();
int i = localdate.get(ChronoField.DAY_OF_MONTH);
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
index 97b3082dc020043fa38d9e5e4591102f97519ed3..a9756c298348a0f1551841540bbe826732ae386a 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -514,7 +514,13 @@ public class Zombie extends Monster {
Object object = super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt);
float f = difficulty.getSpecialMultiplier();
- this.setCanPickUpLoot(this.level.paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.zombies || randomsource.nextFloat() < 0.55F * f); // Paper
+ // Mirai start
+ if (wtf.etil.mirai.MiraiConfig.zombiePickupLoot && spawnReason == MobSpawnType.SPAWNER) {
+ this.setCanPickUpLoot(false);
+ } else {
+ this.setCanPickUpLoot(this.level.paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.zombies || randomsource.nextFloat() < 0.55F * f); // Paper
+ }
+ // Mirai end
if (object == null) {
object = new Zombie.ZombieGroupData(Zombie.getSpawnAsBabyOdds(randomsource), true);
}
diff --git a/src/main/java/wtf/etil/mirai/MiraiConfig.java b/src/main/java/wtf/etil/mirai/MiraiConfig.java
index 156f5c1f28e36ca69b0ef5c15550d004b0ef69a4..56e36c0468d38a344d18f7f57bd1d014e68ff308 100644
--- a/src/main/java/wtf/etil/mirai/MiraiConfig.java
+++ b/src/main/java/wtf/etil/mirai/MiraiConfig.java
@@ -252,4 +252,15 @@ public class MiraiConfig { @@ -252,4 +252,15 @@ public class MiraiConfig {
"standing on a 1x1 block while being stuck."); "standing on a 1x1 block while being stuck.");
} }
@@ -63,3 +25,41 @@ index 156f5c1f28e36ca69b0ef5c15550d004b0ef69a4..56e36c0468d38a344d18f7f57bd1d014
+ +
} }
\ No newline at end of file \ No newline at end of file
diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
index b8abee145fc92faddef98da913eca7715b6bfc03..4f6d0ffb03a6490494327e9cc0cdf5f079075537 100644
--- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
+++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
@@ -156,7 +156,13 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
this.populateDefaultEquipmentSlots(randomsource, difficulty);
this.populateDefaultEquipmentEnchantments(randomsource, difficulty);
this.reassessWeaponGoal();
- this.setCanPickUpLoot(this.level.paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.skeletons || randomsource.nextFloat() < 0.55F * difficulty.getSpecialMultiplier()); // Paper
+ // Mirai start
+ if (dev.etil.mirai.MiraiConfig.skeletonPickupLoot && spawnReason == MobSpawnType.SPAWNER) {
+ this.setCanPickUpLoot(false);
+ } else {
+ this.setCanPickUpLoot(this.level.paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.skeletons || randomsource.nextFloat() < 0.55F * difficulty.getSpecialMultiplier()); // Paper
+ }
+ // Mirai end
if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) {
LocalDate localdate = LocalDate.now();
int i = localdate.get(ChronoField.DAY_OF_MONTH);
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
index 97b3082dc020043fa38d9e5e4591102f97519ed3..7b74e2aade9a0b5fb41c48ee6affcb7a3d544ad8 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -514,7 +514,13 @@ public class Zombie extends Monster {
Object object = super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt);
float f = difficulty.getSpecialMultiplier();
- this.setCanPickUpLoot(this.level.paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.zombies || randomsource.nextFloat() < 0.55F * f); // Paper
+ // Mirai start
+ if (dev.etil.mirai.MiraiConfig.zombiePickupLoot && spawnReason == MobSpawnType.SPAWNER) {
+ this.setCanPickUpLoot(false);
+ } else {
+ this.setCanPickUpLoot(this.level.paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.zombies || randomsource.nextFloat() < 0.55F * f); // Paper
+ }
+ // Mirai end
if (object == null) {
object = new Zombie.ZombieGroupData(Zombie.getSpawnAsBabyOdds(randomsource), true);
}

File diff suppressed because it is too large Load Diff