9
0
mirror of https://github.com/BX-Team/DivineMC.git synced 2025-12-22 16:29:23 +00:00

44/50 patches (only the difficult ones remain)

This commit is contained in:
NONPLAYT
2024-06-17 17:01:08 +03:00
parent 20484be678
commit 4adac56a0b
13 changed files with 89 additions and 111 deletions

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Optimize CraftServer.getWorld(UUID)
Original code by MultiPaper - https://github.com/MultiPaper/MultiPaper
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 53fe8501a477a2cb436792cc02601de4de7f3f54..e21f1398c2efba9856718cb30328ac6ec5a4484e 100644
index 7c6af53de9b3b7552bf69aaef6ce2ff179bf2ece..0a0ba7c205f5acef31e9b825022c9598d1218b5a 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -265,6 +265,7 @@ import javax.annotation.Nullable; // Paper
@@ -266,6 +266,7 @@ import javax.annotation.Nullable; // Paper
import javax.annotation.Nonnull; // Paper
import space.bxteam.divinemc.configuration.DivineConfig; // DivineMC
@@ -17,7 +17,7 @@ index 53fe8501a477a2cb436792cc02601de4de7f3f54..e21f1398c2efba9856718cb30328ac6e
public final class CraftServer implements Server {
private final String serverName = io.papermc.paper.ServerBuildInfo.buildInfo().brandName(); // Paper
@@ -283,6 +284,7 @@ public final class CraftServer implements Server {
@@ -284,6 +285,7 @@ public final class CraftServer implements Server {
protected final DedicatedPlayerList playerList;
private final Map<String, World> worlds = new LinkedHashMap<String, World>();
// private final Map<Class<?>, Registry<?>> registries = new HashMap<>(); // Paper - replace with RegistryAccess
@@ -25,7 +25,7 @@ index 53fe8501a477a2cb436792cc02601de4de7f3f54..e21f1398c2efba9856718cb30328ac6e
private YamlConfiguration configuration;
private YamlConfiguration commandsConfiguration;
private final Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions()));
@@ -1488,6 +1490,7 @@ public final class CraftServer implements Server {
@@ -1492,6 +1494,7 @@ public final class CraftServer implements Server {
this.getLogger().log(Level.SEVERE, null, ex);
}
@@ -33,7 +33,7 @@ index 53fe8501a477a2cb436792cc02601de4de7f3f54..e21f1398c2efba9856718cb30328ac6e
this.worlds.remove(world.getName().toLowerCase(Locale.ROOT));
this.console.removeLevel(handle);
return true;
@@ -1506,6 +1509,7 @@ public final class CraftServer implements Server {
@@ -1510,6 +1513,7 @@ public final class CraftServer implements Server {
@Override
public World getWorld(UUID uid) {
@@ -41,7 +41,7 @@ index 53fe8501a477a2cb436792cc02601de4de7f3f54..e21f1398c2efba9856718cb30328ac6e
for (World world : this.worlds.values()) {
if (world.getUID().equals(uid)) {
return world;
@@ -1529,6 +1533,7 @@ public final class CraftServer implements Server {
@@ -1533,6 +1537,7 @@ public final class CraftServer implements Server {
System.out.println("World " + world.getName() + " is a duplicate of another world and has been prevented from loading. Please delete the uid.dat file from " + world.getName() + "'s world directory if you want to be able to load the duplicate world.");
return;
}

View File

@@ -5,22 +5,21 @@ Subject: [PATCH] Block Log4Shell exploit
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 0c3768bb183451e9dfe94bbc9b203bd79e474b99..1b760cf89327b82284d7528d87f4e3543f4c9154 100644
index 1c41ad915ad5f1ef63fea96fefe53fd037174ac3..cb1b861df277abdb0985f978f4e2d5419d279d2a 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2409,6 +2409,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -2353,6 +2353,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
}
private void tryHandleChat(String s, Runnable runnable, boolean sync) { // CraftBukkit
+ if (ServerGamePacketListenerImpl.isLog4ShellExploit(s)) return; // DivineMC - Block Log4Shell exploit
if (ServerGamePacketListenerImpl.isChatMessageIllegal(s)) {
this.disconnect(Component.translatable("multiplayer.disconnect.illegal_characters"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_CHARACTERS); // Paper
this.disconnect((Component) Component.translatable("multiplayer.disconnect.illegal_characters"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_CHARACTERS); // Paper
} else if (this.player.isRemoved() || this.player.getChatVisibility() == ChatVisiblity.HIDDEN) { // CraftBukkit - dead men tell no tales
@@ -2439,6 +2440,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
return optional;
@@ -2384,6 +2385,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
}
}
+
+ // DivineMC start - Block Log4Shell exploit
+ public static boolean isLog4ShellExploit(String message) {
+ java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(".*\\$\\{[^}]*}.*");
@@ -29,14 +28,15 @@ index 0c3768bb183451e9dfe94bbc9b203bd79e474b99..1b760cf89327b82284d7528d87f4e354
+ return matcher.find();
+ }
+ // DivineMC end
+
public static boolean isChatMessageIllegal(String message) {
for (int i = 0; i < message.length(); ++i) {
if (!StringUtil.isAllowedChatCharacter(message.charAt(i))) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 241340a6d66f17f2a31fb03ff0dfab121b856368..dc4bde8f94ee7a8b5a2ae8348c5796f1d803bd8e 100644
index 61ae7f9d871bb2747c928e91eb07496b862a4975..20e77d90bbe97e2c711a9f4ef6d47906595d99d7 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -749,6 +749,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -751,6 +751,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
Preconditions.checkArgument(msg != null, "msg cannot be null");
if (this.getHandle().connection == null) return;

View File

@@ -1,6 +1,6 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com>
Date: Thu, 23 May 2024 15:39:18 +0300
Date: Mon, 17 Jun 2024 16:21:15 +0300
Subject: [PATCH] Option to disable non editable sign warning
@@ -18,16 +18,16 @@ index 8cd812a25b1cc05ea14675658bf9c1503ebebd51..5cdfd35218c424ffb7a900ef66f9b1cf
((ServerPlayer) player).connection.send(this.getUpdatePacket()); // CraftBukkit
}
diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
index 08c69524814f8581faa6dcf227f18500d4370e13..e40f472da48a10b2ca2bc0e9b976e15305bd7016 100644
index 8380fd40b19ea1b4bff6ba78648408fbd3c662d0..58557370cd588c19faf54cb9fc402b1d0a0f687f 100644
--- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
+++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
@@ -200,7 +200,9 @@ public class DivineConfig {
@@ -152,4 +152,9 @@ public class DivineConfig {
}
public static boolean useSecureSeed = false;
return builder.build();
}
+
+ public static boolean disableNonEditableSignWarning = true;
private static void miscSettings() {
useSecureSeed = getBoolean("settings.misc.use-secure-seed", useSecureSeed);
+ private static void miscSettings() {
+ disableNonEditableSignWarning = getBoolean("settings.misc.disable-non-editable-sign-warning", disableNonEditableSignWarning);
}
+ }
}

View File

@@ -5,22 +5,22 @@ Subject: [PATCH] Suppress errors from dirty attributes
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
index dd6278fe99e2ee4daa95249c71ea935dd08b0025..7e2bd649b3525ccd5db052f83c9b8818d7f13d78 100644
index b38207981751d96a7e769f7afb352a4540b18440..3117a5ea9ef02c523c9223252078cc40163e6ca4 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
@@ -394,7 +394,10 @@ public class ServerEntity {
@@ -402,7 +402,10 @@ public class ServerEntity {
}
if (this.entity instanceof LivingEntity) {
- Set<AttributeInstance> set = ((LivingEntity) this.entity).getAttributes().getDirtyAttributes();
- Set<AttributeInstance> set = ((LivingEntity) this.entity).getAttributes().getAttributesToSync();
+ // DivineMC start - Suppress errors from dirty attributes
+ Set<AttributeInstance> attributes = ((LivingEntity) this.entity).getAttributes().getDirtyAttributes();
+ Set<AttributeInstance> attributes = ((LivingEntity) this.entity).getAttributes().getAttributesToSync();
+ final Set<AttributeInstance> set = this.level.divinemcConfig.suppressErrorsFromDirtyAttributes ? Collections.synchronizedSet(attributes) : attributes;
+ // DivineMC end
if (!set.isEmpty()) {
// CraftBukkit start - Send scaled max health
@@ -405,7 +408,7 @@ public class ServerEntity {
@@ -413,7 +416,7 @@ public class ServerEntity {
this.broadcastAndSend(new ClientboundUpdateAttributesPacket(this.entity.getId(), set));
}

View File

@@ -0,0 +1,43 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com>
Date: Sun, 12 May 2024 18:12:53 +0300
Subject: [PATCH] Carpet-Fixes: RecipeManager Optimize
Original project: https://github.com/fxmorin/carpet-fixes
Improves: [Blast]Furnace/Campfire/Smoker/Stonecutter/Crafting/Sheep Color Choosing
diff --git a/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java b/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java
index de7c77c1b25680ecc65f0f43f2391aff269a974f..6d96e00d35be3d0d9fe7def5773c7f00d5951e99 100644
--- a/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java
+++ b/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java
@@ -21,6 +21,7 @@ import java.util.Map.Entry;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import java.util.ArrayList;
import javax.annotation.Nullable;
import net.minecraft.core.HolderLookup;
import net.minecraft.core.NonNullList;
@@ -128,7 +129,7 @@ public class RecipeManager extends SimpleJsonResourceReloadListener {
}
public <I extends RecipeInput, T extends Recipe<I>> List<RecipeHolder<T>> getAllRecipesFor(RecipeType<T> type) {
- return List.copyOf(this.byType(type));
+ return space.bxteam.divinemc.configuration.DivineConfig.recipeManagerOptimization ? new ArrayList<>(this.byType(type)) : List.copyOf(this.byType(type)); // DivineMC - Carpet-Fixes: RecipeManager Optimize
}
public <I extends RecipeInput, T extends Recipe<I>> List<RecipeHolder<T>> getRecipesFor(RecipeType<T> type, I input, Level world) {
diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
index 58557370cd588c19faf54cb9fc402b1d0a0f687f..a126361a640d3aac85785f3f24f9e5f712d4d2fe 100644
--- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
+++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
@@ -157,4 +157,9 @@ public class DivineConfig {
private static void miscSettings() {
disableNonEditableSignWarning = getBoolean("settings.misc.disable-non-editable-sign-warning", disableNonEditableSignWarning);
}
+
+ public static boolean recipeManagerOptimization = true;
+ private static void optimizations() {
+ recipeManagerOptimization = getBoolean("settings.optimizations.recipe-manager-optimization", recipeManagerOptimization);
+ }
}

View File

@@ -152,16 +152,16 @@ index 01352cc83b25eb0e30b7e0ff521fc7c1b3d5155b..c042287e12b5ce814afe8557e4dfa8e8
public Holder<Biome> getNoiseBiomeAtPosition(double x, double y, double z) {
diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
index c10403d781d25e4bb9e43d3f064fb1aebde00bfb..73b6c3590dad95cddd9cc1a1cff36492175da232 100644
index a126361a640d3aac85785f3f24f9e5f712d4d2fe..b12578224a1ac9596a8e82c277efb71e1944c164 100644
--- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
+++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
@@ -152,4 +152,9 @@ public class DivineConfig {
@@ -159,7 +159,9 @@ public class DivineConfig {
}
return builder.build();
}
+
public static boolean recipeManagerOptimization = true;
+ public static boolean biomeManagerOptimization = true;
+ private static void optimizations() {
private static void optimizations() {
recipeManagerOptimization = getBoolean("settings.optimizations.recipe-manager-optimization", recipeManagerOptimization);
+ biomeManagerOptimization = getBoolean("settings.optimizations.biome-manager-optimization", biomeManagerOptimization);
+ }
}
}

View File

@@ -110,22 +110,20 @@ index 18a1b4325cac81b040596071dab99ef9bf6f3142..445dc3ca4586b39ccc2cebe922455d9f
for (BlockPattern.BlockPatternMatch shapedetector_shapedetectorcollection = this.findExitPortal(); shapedetector_shapedetectorcollection != null; shapedetector_shapedetectorcollection = this.findExitPortal()) {
for (int i = 0; i < this.exitPortalPattern.getWidth(); ++i) {
diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
index e2eac66da19b1e9bc5f776d85b487d769121a9b3..579b189b6d1752f8a51ddc13f6d4390517541661 100644
index b12578224a1ac9596a8e82c277efb71e1944c164..66df0b923a4dfe15479f93a65983c927c8dbf112 100644
--- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
+++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
@@ -156,10 +156,12 @@ public class DivineConfig {
public static boolean biomeManagerOptimization = true;
public static boolean sheepOptimization = true;
@@ -160,8 +160,10 @@ public class DivineConfig {
public static boolean recipeManagerOptimization = true;
public static boolean biomeManagerOptimization = true;
+ public static boolean optimizedDragonRespawn = true;
private static void optimizations() {
biomeManagerOptimization = getBoolean("settings.optimizations.biome-manager-optimization", biomeManagerOptimization);
sheepOptimization = getBoolean("settings.optimizations.sheep-optimization", sheepOptimization);
recipeManagerOptimization = getBoolean("settings.optimizations.recipe-manager-optimization", recipeManagerOptimization);
biomeManagerOptimization = getBoolean("settings.optimizations.biome-manager-optimization", biomeManagerOptimization);
+ optimizedDragonRespawn = getBoolean("settings.optimizations.optimized-dragon-respawn", optimizedDragonRespawn);
}
public static boolean noChatSign = true;
}
diff --git a/src/main/java/space/bxteam/divinemc/util/carpetams/BlockPatternHelper.java b/src/main/java/space/bxteam/divinemc/util/carpetams/BlockPatternHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..1bf8f3d814d513ea2806bba9c26d207d14533cbd

View File

@@ -281,20 +281,18 @@ index 35820670837376bcad8891241724d5b946fbd31f..74a666a45289f0902b426ba57986cd93
@Deprecated
diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
index 579b189b6d1752f8a51ddc13f6d4390517541661..8db0e71ee1ef7827b24938008c416ff960ab6be4 100644
index 66df0b923a4dfe15479f93a65983c927c8dbf112..c09f32cb70a24a19a228fdf670d7815f619f6ddf 100644
--- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
+++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
@@ -157,11 +157,13 @@ public class DivineConfig {
public static boolean sheepOptimization = true;
@@ -161,9 +161,11 @@ public class DivineConfig {
public static boolean recipeManagerOptimization = true;
public static boolean biomeManagerOptimization = true;
public static boolean optimizedDragonRespawn = true;
+ public static boolean optimizeNoiseGeneration = true;
private static void optimizations() {
biomeManagerOptimization = getBoolean("settings.optimizations.biome-manager-optimization", biomeManagerOptimization);
sheepOptimization = getBoolean("settings.optimizations.sheep-optimization", sheepOptimization);
recipeManagerOptimization = getBoolean("settings.optimizations.recipe-manager-optimization", recipeManagerOptimization);
biomeManagerOptimization = getBoolean("settings.optimizations.biome-manager-optimization", biomeManagerOptimization);
optimizedDragonRespawn = getBoolean("settings.optimizations.optimized-dragon-respawn", optimizedDragonRespawn);
+ optimizeNoiseGeneration = getBoolean("settings.optimizations.optimize-noise-generation", optimizeNoiseGeneration);
}
public static boolean noChatSign = true;
}

View File

@@ -1,61 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com>
Date: Sun, 12 May 2024 18:12:53 +0300
Subject: [PATCH] Carpet-Fixes: RecipeManager Optimize
Original project: https://github.com/fxmorin/carpet-fixes
Improves: [Blast]Furnace/Campfire/Smoker/Stonecutter/Crafting/Sheep Color Choosing
diff --git a/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java b/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java
index a31326e24cb68472c81cd781c5e3041772712862..8bb9c2c070717364a842e682ea6b87074157cf6d 100644
--- a/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java
+++ b/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java
@@ -21,6 +21,7 @@ import java.util.Map.Entry;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import java.util.ArrayList;
import javax.annotation.Nullable;
import net.minecraft.core.HolderLookup;
import net.minecraft.core.NonNullList;
@@ -105,7 +106,7 @@ public class RecipeManager extends SimpleJsonResourceReloadListener {
List<RecipeHolder<T>> list = this.byType(type).stream().filter((recipeholder) -> {
return recipeholder.value().matches(inventory, world);
}).toList();
- Optional<RecipeHolder<T>> recipe = (list.isEmpty()) ? Optional.empty() : Optional.of(list.getLast()); // CraftBukkit - SPIGOT-4638: last recipe gets priority
+ Optional<RecipeHolder<T>> recipe = (list.isEmpty()) ? Optional.empty() : Optional.of(list.get(list.size() - 1)); // CraftBukkit - SPIGOT-4638: last recipe gets priority
inventory.setCurrentRecipe(recipe.orElse(null)); // CraftBukkit - Clear recipe when no recipe is found
return recipe;
// CraftBukkit end
@@ -125,14 +126,14 @@ public class RecipeManager extends SimpleJsonResourceReloadListener {
List<RecipeHolder<T>> list = this.byType(type).stream().filter((recipeholder1) -> {
return recipeholder1.value().matches(inventory, world);
}).toList();
- Optional<RecipeHolder<T>> recipe = (list.isEmpty()) ? Optional.empty() : Optional.of(list.getLast()); // CraftBukkit - SPIGOT-4638: last recipe gets priority
+ Optional<RecipeHolder<T>> recipe = (list.isEmpty()) ? Optional.empty() : Optional.of(list.get(list.size() - 1)); // CraftBukkit - SPIGOT-4638: last recipe gets priority
inventory.setCurrentRecipe(recipe.orElse(null)); // CraftBukkit - Clear recipe when no recipe is found
return recipe;
// CraftBukkit end
}
public <C extends Container, T extends Recipe<C>> List<RecipeHolder<T>> getAllRecipesFor(RecipeType<T> type) {
- return List.copyOf(this.byType(type));
+ return space.bxteam.divinemc.configuration.DivineConfig.recipeManagerOptimization ? new ArrayList<>(this.byType(type)) : List.copyOf(this.byType(type)); // DivineMC - Carpet-Fixes: RecipeManager Optimize
}
public <C extends Container, T extends Recipe<C>> List<RecipeHolder<T>> getRecipesFor(RecipeType<T> type, C inventory, Level world) {
diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
index bf550fa360f69b714ac346333c78d7f8de2a71b9..9ae6daeb94232c2f8c5e8f9cc3a2df2f89cd4ed3 100644
--- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
+++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
@@ -155,8 +155,10 @@ public class DivineConfig {
public static boolean biomeManagerOptimization = true;
public static boolean sheepOptimization = true;
+ public static boolean recipeManagerOptimization = true;
private static void optimizations() {
biomeManagerOptimization = getBoolean("settings.optimizations.biome-manager-optimization", biomeManagerOptimization);
sheepOptimization = getBoolean("settings.optimizations.sheep-optimization", sheepOptimization);
+ recipeManagerOptimization = getBoolean("settings.optimizations.recipe-manager-optimization", recipeManagerOptimization);
}
}