Skip to content

Commit

Permalink
rewrite Foldenor command and more patches
Browse files Browse the repository at this point in the history
  • Loading branch information
AltronMaxX committed Aug 13, 2024
1 parent ebad941 commit e9ae70e
Show file tree
Hide file tree
Showing 9 changed files with 1,060 additions and 152 deletions.
193 changes: 56 additions & 137 deletions patches/server/0008-Add-Foldenor-commands.patch
Original file line number Diff line number Diff line change
Expand Up @@ -4,168 +4,87 @@ Date: Wed, 31 Jul 2024 14:55:42 +0400
Subject: [PATCH] Add-Foldenor-commands


diff --git a/src/main/java/net/edenor/foldenor/command/FoldenorCommands.java b/src/main/java/net/edenor/foldenor/command/FoldenorCommands.java
diff --git a/src/main/java/net/edenor/foldenor/commands/FoldenorCommand.java b/src/main/java/net/edenor/foldenor/commands/FoldenorCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..0a31c1c7ae98ceca60e8e57a56298e36650b9e68
index 0000000000000000000000000000000000000000..a4bbdbb119c9e9c15265cd06831ee7a0c1f54622
--- /dev/null
+++ b/src/main/java/net/edenor/foldenor/command/FoldenorCommands.java
@@ -0,0 +1,28 @@
+package net.edenor.foldenor.command;
+
+import net.edenor.foldenor.commands.ChunkTPCommand;
+import net.edenor.foldenor.commands.FoldenorReloadConfigCommand;
+import net.minecraft.server.MinecraftServer;
+import org.bukkit.command.Command;
+import org.checkerframework.checker.nullness.qual.NonNull;
+import org.checkerframework.framework.qual.DefaultQualifier;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@DefaultQualifier(NonNull.class)
+public final class FoldenorCommands {
+
+ private FoldenorCommands() {
+ }
+
+ private static final Map<String, Command> COMMANDS = new HashMap<>();
+ static {
+ COMMANDS.put("foldenor-reload", new FoldenorReloadConfigCommand("foldenor-reload"));
+ COMMANDS.put("chunktp", new ChunkTPCommand("chunktp"));
+ }
+
+ public static void registerCommands(final MinecraftServer server) {
+ COMMANDS.forEach((s, command) -> server.server.getCommandMap().register(s, "Foldenor", command));
+ }
+}
diff --git a/src/main/java/net/edenor/foldenor/commands/ChunkTPCommand.java b/src/main/java/net/edenor/foldenor/commands/ChunkTPCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..f343f7921361c4ddb58db4b0f02de978b21dbdb4
--- /dev/null
+++ b/src/main/java/net/edenor/foldenor/commands/ChunkTPCommand.java
@@ -0,0 +1,58 @@
+++ b/src/main/java/net/edenor/foldenor/commands/FoldenorCommand.java
@@ -0,0 +1,66 @@
+package net.edenor.foldenor.commands;
+
+
+import org.bukkit.Bukkit;
+import org.bukkit.Location;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
+import org.bukkit.craftbukkit.entity.CraftPlayer;
+import org.bukkit.event.player.PlayerTeleportEvent;
+import org.bukkit.permissions.Permission;
+import org.bukkit.permissions.PermissionDefault;
+import org.bukkit.plugin.PluginManager;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.ArrayList;
+import java.io.File;
+import java.util.Collections;
+import java.util.List;
+
+public class ChunkTPCommand extends Command {
+ public ChunkTPCommand(@NotNull String name) {
+ super(name);
+ this.setPermission("bukkit.command.foldenor.chunktp");
+ this.description = "Teleport to chunk";
+ this.usageMessage = "/chunktp [chunkX] [chunkZ]";
+ }
+
+ @Override
+ public boolean execute(@NotNull CommandSender sender, @NotNull String commandLabel, @NotNull String[] args) {
+ if (!testPermission(sender)) return true;
+
+ if (sender instanceof CraftPlayer player) {
+ if (args.length == 2) {
+ if (this.validateArguments(args[0], args[1])) {
+ double x = Integer.parseInt(args[0]) * 16;
+ double z = Integer.parseInt(args[1]) * 16;
+ if (player.teleport(new Location(player.getWorld(), x, 100.0D, z), PlayerTeleportEvent.TeleportCause.PLUGIN)) {
+ player.sendMessage("You were teleported to: " + x + " , 100, " + z);
+ } else {
+ player.sendMessage("You couldn't be teleported there for some reason.");
+ }
+ }
+ } else {
+ player.sendMessage("You must specify chunk coordinates. Example: /chunktp -230 334");
+ }
+ }
+
+ return true;
+ }
+
+ private boolean validateArguments(String string, String string2) {
+ try {
+ Integer.parseInt(string);
+ Integer.parseInt(string2);
+ return true;
+ } catch (NumberFormatException var4) {
+ return false;
+ }
+ }
+}
diff --git a/src/main/java/net/edenor/foldenor/commands/FoldenorReloadConfigCommand.java b/src/main/java/net/edenor/foldenor/commands/FoldenorReloadConfigCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..4188e8db6386fe1790192c9efd8c2fe256ce6418
--- /dev/null
+++ b/src/main/java/net/edenor/foldenor/commands/FoldenorReloadConfigCommand.java
@@ -0,0 +1,49 @@
+package net.edenor.foldenor.commands;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import net.edenor.foldenor.config.FoldenorConfig;
+import net.minecraft.server.dedicated.DedicatedServer;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.format.TextColor;
+import net.kyori.adventure.text.format.TextDecoration;
+import net.minecraft.server.MinecraftServer;
+import org.bukkit.Bukkit;
+import org.bukkit.Location;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
+import org.bukkit.permissions.Permission;
+import org.bukkit.permissions.PermissionDefault;
+import org.bukkit.plugin.PluginManager;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+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.RED;
+public class FoldenorCommand extends Command {
+
+public class FoldenorReloadConfigCommand extends Command {
+ public static void init() {
+ MinecraftServer.getServer().server.getCommandMap().register("foldenor", "Foldenor", new FoldenorCommand());
+ }
+
+ public FoldenorReloadConfigCommand(@NotNull String name) {
+ super(name);
+ this.setPermission("bukkit.command.foldenor.reload_config");
+ this.description = "Reload Foldenor config";
+ this.usageMessage = "/foldenor-reload";
+ protected FoldenorCommand() {
+ super("foldenor");
+ this.description = "Foldenor related commands";
+ this.usageMessage = "/foldenor [reload | version]";
+ this.setPermission("bukkit.command.foldenor");
+ }
+
+ @Override
+ public @NotNull List<String> tabComplete(CommandSender sender, String alias, String[] args, Location location) throws IllegalArgumentException {
+ public @NotNull List<String> tabComplete(@NotNull CommandSender sender, @NotNull String alias, String[] args, Location location) throws IllegalArgumentException {
+ if (args.length == 1) {
+ return Stream.of("reload", "version")
+ .filter(arg -> arg.startsWith(args[0].toLowerCase()))
+ .collect(Collectors.toList());
+ }
+ return Collections.emptyList();
+ }
+
+ @Override
+ public boolean execute(@NotNull CommandSender sender, @NotNull String commandLabel, @NotNull String[] args) {
+ if (!testPermission(sender)) return true;
+ Component prefix = Component.text("Foldenor » ", TextColor.fromHexString("#12fff6"), TextDecoration.BOLD);
+
+ if (args.length != 1) {
+ sender.sendMessage(prefix.append(Component.text("Usage: " + usageMessage).color(TextColor.fromHexString("#e8f9f9"))));
+ args = new String[]{"version"};
+ }
+
+ try {
+ FoldenorConfig.reload((java.io.File) DedicatedServer.getServer().options.valueOf("foldenor-settings"));
+ Command.broadcastCommandMessage(sender, text("Foldenor config reload complete.", GREEN));
+ return true;
+ } catch (Exception e) {
+ Command.broadcastCommandMessage(sender, text("Error while reloading Foldenor config \n." + e.toString(), RED));
+ throw new RuntimeException(e);
+ if (args[0].equalsIgnoreCase("reload")) {
+ MinecraftServer console = MinecraftServer.getServer();
+ FoldenorConfig.init(new File("foldenor.yml"));
+ console.server.reloadCount++;
+
+ Command.broadcastCommandMessage(sender, prefix.append(Component.text("Foldenor configuration has been reloaded.").color(TextColor.fromHexString("#e8f9f9"))));
+ } else if (args[0].equalsIgnoreCase("version")) {
+ Command.broadcastCommandMessage(sender, prefix.append(Component.text("This server is running " + Bukkit.getName() + " version " +
+ Bukkit.getVersion() + " (Implementing API version " + Bukkit.getBukkitVersion() + ")").color(TextColor.fromHexString("#e8f9f9"))));
+ }
+
+ return true;
+ }
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index fc5f7909d85d99b7fdaceb15d2672e36dcb6a426..c19b0a9552a642b1ace5b61109d1be6501b4342f 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1149,6 +1149,7 @@ public final class CraftServer implements Server {
this.reloadData();
org.spigotmc.SpigotConfig.registerCommands(); // Spigot
io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper
+ net.edenor.foldenor.command.FoldenorCommands.registerCommands(this.console);
this.spark.registerCommandBeforePlugins(this); // Paper - spark
this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*");
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions");
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index a196839396e9a54c449b7dd5f1953a8a16657ba4..6a140fa920002798f7e88f699416ae04d6a4915b 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -246,6 +246,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
DedicatedServer.LOGGER.error("Unable to load server configuration", e);
return false;
}
+ net.edenor.foldenor.commands.FoldenorCommand.init(); // Foldenor

this.setPvpAllowed(dedicatedserverproperties.pvp);
this.setFlightAllowed(dedicatedserverproperties.allowFlight);
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Subject: [PATCH] Redirect-getTPS-function-to-region-tps


diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index c19b0a9552a642b1ace5b61109d1be6501b4342f..ae22118c14f3e27cd72238ed1d556251e3852b10 100644
index fc5f7909d85d99b7fdaceb15d2672e36dcb6a426..009cfbf2220c34ac4a9fcc22f39e4a5e005f5d5b 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -13,6 +13,9 @@ import com.mojang.brigadier.StringReader;
Expand All @@ -18,7 +18,7 @@ index c19b0a9552a642b1ace5b61109d1be6501b4342f..ae22118c14f3e27cd72238ed1d556251
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
@@ -3070,11 +3073,21 @@ public final class CraftServer implements Server {
@@ -3069,11 +3072,21 @@ public final class CraftServer implements Server {

@Override
public double[] getTPS() {
Expand Down
4 changes: 2 additions & 2 deletions patches/server/0021-Leaves-Protocol-Core.patch
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ index 683b5c164bf40a9d900cb96134350f2fdd06b620..9741cad817e5bb0d8efc134f7fdb9f61
ServerLevel worldserver = entityplayer.serverLevel();

diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index ae22118c14f3e27cd72238ed1d556251e3852b10..ada5c6360d988b51697c225aa314f2e43bb3e04b 100644
index 009cfbf2220c34ac4a9fcc22f39e4a5e005f5d5b..e1e269cb53418632304cb1263fec2051f26d2db3 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -489,6 +489,7 @@ public final class CraftServer implements Server {
Expand All @@ -123,7 +123,7 @@ index ae22118c14f3e27cd72238ed1d556251e3852b10..ada5c6360d988b51697c225aa314f2e4
}

public boolean getCommandBlockOverride(String command) {
@@ -1156,6 +1157,7 @@ public final class CraftServer implements Server {
@@ -1155,6 +1156,7 @@ public final class CraftServer implements Server {
this.spark.registerCommandBeforePlugins(this); // Paper - spark
this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*");
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions");
Expand Down
22 changes: 11 additions & 11 deletions patches/server/0027-Purpur-Remove-timings.patch
Original file line number Diff line number Diff line change
Expand Up @@ -1001,7 +1001,7 @@ index fca787f92827019e776a6ccae8f90fe2b12c5177..87a722ca353c5ec20320e71c745fad7b
this.profiler.popPush("send chunks");
iterator = this.playerList.getPlayers().iterator();
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index a196839396e9a54c449b7dd5f1953a8a16657ba4..6663a726267ba93ce887abf470570d8cdd4f725b 100644
index 6a140fa920002798f7e88f699416ae04d6a4915b..496e2a7299f171cfab1a9cbc5056953783104646 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -66,7 +66,6 @@ import org.apache.logging.log4j.Level;
Expand All @@ -1012,7 +1012,7 @@ index a196839396e9a54c449b7dd5f1953a8a16657ba4..6663a726267ba93ce887abf470570d8c
import org.bukkit.craftbukkit.util.TerminalCompletionHandler;
import org.bukkit.craftbukkit.util.TerminalConsoleWriterThread;
import org.bukkit.event.server.ServerCommandEvent;
@@ -517,7 +516,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -518,7 +517,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
}

public void handleConsoleInputs() {
Expand All @@ -1021,7 +1021,7 @@ index a196839396e9a54c449b7dd5f1953a8a16657ba4..6663a726267ba93ce887abf470570d8c
// Paper start - Perf: use proper queue
ConsoleInput servercommand;
while ((servercommand = this.serverCommandQueue.poll()) != null) {
@@ -534,7 +533,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -535,7 +534,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
// CraftBukkit end
}

Expand All @@ -1030,7 +1030,7 @@ index a196839396e9a54c449b7dd5f1953a8a16657ba4..6663a726267ba93ce887abf470570d8c
}

@Override
@@ -817,7 +816,6 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -818,7 +817,6 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
}
};
waitableArray[0] = waitable;
Expand Down Expand Up @@ -1603,7 +1603,7 @@ index bf9d00463627c702c639c7cb625c3eb35c2e44aa..70157d581f8cbe60f86f944e7c2b0ce9
@Nullable
private String descriptionId;
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
index 3616d5f45309d806e1b8887ca7e9fbf0e24a5d86..d1e93b9c4af45166da10da95a2edde9db07d83a5 100644
index 4c2e8714c64a6fe49554a11471e37078267f1eea..c8bb3d7f299d43326daaa12aa119b0eb37cb4b38 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
@@ -33,14 +33,10 @@ import org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry;
Expand All @@ -1622,10 +1622,10 @@ index 3616d5f45309d806e1b8887ca7e9fbf0e24a5d86..d1e93b9c4af45166da10da95a2edde9d
private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry();
public CraftPersistentDataContainer persistentDataContainer;
diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
index 6bc1db349cb1ff6652f0e48159e7b31b8d99e2e1..234751ee1a71809993ad7a6791595ef98d1fb537 100644
index 42ae955ff55e868f9eedde61a21ec26763fd7700..52e4984b8490867772a0ac3410fd6e1cb97847b6 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -688,7 +688,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -683,7 +683,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel)this.level).moonrise$getChunkTaskScheduler().chunkHolderManager.getChunkHolder(this.locX, this.locZ).getEntityChunk().callEntitiesLoadEvent(); // Paper - rewrite chunk system

if (this.needsDecoration) {
Expand All @@ -1634,7 +1634,7 @@ index 6bc1db349cb1ff6652f0e48159e7b31b8d99e2e1..234751ee1a71809993ad7a6791595ef9
this.needsDecoration = false;
java.util.Random random = new java.util.Random();
random.setSeed(this.level.getSeed());
@@ -708,7 +708,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -703,7 +703,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
}
}
server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk));
Expand All @@ -1643,7 +1643,7 @@ index 6bc1db349cb1ff6652f0e48159e7b31b8d99e2e1..234751ee1a71809993ad7a6791595ef9
}
}
}
@@ -1064,7 +1064,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -1059,7 +1059,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
ProfilerFiller gameprofilerfiller = LevelChunk.this.level.getProfiler();

gameprofilerfiller.push(this::getType);
Expand All @@ -1652,7 +1652,7 @@ index 6bc1db349cb1ff6652f0e48159e7b31b8d99e2e1..234751ee1a71809993ad7a6791595ef9
profiler.startTimer(timerId); try { // Folia - profiler
BlockState iblockdata = LevelChunk.this.getBlockState(blockposition);

@@ -1093,7 +1093,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -1088,7 +1088,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
// Paper end - Prevent block entity and entity crashes
// Spigot start
} finally {
Expand Down Expand Up @@ -1797,7 +1797,7 @@ index 802688c2091c3f1a31f02599fb73432811d588ee..2bc35cd9830c562153012a132ab6a67b
// Paper end - add timings for scoreboard search
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
index c9e31dcdde9d96edfc12e694065f1f4643bb9db3..585072091a0b6cb7ca627e7d2f482af8ecdcedd4 100644
index f89e08c22bc76dba5df730a83b37324e38d2956d..e94f5248d622a59db4feb05d955885f5b4a23fe2 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -29,6 +29,7 @@ import net.minecraft.nbt.Tag;
Expand Down
Loading

0 comments on commit e9ae70e

Please sign in to comment.