diff --git a/patches/server/0004-Leaves-Server-Config-And-Command.patch b/patches/server/0004-Leaves-Server-Config-And-Command.patch index 2b40d5f6..eb9478b8 100644 --- a/patches/server/0004-Leaves-Server-Config-And-Command.patch +++ b/patches/server/0004-Leaves-Server-Config-And-Command.patch @@ -128,10 +128,10 @@ index 5c4bf6d99da409988871465de27e0357af79f37e..ce9873f216cbb330dee4abbdf8b0459f .withRequiredArg() diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..4c290eb2d4abf9e9b923b8d0878f319328b7cf8c +index 0000000000000000000000000000000000000000..62d8bbd0b2638c725b4c5644a2d5063460fa25c9 --- /dev/null +++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -0,0 +1,309 @@ +@@ -0,0 +1,696 @@ +package top.leavesmc.leaves; + +import com.destroystokyo.paper.util.SneakyThrow; @@ -150,6 +150,7 @@ index 0000000000000000000000000000000000000000..4c290eb2d4abf9e9b923b8d0878f3193 +import java.util.List; +import java.util.Map; +import java.util.logging.Level; ++import java.util.Random; + +// Powered by Tuinity(https://github.com/Tuinity/Tuinity) + @@ -266,6 +267,392 @@ index 0000000000000000000000000000000000000000..4c290eb2d4abf9e9b923b8d0878f3193 + return LeavesConfig.config.getString(path, dfl); + } + ++ static List getList(final String path, final List def) { ++ LeavesConfig.config.addDefault(path, def); ++ return (List) LeavesConfig.config.getList(path, config.getList(path)); ++ } ++ ++ public static boolean snowballAndEggCanKnockback = true; ++ private static void snowballAndEggCanKnockback() { ++ snowballAndEggCanKnockback = getBoolean("settings.modify.snowball-and-egg-can-knockback-player", snowballAndEggCanKnockback); ++ } ++ ++ public static boolean fakeplayerSupport = true; ++ public static List unableFakeplayerNames = List.of("player-name"); ++ public static int fakeplayerLimit = 10; ++ public static String fakeplayerPrefix = ""; ++ public static String fakeplayerSuffix = ""; ++ public static boolean alwaysSendFakeplayerData = true; ++ public static boolean fakeplayerResident = false; ++ public static boolean openFakeplayerInventory = false; ++ public static boolean fakeplayerSkipSleep = false; ++ private static void fakeplayer() { ++ fakeplayerSupport = getBoolean("settings.modify.fakeplayer.enable", fakeplayerSupport); ++ unableFakeplayerNames = getList("settings.modify.fakeplayer.unable-fakeplayer-names", unableFakeplayerNames); ++ fakeplayerLimit = getInt("settings.modify.fakeplayer.limit", fakeplayerLimit); ++ fakeplayerPrefix = getString("settings.modify.fakeplayer.prefix", fakeplayerPrefix); ++ fakeplayerSuffix = getString("settings.modify.fakeplayer.suffix", fakeplayerSuffix); ++ alwaysSendFakeplayerData = getBoolean("settings.modify.fakeplayer.always-send-data", alwaysSendFakeplayerData); ++ fakeplayerResident = getBoolean("settings.modify.fakeplayer.resident-fakeplayer", fakeplayerResident); ++ openFakeplayerInventory = getBoolean("settings.modify.fakeplayer.open-fakeplayer-inventory", openFakeplayerInventory); ++ fakeplayerSkipSleep = getBoolean("settings.modify.fakeplayer.skip-sleep-check", fakeplayerSkipSleep); ++ } ++ ++ public static boolean shearsInDispenserCanZeroAmount = false; ++ private static void shearsInDispenserCanZeroAmount() { ++ shearsInDispenserCanZeroAmount = getBoolean("settings.modify.shears-in-dispenser-can-zero-amount", shearsInDispenserCanZeroAmount); ++ } ++ ++ public static boolean redstoneShearsWrench = true; ++ private static void redstoneShearsWrench() { ++ redstoneShearsWrench = getBoolean("settings.modify.redstone-shears-wrench", redstoneShearsWrench); ++ } ++ ++ public static boolean buddingAmethystCanPushByPiston = false; ++ private static void buddingAmethystCanPushByPiston() { ++ buddingAmethystCanPushByPiston = getBoolean("settings.modify.budding-amethyst-can-push-by-piston", buddingAmethystCanPushByPiston); ++ } ++ ++ public static boolean spectatorDontGetAdvancement = false; ++ private static void spectatorDontGetAdvancement() { ++ spectatorDontGetAdvancement = getBoolean("settings.modify.spectator-dont-get-advancement", spectatorDontGetAdvancement); ++ } ++ ++ public static boolean stickChangeArmorStandArmStatus = true; ++ private static void stickChangeArmorStandHasArm() { ++ stickChangeArmorStandArmStatus = getBoolean("settings.modify.stick-change-armorstand-arm-status", stickChangeArmorStandArmStatus); ++ } ++ ++ public static boolean noChatSign = true; ++ private static void noChatSign() { ++ if (LeavesConfig.config.contains("settings.modify.no-chat-sign")) { ++ noChatSign = LeavesConfig.config.getBoolean("settings.modify.no-chat-sign"); ++ LeavesConfig.config.set("settings.modify.no-chat-sign", null); ++ } ++ noChatSign = getBoolean("settings.misc.no-chat-sign", noChatSign); ++ } ++ ++ public static boolean asyncMobSpawning = false; ++ private static boolean asyncMobSpawningLock = false; ++ private static void asyncMobSpawning() { ++ if (!asyncMobSpawningLock) { ++ asyncMobSpawning = getBoolean("settings.performance.async-mob-spawning", asyncMobSpawning); ++ asyncMobSpawningLock = true; ++ } ++ ++ if (asyncMobSpawning) { ++ asyncMobSpawning = false; ++ LeavesLogger.LOGGER.severe("Async MobSpawning is updating, it can't work"); ++ } ++ } ++ ++ public static boolean dontSendUselessEntityPackets = true; ++ private static void dontSendUselessEntityPackets() { ++ dontSendUselessEntityPackets = getBoolean("settings.performance.dont-send-useless-entity-packets", dontSendUselessEntityPackets); ++ } ++ ++ public static boolean asyncEntityTracker = false; ++ private static boolean asyncEntityTrackerLock = false; ++ private static void asyncEntityTracker() { ++ if (!asyncEntityTrackerLock) { ++ asyncEntityTracker = getBoolean("settings.performance.async-entity-tracker", asyncEntityTracker); ++ asyncEntityTrackerLock = true; ++ } ++ ++ if (asyncEntityTracker) { ++ asyncEntityTracker = false; ++ LeavesLogger.LOGGER.severe("Async EntityTracker is updating, it can't work"); ++ } ++ } ++ ++ public static boolean fixPaper6045 = true; ++ private static void fixPaper6045() { ++ fixPaper6045 = getBoolean("settings.performance.fix.fix-paper-6045", fixPaper6045); ++ } ++ ++ public static boolean optimizeEntityCoordinateKey = true; ++ private static void optimizeEntityCoordinateKey() { ++ optimizeEntityCoordinateKey = getBoolean("settings.performance.optimize-entity-coordinate-key", optimizeEntityCoordinateKey); ++ } ++ ++ public static boolean enableSuffocationOptimization = true; ++ private static void enableSuffocationOptimization() { ++ enableSuffocationOptimization = getBoolean("settings.performance.enable-suffocation-optimization", enableSuffocationOptimization); ++ } ++ ++ public static boolean entityStripRaytracing = true; ++ private static void entityStripRaytracing() { ++ entityStripRaytracing = getBoolean("settings.performance.strip-raytracing-for-entity", entityStripRaytracing); ++ } ++ ++ public static boolean checkSpookySeasonOnceAnHour = true; ++ private static void checkSpookySeasonOnceAnHour() { ++ checkSpookySeasonOnceAnHour = getBoolean("settings.performance.check-spooky-season-once-an-hour", checkSpookySeasonOnceAnHour); ++ } ++ ++ public static boolean optimizeChunkTicking = true; ++ private static boolean optimizeChunkTickingLock = false; ++ private static void optimizeChunkTicking() { ++ if (!optimizeChunkTickingLock) { ++ optimizeChunkTicking = getBoolean("settings.performance.optimize-chunk-ticking", optimizeChunkTicking); ++ optimizeChunkTickingLock = true; ++ } ++ } ++ ++ public static boolean skipPOIFindingInVehicle = true; ++ private static void skipPOIFindingInVehicle() { ++ skipPOIFindingInVehicle = getBoolean("settings.performance.skip-poi-find-in-vehicle", skipPOIFindingInVehicle); ++ } ++ ++ public static boolean entityTargetFindingOptimization = true; ++ private static void entityTargetFindingOptimization() { ++ entityTargetFindingOptimization = getBoolean("settings.performance.entity-target-find-optimization", entityTargetFindingOptimization); ++ } ++ ++ public static boolean useMoreThreadUnsafeRandom = true; ++ private static void useMoreThreadUnsafeRandom() { ++ useMoreThreadUnsafeRandom = getBoolean("settings.performance.use-more-thread-unsafe-random", useMoreThreadUnsafeRandom); ++ } ++ ++ public static boolean disableMethodProfiler = true; ++ private static void disableMethodProfiler() { ++ disableMethodProfiler = getBoolean("settings.misc.disable-method-profiler", disableMethodProfiler); ++ } ++ ++ public static boolean throttleInactiveGoalSelectorTick = false; ++ private static void throttleInactiveGoalSelectorTick() { ++ throttleInactiveGoalSelectorTick = getBoolean("settings.performance.inactive-goal-selector-disable", throttleInactiveGoalSelectorTick); ++ } ++ ++ public static boolean reduceEntityAllocations = true; ++ private static void reduceEntityAllocations() { ++ reduceEntityAllocations = getBoolean("settings.performance.reduce-entity-allocations", reduceEntityAllocations); ++ } ++ ++ public static boolean removeTickGuardLambda = true; ++ private static void removeTickGuardLambda() { ++ removeTickGuardLambda = getBoolean("settings.performance.remove.tick-guard-lambda", removeTickGuardLambda); ++ } ++ ++ public static boolean removeInventoryContainsIterators = true; ++ private static void removeInventoryContainsIterators() { ++ removeInventoryContainsIterators = getBoolean("settings.performance.remove.inventory-contains-iterators", removeInventoryContainsIterators); ++ } ++ ++ public static boolean removeGetNearPlayerStreams = true; ++ private static void removeGetNearPlayerStreams() { ++ removeGetNearPlayerStreams = getBoolean("settings.performance.remove.get-nearby-players-streams", removeGetNearPlayerStreams); ++ } ++ ++ public static boolean removeRangeCheckStreams = true; ++ private static void removeRangeCheckStreams() { ++ removeRangeCheckStreams = getBoolean("settings.performance.remove.range-check-streams-and-iterators", removeRangeCheckStreams); ++ } ++ ++ // only config now ++ public static boolean asyncPathfinding = false; ++ private static boolean asyncPathfindingLock = false; ++ private static void asyncPathfinding() { ++ if (!asyncPathfindingLock) { ++ asyncPathfinding = getBoolean("settings.performance.async-pathfinding", asyncPathfinding); ++ asyncPathfindingLock = true; ++ } ++ ++ if (asyncPathfinding) { ++ asyncPathfinding = false; ++ LeavesLogger.LOGGER.severe("Async Pathfinding is updating, it can't work"); ++ } ++ } ++ ++ public static boolean cacheClimbCheck = true; ++ private static void cacheClimbCheck() { ++ cacheClimbCheck = getBoolean("settings.performance.cache-climb-check", cacheClimbCheck); ++ } ++ ++ public static boolean biomeTemperaturesUseAgingCache = true; ++ private static boolean biomeTemperaturesUseAgingCacheLock = false; ++ private static void biomeTemperaturesUseAgingCache() { ++ if (!biomeTemperaturesUseAgingCacheLock) { ++ biomeTemperaturesUseAgingCache = getBoolean("settings.performance.biome-temperatures-use-aging-cache", biomeTemperaturesUseAgingCache); ++ biomeTemperaturesUseAgingCacheLock = true; ++ } ++ } ++ ++ public static boolean reduceEntityFluidLookup = true; ++ private static void reduceEntityFluidLookup() { ++ reduceEntityFluidLookup = getBoolean("settings.performance.reduce-entity-fluid-lookup", reduceEntityFluidLookup); ++ } ++ ++ public static boolean reduceChuckLoadAndLookup = true; ++ private static void reduceChuckLoadAndLookup() { ++ reduceChuckLoadAndLookup = getBoolean("settings.performance.reduce-chuck-load-and-lookup", reduceChuckLoadAndLookup); ++ } ++ ++ public static boolean simplerVanillaShapelessRecipes = true; ++ private static void simplerVanillaShapelessRecipes() { ++ simplerVanillaShapelessRecipes = getBoolean("settings.performance.simpler-vanilla-shapeless-recipes", simplerVanillaShapelessRecipes); ++ } ++ ++ public static boolean pcaSyncProtocol = false; ++ private static void pcaSyncProtocol() { ++ pcaSyncProtocol = getBoolean("settings.protocol.pca-sync-protocol", pcaSyncProtocol); ++ } ++ ++ public static String pcaSyncPlayerEntity = "OPS"; ++ private static final List pcaSyncPlayerEntityList = List.of("NOBODY", "BOT", "OPS", "OPS_AND_SELF", "EVERYONE"); ++ private static void pcaSyncPlayerEntity() { ++ pcaSyncPlayerEntity = getString("settings.protocol.pca-sync-player-entity", pcaSyncPlayerEntity); ++ if (!pcaSyncPlayerEntityList.contains(pcaSyncPlayerEntity)) { ++ pcaSyncPlayerEntity = "OPS"; ++ LeavesLogger.LOGGER.severe("pca-sync-player-entity value error, reset to OPS"); ++ } ++ } ++ ++ public static boolean bborProtocol = false; ++ private static void bborProtocol() { ++ bborProtocol = getBoolean("settings.protocol.bbor-protocol", bborProtocol); ++ } ++ ++ public static boolean instantBlockUpdaterReintroduced = false; ++ private static boolean instantBlockUpdaterReintroducedLock = false; ++ private static void instantBlockUpdaterReintroduced() { ++ if (!instantBlockUpdaterReintroducedLock) { ++ instantBlockUpdaterReintroduced = getBoolean("settings.modify.instant-block-updater-reintroduced", instantBlockUpdaterReintroduced); ++ instantBlockUpdaterReintroducedLock = true; ++ } ++ } ++ ++ public static boolean flattenTriangularDistribution = false; ++ private static void flattenTriangularDistribution() { ++ flattenTriangularDistribution = getBoolean("settings.modify.flatten-triangular-distribution", flattenTriangularDistribution); ++ } ++ ++ public static boolean jadeProtocol = false; ++ private static void jadeProtocol() { ++ jadeProtocol = getBoolean("settings.protocol.jade-protocol", jadeProtocol); ++ } ++ ++ public static boolean carpetAlternativeBlockPlacement = false; ++ private static void carpetAlternativeBlockPlacement() { ++ carpetAlternativeBlockPlacement = getBoolean("settings.protocol.carpet-alternative-block-placement", carpetAlternativeBlockPlacement); ++ } ++ ++ public static boolean playerOperationLimiter = false; ++ private static void playerOperationLimiter() { ++ playerOperationLimiter = getBoolean("settings.modify.player-operation-limiter", playerOperationLimiter); ++ } ++ ++ public static double renewableElytra = -1.0; ++ private static void renewableElytra() { ++ renewableElytra = getDouble("settings.modify.renewable-elytra", renewableElytra); ++ } ++ ++ public static int shulkerBoxStackSize = 1; ++ private static String stackableShulkerBoxes = "false"; ++ private static void stackableShulkerBoxes() { ++ stackableShulkerBoxes = getString("settings.modify.stackable-shulker-boxes", stackableShulkerBoxes); ++ stackableShulkerBoxes = MathUtils.isNumeric(stackableShulkerBoxes) ? stackableShulkerBoxes : stackableShulkerBoxes.equals("true") ? "2" : "1"; ++ shulkerBoxStackSize = Integer.parseInt(stackableShulkerBoxes); ++ } ++ ++ public static boolean improveFluidDirectionCaching = true; ++ private static boolean improveFluidDirectionCachingLock = false; ++ private static void improveFluidDirectionCaching() { ++ if (!improveFluidDirectionCachingLock) { ++ improveFluidDirectionCaching = getBoolean("settings.performance.improve-fluid-direction-caching", improveFluidDirectionCaching); ++ improveFluidDirectionCachingLock = true; ++ } ++ } ++ ++ public static boolean mcTechnicalMode = true; ++ private static void mcTechnicalMode() { ++ mcTechnicalMode = getBoolean("settings.modify.mc-technical-survival-mode", mcTechnicalMode); // TODO better name? ++ doMcTechnicalMode(); ++ } ++ ++ public static void doMcTechnicalMode() { ++ if (mcTechnicalMode) { ++ } ++ } ++ ++ public static boolean netherPortalFix = false; ++ private static void netherPortalFix() { ++ netherPortalFix = getBoolean("settings.modify.return-nether-portal-fix", netherPortalFix); ++ } ++ ++ public static boolean appleskinProtocol = false; ++ private static void appleskinProtocol() { ++ appleskinProtocol = getBoolean("settings.protocol.appleskin-protocol", appleskinProtocol); ++ } ++ ++ public static boolean xaeroMapProtocol = false; ++ public static int xaeroMapServerID = new Random().nextInt(); ++ private static void xaeroMapProtocol() { ++ xaeroMapProtocol = getBoolean("settings.protocol.xaero-map-protocol", xaeroMapProtocol); ++ xaeroMapServerID = getInt("settings.protocol.xaero-map-server-id", xaeroMapServerID); ++ } ++ ++ public static boolean extraYggdrasilService = false; ++ public static List extraYggdrasilServiceList = List.of("https://url.with.authlib-injector-yggdrasil"); ++ private static void extraYggdrasilService() { ++ extraYggdrasilService = getBoolean("settings.misc.extra-yggdrasil-service.enable", extraYggdrasilService); ++ extraYggdrasilServiceList = getList("settings.misc.extra-yggdrasil-service.urls", extraYggdrasilServiceList); ++ if (extraYggdrasilService) { ++ } ++ } ++ ++ public static boolean useVanillaRandom = false; ++ private static boolean useVanillaRandomLock = false; ++ private static void useVanillaRandom() { ++ if (!useVanillaRandomLock) { ++ useVanillaRandom = getBoolean("settings.modify.use-vanilla-random", useVanillaRandom); ++ useVanillaRandomLock = true; ++ } ++ } ++ ++ public static boolean updateSuppressionCrashFix = true; ++ private static void updateSuppressionCrashFix() { ++ updateSuppressionCrashFix = getBoolean("settings.modify.fix-update-suppression-crash", updateSuppressionCrashFix); ++ } ++ ++ public static boolean bedrockBreakList = false; ++ private static boolean bedrockBreakListLock = false; ++ private static void bedrockBreakList() { ++ if (!bedrockBreakListLock) { ++ bedrockBreakList = getBoolean("settings.modify.bedrock-break-list", bedrockBreakList); ++ bedrockBreakListLock = true; ++ } ++ } ++ ++ public static boolean syncmaticaProtocol = false; ++ public static boolean syncmaticaQuota = false; ++ public static int syncmaticaQuotaLimit = 40000000; ++ private static void syncmaticaProtocol() { ++ syncmaticaProtocol = getBoolean("settings.protocol.syncmatica.enable", syncmaticaProtocol); ++ syncmaticaQuota = getBoolean("settings.protocol.syncmatica.quota", syncmaticaQuota); ++ syncmaticaQuotaLimit = getInt("settings.protocol.syncmatica.quota-limit", syncmaticaQuotaLimit); ++ if (syncmaticaProtocol) { ++ } ++ } ++ ++ public static boolean disableDistanceCheckForUseItem = false; ++ private static void disableDistanceCheckForUseItem() { ++ disableDistanceCheckForUseItem = getBoolean("settings.modify.disable-distance-check-for-use-item", disableDistanceCheckForUseItem); ++ if (carpetAlternativeBlockPlacement) { ++ disableDistanceCheckForUseItem = true; ++ } ++ } ++ ++ public static boolean noFeatherFallingTrample = false; ++ private static void noFeatherFallingTrample() { ++ noFeatherFallingTrample = getBoolean("settings.modify.no-feather-falling-trample", noFeatherFallingTrample); ++ } ++ ++ public static boolean sharedVillagerDiscounts = false; ++ private static void sharedVillagerDiscounts() { ++ sharedVillagerDiscounts = getBoolean("settings.modify.shared-villager-discounts", sharedVillagerDiscounts); ++ } ++ + public static final class WorldConfig { + + public final String worldName; diff --git a/patches/server/0008-Make-snowball-and-egg-can-knockback-player.patch b/patches/server/0007-Make-snowball-and-egg-can-knockback-player.patch similarity index 63% rename from patches/server/0008-Make-snowball-and-egg-can-knockback-player.patch rename to patches/server/0007-Make-snowball-and-egg-can-knockback-player.patch index 1a3b7e5e..28a099d0 100644 --- a/patches/server/0008-Make-snowball-and-egg-can-knockback-player.patch +++ b/patches/server/0007-Make-snowball-and-egg-can-knockback-player.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make snowball and egg can knockback player diff --git a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java -index 6cded52e4627c2b6073fa221fc6d6583f1b2a96d..faae95a9bb707e40deeca275814213773e3b765d 100644 +index 718e120c9768cf716b32d3d652f53f1dda925168..21f5c59e7e01ffefdb077d1aa9853935a8fa6b0f 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java @@ -3,6 +3,7 @@ package net.minecraft.world.entity.projectile; @@ -30,7 +30,7 @@ index 6cded52e4627c2b6073fa221fc6d6583f1b2a96d..faae95a9bb707e40deeca27581421377 @Override diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java -index 326eb972078e5dd700372c9ba09ea7f8415b144e..2d7f314fc03103face462ac55979ddd78734a339 100644 +index 6fd803f831cab088a67062ce8624b30338771d8e..b3835e66a395cb25e0d11876c87fb83f221d5f57 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java @@ -45,7 +45,14 @@ public class ThrownEgg extends ThrowableItemProjectile { @@ -48,29 +48,3 @@ index 326eb972078e5dd700372c9ba09ea7f8415b144e..2d7f314fc03103face462ac55979ddd7 } @Override -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index d6abf25f70f6f5a19787c72e87fddd2801b47def..1fb25e8a21b568864974cc81b452ba062890d593 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -94,7 +94,9 @@ public final class LeavesConfig { - private static void updateConfigVersion(final YamlConfiguration config) { - if (configVersion < CURRENT_CONFIG_VERSION) { - playerCanEditSign = config.getBoolean("settings.player-can-edit-sign", playerCanEditSign); -+ snowballAndEggCanKnockback = config.getBoolean("settings.snowball-and-egg-can-knockback-player", snowballAndEggCanKnockback); - -+ config.set("settings.snowball-and-egg-can-knockback-player", null); - config.set("settings.player-can-edit-sign", null); - } - } -@@ -139,6 +141,11 @@ public final class LeavesConfig { - playerCanEditSign = getBoolean("settings.modify.player-can-edit-sign", playerCanEditSign); - } - -+ public static boolean snowballAndEggCanKnockback = true; -+ private static void snowballAndEggCanKnockback() { -+ snowballAndEggCanKnockback = getBoolean("settings.modify.snowball-and-egg-can-knockback-player", snowballAndEggCanKnockback); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0007-Player-can-edit-sign.patch b/patches/server/0007-Player-can-edit-sign.patch deleted file mode 100644 index f4d57792..00000000 --- a/patches/server/0007-Player-can-edit-sign.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: violetc <58360096+s-yh-china@users.noreply.github.com> -Date: Thu, 27 Jan 2022 20:11:05 +0800 -Subject: [PATCH] Player can edit sign - - -diff --git a/src/main/java/net/minecraft/world/level/block/SignBlock.java b/src/main/java/net/minecraft/world/level/block/SignBlock.java -index 91bb294be2cd8ab3467a62006a5a2751e0bec4ba..4b2b2ce69be485452fd907d8afce1250b730340f 100644 ---- a/src/main/java/net/minecraft/world/level/block/SignBlock.java -+++ b/src/main/java/net/minecraft/world/level/block/SignBlock.java -@@ -76,9 +76,8 @@ public abstract class SignBlock extends BaseEntityBlock implements SimpleWaterlo - public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - ItemStack itemStack = player.getItemInHand(hand); - Item item = itemStack.getItem(); -- Item signBlockEntity = itemStack.getItem(); - SignApplicator var10000; -- if (signBlockEntity instanceof SignApplicator signApplicator) { -+ if (item instanceof SignApplicator signApplicator) { - var10000 = signApplicator; - } else { - var10000 = null; -@@ -86,8 +85,7 @@ public abstract class SignBlock extends BaseEntityBlock implements SimpleWaterlo - - SignApplicator signApplicator2 = var10000; - boolean bl = signApplicator2 != null && player.mayBuild(); -- BlockEntity bl2 = world.getBlockEntity(pos); -- if (bl2 instanceof SignBlockEntity signBlockEntity) { -+ if (world.getBlockEntity(pos) instanceof SignBlockEntity signBlockEntity) { - if (!world.isClientSide) { - boolean bl2 = signBlockEntity.isFacingFrontText(player); - SignText signText = signBlockEntity.getText(bl2); -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 4c290eb2d4abf9e9b923b8d0878f319328b7cf8c..d6abf25f70f6f5a19787c72e87fddd2801b47def 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -93,7 +93,9 @@ public final class LeavesConfig { - - private static void updateConfigVersion(final YamlConfiguration config) { - if (configVersion < CURRENT_CONFIG_VERSION) { -+ playerCanEditSign = config.getBoolean("settings.player-can-edit-sign", playerCanEditSign); - -+ config.set("settings.player-can-edit-sign", null); - } - } - -@@ -132,6 +134,11 @@ public final class LeavesConfig { - return LeavesConfig.config.getString(path, dfl); - } - -+ public static boolean playerCanEditSign = true; -+ private static void playerCanEditSign() { -+ playerCanEditSign = getBoolean("settings.modify.player-can-edit-sign", playerCanEditSign); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0009-Fakeplayer-support.patch b/patches/server/0008-Fakeplayer-support.patch similarity index 96% rename from patches/server/0009-Fakeplayer-support.patch rename to patches/server/0008-Fakeplayer-support.patch index ad573608..c32e7a05 100644 --- a/patches/server/0009-Fakeplayer-support.patch +++ b/patches/server/0008-Fakeplayer-support.patch @@ -236,19 +236,20 @@ index ea056babe2f8123f20dc608d8a636da1de634b8c..7856337718f62b1bf4df52264e677405 } // Water Animals diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 1fb25e8a21b568864974cc81b452ba062890d593..816d78268db3d0be0a70ff3c78e74b520f9b525e 100644 +index 62d8bbd0b2638c725b4c5644a2d5063460fa25c9..b71496a3c0d9f9d69dadb652e2f35c09cf906bc0 100644 --- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java +++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -7,6 +7,8 @@ import org.bukkit.Bukkit; +@@ -7,6 +7,9 @@ import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.YamlConfiguration; +import top.leavesmc.leaves.bot.BotCommand; +import top.leavesmc.leaves.bot.agent.Actions; ++import top.leavesmc.leaves.util.MathUtils; import java.io.File; import java.lang.reflect.InvocationTargetException; -@@ -65,6 +67,11 @@ public final class LeavesConfig { +@@ -66,6 +69,11 @@ public final class LeavesConfig { LeavesConfig.load(config); commands = new HashMap<>(); @@ -260,60 +261,6 @@ index 1fb25e8a21b568864974cc81b452ba062890d593..816d78268db3d0be0a70ff3c78e74b52 } public static void load(final YamlConfiguration config) { -@@ -95,9 +102,12 @@ public final class LeavesConfig { - if (configVersion < CURRENT_CONFIG_VERSION) { - playerCanEditSign = config.getBoolean("settings.player-can-edit-sign", playerCanEditSign); - snowballAndEggCanKnockback = config.getBoolean("settings.snowball-and-egg-can-knockback-player", snowballAndEggCanKnockback); -+ fakeplayerSupport = config.getBoolean("settings.fakeplayer.enable", fakeplayerSupport); -+ unableFakeplayerNames = (List) config.getList("settings.fakeplayer.unable-fakeplayer-names", unableFakeplayerNames); - - config.set("settings.snowball-and-egg-can-knockback-player", null); - config.set("settings.player-can-edit-sign", null); -+ config.set("settings.fakeplayer", null); - } - } - -@@ -136,6 +146,12 @@ public final class LeavesConfig { - return LeavesConfig.config.getString(path, dfl); - } - -+ -+ static List getList(final String path, final List def) { -+ LeavesConfig.config.addDefault(path, def); -+ return (List) LeavesConfig.config.getList(path, config.getList(path)); -+ } -+ - public static boolean playerCanEditSign = true; - private static void playerCanEditSign() { - playerCanEditSign = getBoolean("settings.modify.player-can-edit-sign", playerCanEditSign); -@@ -146,6 +162,27 @@ public final class LeavesConfig { - snowballAndEggCanKnockback = getBoolean("settings.modify.snowball-and-egg-can-knockback-player", snowballAndEggCanKnockback); - } - -+ public static boolean fakeplayerSupport = true; -+ public static List unableFakeplayerNames = List.of("player-name"); -+ public static int fakeplayerLimit = 10; -+ public static String fakeplayerPrefix = ""; -+ public static String fakeplayerSuffix = ""; -+ public static boolean alwaysSendFakeplayerData = true; -+ public static boolean fakeplayerResident = false; -+ public static boolean openFakeplayerInventory = false; -+ public static boolean fakeplayerSkipSleep = false; -+ private static void fakeplayer() { -+ fakeplayerSupport = getBoolean("settings.modify.fakeplayer.enable", fakeplayerSupport); -+ unableFakeplayerNames = getList("settings.modify.fakeplayer.unable-fakeplayer-names", unableFakeplayerNames); -+ fakeplayerLimit = getInt("settings.modify.fakeplayer.limit", fakeplayerLimit); -+ fakeplayerPrefix = getString("settings.modify.fakeplayer.prefix", fakeplayerPrefix); -+ fakeplayerSuffix = getString("settings.modify.fakeplayer.suffix", fakeplayerSuffix); -+ alwaysSendFakeplayerData = getBoolean("settings.modify.fakeplayer.always-send-data", alwaysSendFakeplayerData); -+ fakeplayerResident = getBoolean("settings.modify.fakeplayer.resident-fakeplayer", fakeplayerResident); -+ openFakeplayerInventory = getBoolean("settings.modify.fakeplayer.open-fakeplayer-inventory", openFakeplayerInventory); -+ fakeplayerSkipSleep = getBoolean("settings.modify.fakeplayer.skip-sleep-check", fakeplayerSkipSleep); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/src/main/java/top/leavesmc/leaves/bot/BotCommand.java b/src/main/java/top/leavesmc/leaves/bot/BotCommand.java new file mode 100644 index 0000000000000000000000000000000000000000..9227559cd0aefe82d7f53a79b464be1d064b3ae1 diff --git a/patches/server/0009-Make-shears-in-dispenser-can-unlimited-use.patch b/patches/server/0009-Make-shears-in-dispenser-can-unlimited-use.patch new file mode 100644 index 00000000..dcc93aa3 --- /dev/null +++ b/patches/server/0009-Make-shears-in-dispenser-can-unlimited-use.patch @@ -0,0 +1,19 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: violetc <58360096+s-yh-china@users.noreply.github.com> +Date: Sun, 27 Feb 2022 14:07:57 +0800 +Subject: [PATCH] Make shears in dispenser can unlimited use + + +diff --git a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java +index 9b0049dfeaec9b688bf276f2ac2b18943b5696b2..8a7733f83c2ba0c73069357184d77eee57959a07 100644 +--- a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java ++++ b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java +@@ -63,7 +63,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior { + BlockPos blockposition = pointer.getPos().relative((Direction) pointer.getBlockState().getValue(DispenserBlock.FACING)); + + this.setSuccess(ShearsDispenseItemBehavior.tryShearBeehive(worldserver, blockposition) || ShearsDispenseItemBehavior.tryShearLivingEntity(worldserver, blockposition, bukkitBlock, craftItem)); // CraftBukkit +- if (this.isSuccess() && stack.hurt(1, worldserver.getRandom(), (ServerPlayer) null)) { ++ if (this.isSuccess() && stack.hurt(1, worldserver.getRandom(), (ServerPlayer) null) && !top.leavesmc.leaves.LeavesConfig.shearsInDispenserCanZeroAmount) { // Leaves - Make shears in dispenser can unlimited use + stack.setCount(0); + } + } diff --git a/patches/server/0010-Make-shears-in-dispenser-can-unlimited-use.patch b/patches/server/0010-Make-shears-in-dispenser-can-unlimited-use.patch deleted file mode 100644 index b5c0373e..00000000 --- a/patches/server/0010-Make-shears-in-dispenser-can-unlimited-use.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: violetc <58360096+s-yh-china@users.noreply.github.com> -Date: Sun, 27 Feb 2022 14:07:57 +0800 -Subject: [PATCH] Make shears in dispenser can unlimited use - - -diff --git a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java -index 9b0049dfeaec9b688bf276f2ac2b18943b5696b2..8a7733f83c2ba0c73069357184d77eee57959a07 100644 ---- a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java -+++ b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java -@@ -63,7 +63,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior { - BlockPos blockposition = pointer.getPos().relative((Direction) pointer.getBlockState().getValue(DispenserBlock.FACING)); - - this.setSuccess(ShearsDispenseItemBehavior.tryShearBeehive(worldserver, blockposition) || ShearsDispenseItemBehavior.tryShearLivingEntity(worldserver, blockposition, bukkitBlock, craftItem)); // CraftBukkit -- if (this.isSuccess() && stack.hurt(1, worldserver.getRandom(), (ServerPlayer) null)) { -+ if (this.isSuccess() && stack.hurt(1, worldserver.getRandom(), (ServerPlayer) null) && !top.leavesmc.leaves.LeavesConfig.shearsInDispenserCanZeroAmount) { // Leaves - Make shears in dispenser can unlimited use - stack.setCount(0); - } - } -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 816d78268db3d0be0a70ff3c78e74b520f9b525e..875e4842274388c098e36b1ec0b9c6d69389646b 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -104,10 +104,12 @@ public final class LeavesConfig { - snowballAndEggCanKnockback = config.getBoolean("settings.snowball-and-egg-can-knockback-player", snowballAndEggCanKnockback); - fakeplayerSupport = config.getBoolean("settings.fakeplayer.enable", fakeplayerSupport); - unableFakeplayerNames = (List) config.getList("settings.fakeplayer.unable-fakeplayer-names", unableFakeplayerNames); -+ shearsInDispenserCanZeroAmount = config.getBoolean("settings.shears-in-dispenser-can-zero-amount", shearsInDispenserCanZeroAmount); - - config.set("settings.snowball-and-egg-can-knockback-player", null); - config.set("settings.player-can-edit-sign", null); - config.set("settings.fakeplayer", null); -+ config.set("settings.shears-in-dispenser-can-zero-amount", null); - } - } - -@@ -183,6 +185,11 @@ public final class LeavesConfig { - fakeplayerSkipSleep = getBoolean("settings.modify.fakeplayer.skip-sleep-check", fakeplayerSkipSleep); - } - -+ public static boolean shearsInDispenserCanZeroAmount = false; -+ private static void shearsInDispenserCanZeroAmount() { -+ shearsInDispenserCanZeroAmount = getBoolean("settings.modify.shears-in-dispenser-can-zero-amount", shearsInDispenserCanZeroAmount); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0011-Redstone-Shears-Wrench.patch b/patches/server/0010-Redstone-Shears-Wrench.patch similarity index 73% rename from patches/server/0011-Redstone-Shears-Wrench.patch rename to patches/server/0010-Redstone-Shears-Wrench.patch index c0e89704..5da29f93 100644 --- a/patches/server/0011-Redstone-Shears-Wrench.patch +++ b/patches/server/0010-Redstone-Shears-Wrench.patch @@ -98,33 +98,3 @@ index a6ebb08a8f9681fd3a35de5d0e268f320e31ce1a..7c3c3a28a95c58caa83e283cdbb472b2 + } + // Leaves end - shears wrench } -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 875e4842274388c098e36b1ec0b9c6d69389646b..c763ad196bb736b84dc76678267af4a91090ea30 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -105,11 +105,13 @@ public final class LeavesConfig { - fakeplayerSupport = config.getBoolean("settings.fakeplayer.enable", fakeplayerSupport); - unableFakeplayerNames = (List) config.getList("settings.fakeplayer.unable-fakeplayer-names", unableFakeplayerNames); - shearsInDispenserCanZeroAmount = config.getBoolean("settings.shears-in-dispenser-can-zero-amount", shearsInDispenserCanZeroAmount); -+ redstoneShearsWrench = config.getBoolean("settings.redstone-shears-wrench", redstoneShearsWrench); - - config.set("settings.snowball-and-egg-can-knockback-player", null); - config.set("settings.player-can-edit-sign", null); - config.set("settings.fakeplayer", null); - config.set("settings.shears-in-dispenser-can-zero-amount", null); -+ config.set("settings.redstone-shears-wrench", null); - } - } - -@@ -190,6 +192,11 @@ public final class LeavesConfig { - shearsInDispenserCanZeroAmount = getBoolean("settings.modify.shears-in-dispenser-can-zero-amount", shearsInDispenserCanZeroAmount); - } - -+ public static boolean redstoneShearsWrench = true; -+ private static void redstoneShearsWrench() { -+ redstoneShearsWrench = getBoolean("settings.modify.redstone-shears-wrench", redstoneShearsWrench); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0012-Add-isShrink-to-EntityResurrectEvent.patch b/patches/server/0011-Add-isShrink-to-EntityResurrectEvent.patch similarity index 100% rename from patches/server/0012-Add-isShrink-to-EntityResurrectEvent.patch rename to patches/server/0011-Add-isShrink-to-EntityResurrectEvent.patch diff --git a/patches/server/0012-Budding-Amethyst-can-push-by-piston.patch b/patches/server/0012-Budding-Amethyst-can-push-by-piston.patch new file mode 100644 index 00000000..f4ae6aa3 --- /dev/null +++ b/patches/server/0012-Budding-Amethyst-can-push-by-piston.patch @@ -0,0 +1,19 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: violetc <58360096+s-yh-china@users.noreply.github.com> +Date: Sun, 3 Apr 2022 11:31:04 +0800 +Subject: [PATCH] Budding Amethyst can push by piston + + +diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java +index b71496a3c0d9f9d69dadb652e2f35c09cf906bc0..da2fc9a9e1ff9d8c8bcb1e325916ae0eaff29b1e 100644 +--- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java ++++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java +@@ -184,7 +184,7 @@ public final class LeavesConfig { + + public static boolean buddingAmethystCanPushByPiston = false; + private static void buddingAmethystCanPushByPiston() { +- buddingAmethystCanPushByPiston = getBoolean("settings.modify.budding-amethyst-can-push-by-piston", buddingAmethystCanPushByPiston); ++ buddingAmethystCanPushByPiston = getBoolean("settings.modify.budding-amethyst-can-push-by-piston", buddingAmethystCanPushByPiston); // void + } + + public static boolean spectatorDontGetAdvancement = false; diff --git a/patches/server/0013-Budding-Amethyst-can-push-by-piston.patch b/patches/server/0013-Budding-Amethyst-can-push-by-piston.patch deleted file mode 100644 index 4478c818..00000000 --- a/patches/server/0013-Budding-Amethyst-can-push-by-piston.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: violetc <58360096+s-yh-china@users.noreply.github.com> -Date: Sun, 3 Apr 2022 11:31:04 +0800 -Subject: [PATCH] Budding Amethyst can push by piston - - -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index c763ad196bb736b84dc76678267af4a91090ea30..5deb90e39bbdf722f63be6abdad28aca46cb1458 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -106,12 +106,14 @@ public final class LeavesConfig { - unableFakeplayerNames = (List) config.getList("settings.fakeplayer.unable-fakeplayer-names", unableFakeplayerNames); - shearsInDispenserCanZeroAmount = config.getBoolean("settings.shears-in-dispenser-can-zero-amount", shearsInDispenserCanZeroAmount); - redstoneShearsWrench = config.getBoolean("settings.redstone-shears-wrench", redstoneShearsWrench); -+ buddingAmethystCanPushByPiston = config.getBoolean("settings.budding-amethyst-can-push-by-piston", buddingAmethystCanPushByPiston); - - config.set("settings.snowball-and-egg-can-knockback-player", null); - config.set("settings.player-can-edit-sign", null); - config.set("settings.fakeplayer", null); - config.set("settings.shears-in-dispenser-can-zero-amount", null); - config.set("settings.redstone-shears-wrench", null); -+ config.set("settings.budding-amethyst-can-push-by-piston", null); - } - } - -@@ -197,6 +199,11 @@ public final class LeavesConfig { - redstoneShearsWrench = getBoolean("settings.modify.redstone-shears-wrench", redstoneShearsWrench); - } - -+ public static boolean buddingAmethystCanPushByPiston = false; -+ private static void buddingAmethystCanPushByPiston() { -+ buddingAmethystCanPushByPiston = getBoolean("settings.modify.budding-amethyst-can-push-by-piston", buddingAmethystCanPushByPiston); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0013-Spectator-dont-get-Advancement.patch b/patches/server/0013-Spectator-dont-get-Advancement.patch new file mode 100644 index 00000000..0ee5cd7a --- /dev/null +++ b/patches/server/0013-Spectator-dont-get-Advancement.patch @@ -0,0 +1,30 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: violetc <58360096+s-yh-china@users.noreply.github.com> +Date: Sat, 25 Jun 2022 18:04:35 +0800 +Subject: [PATCH] Spectator dont get Advancement + + +diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java +index 7fc87841fd72fc9b5bca4fbdffd378c7b75920e1..fd9e85dab7c511873824cac56a270ff435792292 100644 +--- a/src/main/java/net/minecraft/server/PlayerAdvancements.java ++++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java +@@ -43,6 +43,7 @@ import net.minecraft.server.level.ServerPlayer; + import net.minecraft.server.players.PlayerList; + import net.minecraft.util.datafix.DataFixTypes; + import net.minecraft.world.level.GameRules; ++import net.minecraft.world.level.GameType; + import org.slf4j.Logger; + import top.leavesmc.leaves.bot.ServerBot; + +@@ -230,6 +231,11 @@ public class PlayerAdvancements { + return false; + } + // Leaves end - bot can't get advancement ++ // Leaves start - spectator don't get advancement ++ if (top.leavesmc.leaves.LeavesConfig.spectatorDontGetAdvancement && player.gameMode.getGameModeForPlayer() == GameType.SPECTATOR) { ++ return false; ++ } ++ // Leaves end - spectator don't get advancement + boolean flag = false; + AdvancementProgress advancementprogress = this.getOrStartProgress(advancement); + boolean flag1 = advancementprogress.isDone(); diff --git a/patches/server/0014-Spectator-dont-get-Advancement.patch b/patches/server/0014-Spectator-dont-get-Advancement.patch deleted file mode 100644 index 636b6568..00000000 --- a/patches/server/0014-Spectator-dont-get-Advancement.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: violetc <58360096+s-yh-china@users.noreply.github.com> -Date: Sat, 25 Jun 2022 18:04:35 +0800 -Subject: [PATCH] Spectator dont get Advancement - - -diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java -index a1ce0cce055ad5c92b0f20760471795f08f0c886..6a5025e54c4bf4396f1f18a81d9db912848a2545 100644 ---- a/src/main/java/net/minecraft/server/PlayerAdvancements.java -+++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java -@@ -43,6 +43,7 @@ import net.minecraft.server.level.ServerPlayer; - import net.minecraft.server.players.PlayerList; - import net.minecraft.util.datafix.DataFixTypes; - import net.minecraft.world.level.GameRules; -+import net.minecraft.world.level.GameType; - import org.slf4j.Logger; - import top.leavesmc.leaves.bot.ServerBot; - -@@ -230,6 +231,11 @@ public class PlayerAdvancements { - return false; - } - // Leaves end - bot can't get advancement -+ // Leaves start - spectator don't get advancement -+ if (top.leavesmc.leaves.LeavesConfig.spectatorDontGetAdvancement && player.gameMode.getGameModeForPlayer() == GameType.SPECTATOR) { -+ return false; -+ } -+ // Leaves end - spectator don't get advancement - boolean flag = false; - AdvancementProgress advancementprogress = this.getOrStartProgress(advancement); - boolean flag1 = advancementprogress.isDone(); -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 5deb90e39bbdf722f63be6abdad28aca46cb1458..6ef5bae104cff51ada4efc631b93067067c71941 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -107,6 +107,7 @@ public final class LeavesConfig { - shearsInDispenserCanZeroAmount = config.getBoolean("settings.shears-in-dispenser-can-zero-amount", shearsInDispenserCanZeroAmount); - redstoneShearsWrench = config.getBoolean("settings.redstone-shears-wrench", redstoneShearsWrench); - buddingAmethystCanPushByPiston = config.getBoolean("settings.budding-amethyst-can-push-by-piston", buddingAmethystCanPushByPiston); -+ spectatorDontGetAdvancement = config.getBoolean("settings.spectator-dont-get-advancement", spectatorDontGetAdvancement); - - config.set("settings.snowball-and-egg-can-knockback-player", null); - config.set("settings.player-can-edit-sign", null); -@@ -114,6 +115,7 @@ public final class LeavesConfig { - config.set("settings.shears-in-dispenser-can-zero-amount", null); - config.set("settings.redstone-shears-wrench", null); - config.set("settings.budding-amethyst-can-push-by-piston", null); -+ config.set("settings.spectator-dont-get-advancement", null); - } - } - -@@ -203,6 +205,11 @@ public final class LeavesConfig { - private static void buddingAmethystCanPushByPiston() { - buddingAmethystCanPushByPiston = getBoolean("settings.modify.budding-amethyst-can-push-by-piston", buddingAmethystCanPushByPiston); - } -+ -+ public static boolean spectatorDontGetAdvancement = false; -+ private static void spectatorDontGetAdvancement() { -+ spectatorDontGetAdvancement = getBoolean("settings.modify.spectator-dont-get-advancement", spectatorDontGetAdvancement); -+ } - - public static final class WorldConfig { - diff --git a/patches/server/0014-Stick-can-change-ArmorStand-arm-status.patch b/patches/server/0014-Stick-can-change-ArmorStand-arm-status.patch new file mode 100644 index 00000000..e24f8766 --- /dev/null +++ b/patches/server/0014-Stick-can-change-ArmorStand-arm-status.patch @@ -0,0 +1,23 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: violetc <58360096+s-yh-china@users.noreply.github.com> +Date: Sat, 25 Jun 2022 19:54:23 +0800 +Subject: [PATCH] Stick can change ArmorStand arm status + + +diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +index 8a8b9e8983be1acad66ad875c901be5bbdeabb1f..89f3466212800b5fac8a57d70fbc5a3028fbb29d 100644 +--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java ++++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +@@ -385,6 +385,12 @@ public class ArmorStand extends LivingEntity { + return InteractionResult.SUCCESS; + } + } else { ++ // Leaves start - stick can change ArmorStand arm status ++ if (top.leavesmc.leaves.LeavesConfig.stickChangeArmorStandArmStatus && itemstack.is(Items.STICK) && player.isShiftKeyDown()) { ++ setShowArms(!isShowArms()); ++ } ++ // Leaves end - stick can change ArmorStand arm status ++ + if (this.isDisabled(enumitemslot)) { + return InteractionResult.FAIL; + } diff --git a/patches/server/0016-Fix-tripwire-update.patch b/patches/server/0015-Fix-tripwire-update.patch similarity index 100% rename from patches/server/0016-Fix-tripwire-update.patch rename to patches/server/0015-Fix-tripwire-update.patch diff --git a/patches/server/0015-Stick-can-change-ArmorStand-arm-status.patch b/patches/server/0015-Stick-can-change-ArmorStand-arm-status.patch deleted file mode 100644 index 39e50fb1..00000000 --- a/patches/server/0015-Stick-can-change-ArmorStand-arm-status.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: violetc <58360096+s-yh-china@users.noreply.github.com> -Date: Sat, 25 Jun 2022 19:54:23 +0800 -Subject: [PATCH] Stick can change ArmorStand arm status - - -diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index 3677dd991ae73428984e62e4d6fb757317987887..3b488949ba5cd7465e4de3955e5430fc710322cc 100644 ---- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -385,6 +385,12 @@ public class ArmorStand extends LivingEntity { - return InteractionResult.SUCCESS; - } - } else { -+ // Leaves start - stick can change ArmorStand arm status -+ if (top.leavesmc.leaves.LeavesConfig.stickChangeArmorStandArmStatus && itemstack.is(Items.STICK) && player.isShiftKeyDown()) { -+ setShowArms(!isShowArms()); -+ } -+ // Leaves end - stick can change ArmorStand arm status -+ - if (this.isDisabled(enumitemslot)) { - return InteractionResult.FAIL; - } -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 6ef5bae104cff51ada4efc631b93067067c71941..6fc915534c172cc7d2b9eea806b23f54018b78ce 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -108,6 +108,7 @@ public final class LeavesConfig { - redstoneShearsWrench = config.getBoolean("settings.redstone-shears-wrench", redstoneShearsWrench); - buddingAmethystCanPushByPiston = config.getBoolean("settings.budding-amethyst-can-push-by-piston", buddingAmethystCanPushByPiston); - spectatorDontGetAdvancement = config.getBoolean("settings.spectator-dont-get-advancement", spectatorDontGetAdvancement); -+ stickChangeArmorStandArmStatus = config.getBoolean("settings.stick-change-armorstand-arm-status", stickChangeArmorStandArmStatus); - - config.set("settings.snowball-and-egg-can-knockback-player", null); - config.set("settings.player-can-edit-sign", null); -@@ -116,6 +117,7 @@ public final class LeavesConfig { - config.set("settings.redstone-shears-wrench", null); - config.set("settings.budding-amethyst-can-push-by-piston", null); - config.set("settings.spectator-dont-get-advancement", null); -+ config.set("settings.stick-change-armorstand-arm-status", null); - } - } - -@@ -210,6 +212,11 @@ public final class LeavesConfig { - private static void spectatorDontGetAdvancement() { - spectatorDontGetAdvancement = getBoolean("settings.modify.spectator-dont-get-advancement", spectatorDontGetAdvancement); - } -+ -+ public static boolean stickChangeArmorStandArmStatus = true; -+ private static void stickChangeArmorStandHasArm() { -+ stickChangeArmorStandArmStatus = getBoolean("settings.modify.stick-change-armorstand-arm-status", stickChangeArmorStandArmStatus); -+ } - - public static final class WorldConfig { - diff --git a/patches/server/0017-No-chat-sign.patch b/patches/server/0016-No-chat-sign.patch similarity index 83% rename from patches/server/0017-No-chat-sign.patch rename to patches/server/0016-No-chat-sign.patch index efd38813..f2321260 100644 --- a/patches/server/0017-No-chat-sign.patch +++ b/patches/server/0016-No-chat-sign.patch @@ -167,39 +167,3 @@ index 4eaf7ae37557075ebe735827861507bee6b61eed..794386d40e2f53f2707b401907af5bb7 } // CraftBukkit start -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 6fc915534c172cc7d2b9eea806b23f54018b78ce..ce3c88c1cdb58f63aecc87b9900f8cf7c6144908 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -109,6 +109,7 @@ public final class LeavesConfig { - buddingAmethystCanPushByPiston = config.getBoolean("settings.budding-amethyst-can-push-by-piston", buddingAmethystCanPushByPiston); - spectatorDontGetAdvancement = config.getBoolean("settings.spectator-dont-get-advancement", spectatorDontGetAdvancement); - stickChangeArmorStandArmStatus = config.getBoolean("settings.stick-change-armorstand-arm-status", stickChangeArmorStandArmStatus); -+ noChatSign = config.getBoolean("settings.no-chat-sign", noChatSign); - - config.set("settings.snowball-and-egg-can-knockback-player", null); - config.set("settings.player-can-edit-sign", null); -@@ -118,6 +119,7 @@ public final class LeavesConfig { - config.set("settings.budding-amethyst-can-push-by-piston", null); - config.set("settings.spectator-dont-get-advancement", null); - config.set("settings.stick-change-armorstand-arm-status", null); -+ config.set("settings.no-chat-sign", null); - } - } - -@@ -217,6 +219,15 @@ public final class LeavesConfig { - private static void stickChangeArmorStandHasArm() { - stickChangeArmorStandArmStatus = getBoolean("settings.modify.stick-change-armorstand-arm-status", stickChangeArmorStandArmStatus); - } -+ -+ public static boolean noChatSign = true; -+ private static void noChatSign() { -+ if (LeavesConfig.config.contains("settings.modify.no-chat-sign")) { -+ noChatSign = LeavesConfig.config.getBoolean("settings.modify.no-chat-sign"); -+ LeavesConfig.config.set("settings.modify.no-chat-sign", null); -+ } -+ noChatSign = getBoolean("settings.misc.no-chat-sign", noChatSign); -+ } - - public static final class WorldConfig { - diff --git a/patches/server/0018-Optimize-mob-spawning.patch b/patches/server/0017-Optimize-mob-spawning.patch similarity index 65% rename from patches/server/0018-Optimize-mob-spawning.patch rename to patches/server/0017-Optimize-mob-spawning.patch index a85c6fb6..de72e62c 100644 --- a/patches/server/0018-Optimize-mob-spawning.patch +++ b/patches/server/0017-Optimize-mob-spawning.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Optimize mob spawning This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 15d266fc97eb73338f4f6fb2cfe25d6861e79810..70773c525bcf33d4d4764ce4a16dedddc423b02b 100644 +index 089dd93d4cd4c1f72e63c4944b3b82c1e2ba732d..73bf34c3ce7e55e9fd15a3af90bf107e85d764b0 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -173,7 +173,7 @@ public final class NaturalSpawner { @@ -19,29 +19,15 @@ index 15d266fc97eb73338f4f6fb2cfe25d6861e79810..70773c525bcf33d4d4764ce4a16deddd // CraftBukkit end Objects.requireNonNull(info); diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index ce3c88c1cdb58f63aecc87b9900f8cf7c6144908..dfce8514d0ea36d24bd4168856d6f10f68f4e30c 100644 +index da2fc9a9e1ff9d8c8bcb1e325916ae0eaff29b1e..732d6c7f5c87714738ae49544ec82c3a674e1c53 100644 --- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java +++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -228,7 +228,21 @@ public final class LeavesConfig { - } +@@ -206,7 +206,7 @@ public final class LeavesConfig { noChatSign = getBoolean("settings.misc.no-chat-sign", noChatSign); } -- -+ -+ public static boolean asyncMobSpawning = false; -+ private static boolean asyncMobSpawningLock = false; -+ private static void asyncMobSpawning() { -+ if (!asyncMobSpawningLock) { -+ asyncMobSpawning = getBoolean("settings.performance.async-mob-spawning", asyncMobSpawning); -+ asyncMobSpawningLock = true; -+ } -+ -+ if (asyncMobSpawning) { -+ asyncMobSpawning = false; -+ LeavesLogger.LOGGER.severe("Async MobSpawning is updating, it can't work"); -+ } -+ } -+ - public static final class WorldConfig { - public final String worldName; +- public static boolean asyncMobSpawning = false; ++ public static boolean asyncMobSpawning = false; // void + private static boolean asyncMobSpawningLock = false; + private static void asyncMobSpawning() { + if (!asyncMobSpawningLock) { diff --git a/patches/server/0019-Dont-send-useless-entity-packets.patch b/patches/server/0018-Dont-send-useless-entity-packets.patch similarity index 78% rename from patches/server/0019-Dont-send-useless-entity-packets.patch rename to patches/server/0018-Dont-send-useless-entity-packets.patch index 800b68a8..1af1c078 100644 --- a/patches/server/0019-Dont-send-useless-entity-packets.patch +++ b/patches/server/0018-Dont-send-useless-entity-packets.patch @@ -51,19 +51,3 @@ index 6670e657e08e130f7e0368f418379fd1ece00cdf..bd520b2f298ac7e9210532e7e7aca476 public void removePairing(ServerPlayer player) { this.entity.stopSeenByPlayer(player); player.connection.send(new ClientboundRemoveEntitiesPacket(new int[]{this.entity.getId()})); -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index dfce8514d0ea36d24bd4168856d6f10f68f4e30c..dc9164ecabd5d17020bbd8597a78aac1dce7c362 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -243,6 +243,11 @@ public final class LeavesConfig { - } - } - -+ public static boolean dontSendUselessEntityPackets = true; -+ private static void dontSendUselessEntityPackets() { -+ dontSendUselessEntityPackets = getBoolean("settings.performance.dont-send-useless-entity-packets", dontSendUselessEntityPackets); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0019-Multithreaded-Tracker.patch b/patches/server/0019-Multithreaded-Tracker.patch new file mode 100644 index 00000000..82331e32 --- /dev/null +++ b/patches/server/0019-Multithreaded-Tracker.patch @@ -0,0 +1,20 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: violetc <58360096+s-yh-china@users.noreply.github.com> +Date: Sun, 14 Aug 2022 00:39:45 +0800 +Subject: [PATCH] Multithreaded Tracker + +This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) + +diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java +index 732d6c7f5c87714738ae49544ec82c3a674e1c53..4546a98ae419ff5f647e79455b7d36b21bdb92a8 100644 +--- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java ++++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java +@@ -225,7 +225,7 @@ public final class LeavesConfig { + dontSendUselessEntityPackets = getBoolean("settings.performance.dont-send-useless-entity-packets", dontSendUselessEntityPackets); + } + +- public static boolean asyncEntityTracker = false; ++ public static boolean asyncEntityTracker = false; // void + private static boolean asyncEntityTrackerLock = false; + private static void asyncEntityTracker() { + if (!asyncEntityTrackerLock) { diff --git a/patches/server/0021-Fix-Paper-6045-block-goal-shouldn-t-load-chunks.patch b/patches/server/0020-Fix-Paper-6045-block-goal-shouldn-t-load-chunks.patch similarity index 68% rename from patches/server/0021-Fix-Paper-6045-block-goal-shouldn-t-load-chunks.patch rename to patches/server/0020-Fix-Paper-6045-block-goal-shouldn-t-load-chunks.patch index 43bacc75..33922a42 100644 --- a/patches/server/0021-Fix-Paper-6045-block-goal-shouldn-t-load-chunks.patch +++ b/patches/server/0020-Fix-Paper-6045-block-goal-shouldn-t-load-chunks.patch @@ -17,19 +17,3 @@ index 34f319ad09276c6f68dde449c79351de0d7d86f5..bbca34e70b1ee88ac77b0d8e319eedbf if (this.mob.isWithinRestriction(mutableBlockPos) && this.isValidTarget(this.mob.level(), mutableBlockPos)) { this.blockPos = mutableBlockPos; setTargetPosition(mutableBlockPos.immutable()); // Paper -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 4abc997fbe641f9c97b31fb88314230f7eb9af04..b2e135eac3c1bc7c9486a9e38f162bd3b68c24bb 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -262,6 +262,11 @@ public final class LeavesConfig { - } - } - -+ public static boolean fixPaper6045 = true; -+ private static void fixPaper6045() { -+ fixPaper6045 = getBoolean("settings.performance.fix.fix-paper-6045", fixPaper6045); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0020-Multithreaded-Tracker.patch b/patches/server/0020-Multithreaded-Tracker.patch deleted file mode 100644 index f8e92ba2..00000000 --- a/patches/server/0020-Multithreaded-Tracker.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: violetc <58360096+s-yh-china@users.noreply.github.com> -Date: Sun, 14 Aug 2022 00:39:45 +0800 -Subject: [PATCH] Multithreaded Tracker - -This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) - -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index dc9164ecabd5d17020bbd8597a78aac1dce7c362..4abc997fbe641f9c97b31fb88314230f7eb9af04 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -248,6 +248,20 @@ public final class LeavesConfig { - dontSendUselessEntityPackets = getBoolean("settings.performance.dont-send-useless-entity-packets", dontSendUselessEntityPackets); - } - -+ public static boolean asyncEntityTracker = false; -+ private static boolean asyncEntityTrackerLock = false; -+ private static void asyncEntityTracker() { -+ if (!asyncEntityTrackerLock) { -+ asyncEntityTracker = getBoolean("settings.performance.async-entity-tracker", asyncEntityTracker); -+ asyncEntityTrackerLock = true; -+ } -+ -+ if (asyncEntityTracker) { -+ asyncEntityTracker = false; -+ LeavesLogger.LOGGER.severe("Async EntityTracker is updating, it can't work"); -+ } -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0022-Optimize-entity-coordinate-key.patch b/patches/server/0021-Optimize-entity-coordinate-key.patch similarity index 71% rename from patches/server/0022-Optimize-entity-coordinate-key.patch rename to patches/server/0021-Optimize-entity-coordinate-key.patch index 5d0e5132..519c23e6 100644 --- a/patches/server/0022-Optimize-entity-coordinate-key.patch +++ b/patches/server/0021-Optimize-entity-coordinate-key.patch @@ -37,20 +37,3 @@ index 39a65a784c9051d183a62291c01240034c86dd70..72b35cbd1840141c7654357c3c3bf446 private ChunkPos chunkPosition; private Vec3 deltaMovement; private float yRot; -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index b2e135eac3c1bc7c9486a9e38f162bd3b68c24bb..a3790fb532642a3dd5f0f31503733279a86ed20e 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -267,6 +267,12 @@ public final class LeavesConfig { - fixPaper6045 = getBoolean("settings.performance.fix.fix-paper-6045", fixPaper6045); - } - -+ public static boolean optimizeEntityCoordinateKey = true; -+ private static void optimizeEntityCoordinateKey() { -+ optimizeEntityCoordinateKey = getBoolean("settings.performance.optimize-entity-coordinate-key", optimizeEntityCoordinateKey); -+ } -+ -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0023-Optimize-suffocation.patch b/patches/server/0022-Optimize-suffocation.patch similarity index 70% rename from patches/server/0023-Optimize-suffocation.patch rename to patches/server/0022-Optimize-suffocation.patch index 78b006c9..13129e84 100644 --- a/patches/server/0023-Optimize-suffocation.patch +++ b/patches/server/0022-Optimize-suffocation.patch @@ -34,18 +34,3 @@ index 67bf9ff852e190d89c877b86d9bfee07d6282430..903299fd5357b9955538aa20ec790672 @Override public boolean hurt(DamageSource source, float amount) { if (this.isInvulnerableTo(source)) { -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index a3790fb532642a3dd5f0f31503733279a86ed20e..a4413e18f98c008bc4456af4349041294f90b22c 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -272,6 +272,10 @@ public final class LeavesConfig { - optimizeEntityCoordinateKey = getBoolean("settings.performance.optimize-entity-coordinate-key", optimizeEntityCoordinateKey); - } - -+ public static boolean enableSuffocationOptimization = true; -+ private static void enableSuffocationOptimization() { -+ enableSuffocationOptimization = getBoolean("settings.performance.enable-suffocation-optimization", enableSuffocationOptimization); -+ } - - public static final class WorldConfig { - diff --git a/patches/server/0024-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch b/patches/server/0023-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch similarity index 90% rename from patches/server/0024-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch rename to patches/server/0023-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch index 43005d15..3f363b62 100644 --- a/patches/server/0024-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch +++ b/patches/server/0023-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch @@ -141,19 +141,3 @@ index 4f0a2c9b352f5824ec0c30d0f0af0fe16320aea3..a0693f18c04eb11cf010700499b03024 public boolean isInWorldBounds(BlockPos pos) { return pos.isInsideBuildHeightAndWorldBoundsHorizontal(this); // Paper - use better/optimized check } -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index a4413e18f98c008bc4456af4349041294f90b22c..6a0cade17ef3ee3aae50e9c2f174ebd631b8bd73 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -277,6 +277,11 @@ public final class LeavesConfig { - enableSuffocationOptimization = getBoolean("settings.performance.enable-suffocation-optimization", enableSuffocationOptimization); - } - -+ public static boolean entityStripRaytracing = true; -+ private static void entityStripRaytracing() { -+ entityStripRaytracing = getBoolean("settings.performance.strip-raytracing-for-entity", entityStripRaytracing); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0025-Only-check-for-spooky-season-once-an-hour.patch b/patches/server/0024-Only-check-for-spooky-season-once-an-hour.patch similarity index 69% rename from patches/server/0025-Only-check-for-spooky-season-once-an-hour.patch rename to patches/server/0024-Only-check-for-spooky-season-once-an-hour.patch index 271dd747..0d3afa3c 100644 --- a/patches/server/0025-Only-check-for-spooky-season-once-an-hour.patch +++ b/patches/server/0024-Only-check-for-spooky-season-once-an-hour.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Only check for spooky season once an hour This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index f5efdf59617d43de18a2267351fa784c0be3ae83..3af66e566c7e154eda362a564c630b5cb4ac24b8 100644 +index 940cd932e74bc2e6754186731d7aa6f10d56eb68..bbab018a5fb58a56a8083f570d621bba11f9ca9a 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -251,13 +251,30 @@ public class Bat extends AmbientCreature { @@ -44,19 +44,3 @@ index f5efdf59617d43de18a2267351fa784c0be3ae83..3af66e566c7e154eda362a564c630b5c @Override protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 6a0cade17ef3ee3aae50e9c2f174ebd631b8bd73..be15c7782599d957a75917a949837b043040b4be 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -282,6 +282,11 @@ public final class LeavesConfig { - entityStripRaytracing = getBoolean("settings.performance.strip-raytracing-for-entity", entityStripRaytracing); - } - -+ public static boolean checkSpookySeasonOnceAnHour = true; -+ private static void checkSpookySeasonOnceAnHour() { -+ checkSpookySeasonOnceAnHour = getBoolean("settings.performance.check-spooky-season-once-an-hour", checkSpookySeasonOnceAnHour); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0026-Move-ThreadUnsafeRandom-Initialization.patch b/patches/server/0025-Move-ThreadUnsafeRandom-Initialization.patch similarity index 100% rename from patches/server/0026-Move-ThreadUnsafeRandom-Initialization.patch rename to patches/server/0025-Move-ThreadUnsafeRandom-Initialization.patch diff --git a/patches/server/0027-Optimize-random-calls-in-chunk-ticking.patch b/patches/server/0026-Optimize-random-calls-in-chunk-ticking.patch similarity index 86% rename from patches/server/0027-Optimize-random-calls-in-chunk-ticking.patch rename to patches/server/0026-Optimize-random-calls-in-chunk-ticking.patch index 0a200664..dfaecf6d 100644 --- a/patches/server/0027-Optimize-random-calls-in-chunk-ticking.patch +++ b/patches/server/0026-Optimize-random-calls-in-chunk-ticking.patch @@ -93,23 +93,3 @@ index 4ff0d2fc9fd76e92e64abd69f2c9e299aa08ac32..cc224af0139a6e3adefd22cbfa0cd519 } // CraftBukkit start -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index be15c7782599d957a75917a949837b043040b4be..e31eb5b9d67c2a03a63dc4c604460171da727544 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -287,6 +287,15 @@ public final class LeavesConfig { - checkSpookySeasonOnceAnHour = getBoolean("settings.performance.check-spooky-season-once-an-hour", checkSpookySeasonOnceAnHour); - } - -+ public static boolean optimizeChunkTicking = true; -+ private static boolean optimizeChunkTickingLock = false; -+ private static void optimizeChunkTicking() { -+ if (!optimizeChunkTickingLock) { -+ optimizeChunkTicking = getBoolean("settings.performance.optimize-chunk-ticking", optimizeChunkTicking); -+ optimizeChunkTickingLock = true; -+ } -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0028-Skip-POI-finding-if-stuck-in-vehicle.patch b/patches/server/0027-Skip-POI-finding-if-stuck-in-vehicle.patch similarity index 67% rename from patches/server/0028-Skip-POI-finding-if-stuck-in-vehicle.patch rename to patches/server/0027-Skip-POI-finding-if-stuck-in-vehicle.patch index 90548a8c..bc2b4ce2 100644 --- a/patches/server/0028-Skip-POI-finding-if-stuck-in-vehicle.patch +++ b/patches/server/0027-Skip-POI-finding-if-stuck-in-vehicle.patch @@ -21,19 +21,3 @@ index d4c91e0a0c64fcb7f1145de3f30134cb1f1f8ee6..44fc394dbab7e05a3bd7cab493300a96 PoiManager poiManager = world.getPoiManager(); long2ObjectMap.long2ObjectEntrySet().removeIf((entry) -> { return !entry.getValue().isStillValid(time); -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index e31eb5b9d67c2a03a63dc4c604460171da727544..dbe16bd59963bba79f39ba739adb759687f21874 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -296,6 +296,11 @@ public final class LeavesConfig { - } - } - -+ public static boolean skipPOIFindingInVehicle = true; -+ private static void skipPOIFindingInVehicle() { -+ skipPOIFindingInVehicle = getBoolean("settings.performance.skip-poi-find-in-vehicle", skipPOIFindingInVehicle); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0029-Early-return-optimization-for-target-finding.patch b/patches/server/0028-Early-return-optimization-for-target-finding.patch similarity index 66% rename from patches/server/0029-Early-return-optimization-for-target-finding.patch rename to patches/server/0028-Early-return-optimization-for-target-finding.patch index 78606098..3fd6879e 100644 --- a/patches/server/0029-Early-return-optimization-for-target-finding.patch +++ b/patches/server/0028-Early-return-optimization-for-target-finding.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Early return optimization for target finding This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -index a7575b5ef56af6f53448d391abb4956e130148ca..e2764cbc888be39943728ff810e1e44bc8be2af7 100644 +index 58422f00c7d64dbd1cf6d7211c9838875cbe7778..b39072cf38795e8f0d73f83b10d29fe19c507c54 100644 --- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java @@ -75,9 +75,17 @@ public class TargetingConditions { @@ -28,19 +28,3 @@ index a7575b5ef56af6f53448d391abb4956e130148ca..e2764cbc888be39943728ff810e1e44b if (f > e * e) { return false; } -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index dbe16bd59963bba79f39ba739adb759687f21874..d7ab1518c81bc37c76e39cece2dc81d17cb1ef15 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -300,6 +300,11 @@ public final class LeavesConfig { - private static void skipPOIFindingInVehicle() { - skipPOIFindingInVehicle = getBoolean("settings.performance.skip-poi-find-in-vehicle", skipPOIFindingInVehicle); - } -+ -+ public static boolean entityTargetFindingOptimization = true; -+ private static void entityTargetFindingOptimization() { -+ entityTargetFindingOptimization = getBoolean("settings.performance.entity-target-find-optimization", entityTargetFindingOptimization); -+ } - - public static final class WorldConfig { - diff --git a/patches/server/0030-Use-thread-unsafe-random-for-mob-spawning.patch b/patches/server/0029-Use-thread-unsafe-random-for-mob-spawning.patch similarity index 70% rename from patches/server/0030-Use-thread-unsafe-random-for-mob-spawning.patch rename to patches/server/0029-Use-thread-unsafe-random-for-mob-spawning.patch index 0fda9d66..c949dd24 100644 --- a/patches/server/0030-Use-thread-unsafe-random-for-mob-spawning.patch +++ b/patches/server/0029-Use-thread-unsafe-random-for-mob-spawning.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Use thread unsafe random for mob spawning This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 70773c525bcf33d4d4764ce4a16dedddc423b02b..7a3bd3e7aa208ade1d33f59ba684354d000dd011 100644 +index 73bf34c3ce7e55e9fd15a3af90bf107e85d764b0..c767257b56acbe2cde391f405c010f5b2f62a17c 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -419,12 +419,21 @@ public final class NaturalSpawner { @@ -37,19 +37,3 @@ index 70773c525bcf33d4d4764ce4a16dedddc423b02b..7a3bd3e7aa208ade1d33f59ba684354d } public static boolean isValidEmptySpawnBlock(BlockGetter blockView, BlockPos pos, BlockState state, FluidState fluidState, EntityType entityType) { -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index d7ab1518c81bc37c76e39cece2dc81d17cb1ef15..b41c9504a1c09c239b8e8a12efe6e63f9dfc591f 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -306,6 +306,11 @@ public final class LeavesConfig { - entityTargetFindingOptimization = getBoolean("settings.performance.entity-target-find-optimization", entityTargetFindingOptimization); - } - -+ public static boolean useMoreThreadUnsafeRandom = true; -+ private static void useMoreThreadUnsafeRandom() { -+ useMoreThreadUnsafeRandom = getBoolean("settings.performance.use-more-thread-unsafe-random", useMoreThreadUnsafeRandom); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0031-Config-to-disable-method-profiler.patch b/patches/server/0030-Config-to-disable-method-profiler.patch similarity index 69% rename from patches/server/0031-Config-to-disable-method-profiler.patch rename to patches/server/0030-Config-to-disable-method-profiler.patch index a5d570de..2b145033 100644 --- a/patches/server/0031-Config-to-disable-method-profiler.patch +++ b/patches/server/0030-Config-to-disable-method-profiler.patch @@ -37,19 +37,3 @@ index 11d362ce8043966a7fce6c64849b7c080133fcbd..71836aa0e2f5d397c0b02c9662d1b114 return (ProfilerFiller) this.profiler.get(); } -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index b41c9504a1c09c239b8e8a12efe6e63f9dfc591f..ceb2432d4271beb82f260e52b54d5661f992927c 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -311,6 +311,11 @@ public final class LeavesConfig { - useMoreThreadUnsafeRandom = getBoolean("settings.performance.use-more-thread-unsafe-random", useMoreThreadUnsafeRandom); - } - -+ public static boolean disableMethodProfiler = true; -+ private static void disableMethodProfiler() { -+ disableMethodProfiler = getBoolean("settings.misc.disable-method-profiler", disableMethodProfiler); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0032-Throttle-goal-selector-during-inactive-ticking.patch b/patches/server/0031-Throttle-goal-selector-during-inactive-ticking.patch similarity index 61% rename from patches/server/0032-Throttle-goal-selector-during-inactive-ticking.patch rename to patches/server/0031-Throttle-goal-selector-during-inactive-ticking.patch index dfbb679c..cb875791 100644 --- a/patches/server/0032-Throttle-goal-selector-during-inactive-ticking.patch +++ b/patches/server/0031-Throttle-goal-selector-during-inactive-ticking.patch @@ -24,19 +24,3 @@ index e2a25c29ec74147b3e66aa0b3deb85a8f6ee53a5..e65ce75e2d44843afa6c4a033885a55d this.goalSelector.tick(); } if (this.targetSelector.inactiveTick()) { -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index ceb2432d4271beb82f260e52b54d5661f992927c..53ccd141c53faa3fa53127f546ba0faeb685d731 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -316,6 +316,11 @@ public final class LeavesConfig { - disableMethodProfiler = getBoolean("settings.misc.disable-method-profiler", disableMethodProfiler); - } - -+ public static boolean throttleInactiveGoalSelectorTick = false; -+ private static void throttleInactiveGoalSelectorTick() { -+ throttleInactiveGoalSelectorTick = getBoolean("settings.performance.inactive-goal-selector-disable", throttleInactiveGoalSelectorTick); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0034-Reduce-entity-allocations.patch b/patches/server/0032-Reduce-entity-allocations.patch similarity index 77% rename from patches/server/0034-Reduce-entity-allocations.patch rename to patches/server/0032-Reduce-entity-allocations.patch index d25e4ee0..e6bad3eb 100644 --- a/patches/server/0034-Reduce-entity-allocations.patch +++ b/patches/server/0032-Reduce-entity-allocations.patch @@ -53,19 +53,3 @@ index dd1102d5291ef6f18e82400a6d8a0a376cc071e9..53c094c8a674b2842009727569e7e1f6 } @Nullable -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 1335959fc27da3e53ea845dff83fcac0b3a1e873..6227a02006c98fe93f500f2a192aec0ff77a8187 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -326,6 +326,11 @@ public final class LeavesConfig { - skipCloneLootParameters = getBoolean("settings.performance.skip-clone-loot-parameters", skipCloneLootParameters); - } - -+ public static boolean reduceEntityAllocations = true; -+ private static void reduceEntityAllocations() { -+ reduceEntityAllocations = getBoolean("settings.performance.reduce-entity-allocations", reduceEntityAllocations); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0035-Remove-lambda-from-ticking-guard.patch b/patches/server/0033-Remove-lambda-from-ticking-guard.patch similarity index 75% rename from patches/server/0035-Remove-lambda-from-ticking-guard.patch rename to patches/server/0033-Remove-lambda-from-ticking-guard.patch index 021e126c..e5c13cce 100644 --- a/patches/server/0035-Remove-lambda-from-ticking-guard.patch +++ b/patches/server/0033-Remove-lambda-from-ticking-guard.patch @@ -35,19 +35,3 @@ index bf05f321373c9cb5d42fd6cace010a75dc98b90a..c47df8d18be8ac7d32a16e6662dbbd85 gameprofilerfiller.pop(); } } -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 6227a02006c98fe93f500f2a192aec0ff77a8187..205b7b98271208457d8acc434d1f8b2bd804dd4c 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -331,6 +331,11 @@ public final class LeavesConfig { - reduceEntityAllocations = getBoolean("settings.performance.reduce-entity-allocations", reduceEntityAllocations); - } - -+ public static boolean removeTickGuardLambda = true; -+ private static void removeTickGuardLambda() { -+ removeTickGuardLambda = getBoolean("settings.performance.remove.tick-guard-lambda", removeTickGuardLambda); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0033-Skip-cloning-loot-parameters.patch b/patches/server/0033-Skip-cloning-loot-parameters.patch deleted file mode 100644 index 2909ba0a..00000000 --- a/patches/server/0033-Skip-cloning-loot-parameters.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: violetc <58360096+s-yh-china@users.noreply.github.com> -Date: Mon, 15 Aug 2022 17:17:24 +0800 -Subject: [PATCH] Skip cloning loot parameters - -This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) - -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 53ccd141c53faa3fa53127f546ba0faeb685d731..1335959fc27da3e53ea845dff83fcac0b3a1e873 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -321,6 +321,11 @@ public final class LeavesConfig { - throttleInactiveGoalSelectorTick = getBoolean("settings.performance.inactive-goal-selector-disable", throttleInactiveGoalSelectorTick); - } - -+ public static boolean skipCloneLootParameters = true; -+ private static void skipCloneLootParameters() { -+ skipCloneLootParameters = getBoolean("settings.performance.skip-clone-loot-parameters", skipCloneLootParameters); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0036-Remove-iterators-from-inventory-contains.patch b/patches/server/0034-Remove-iterators-from-inventory-contains.patch similarity index 73% rename from patches/server/0036-Remove-iterators-from-inventory-contains.patch rename to patches/server/0034-Remove-iterators-from-inventory-contains.patch index 320e3ad7..6fad317d 100644 --- a/patches/server/0036-Remove-iterators-from-inventory-contains.patch +++ b/patches/server/0034-Remove-iterators-from-inventory-contains.patch @@ -54,19 +54,3 @@ index 395cecc385e4126a7534ac9aeb15cf323efab03e..a8e8ed277bf467ca8a34e040bf7b1257 return false; } -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 205b7b98271208457d8acc434d1f8b2bd804dd4c..6377b8ca3cafcbb1b63fc713cc8e132e2260233d 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -336,6 +336,11 @@ public final class LeavesConfig { - removeTickGuardLambda = getBoolean("settings.performance.remove.tick-guard-lambda", removeTickGuardLambda); - } - -+ public static boolean removeInventoryContainsIterators = true; -+ private static void removeInventoryContainsIterators() { -+ removeInventoryContainsIterators = getBoolean("settings.performance.remove.inventory-contains-iterators", removeInventoryContainsIterators); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0037-Remove-streams-from-getting-nearby-players.patch b/patches/server/0035-Remove-streams-from-getting-nearby-players.patch similarity index 81% rename from patches/server/0037-Remove-streams-from-getting-nearby-players.patch rename to patches/server/0035-Remove-streams-from-getting-nearby-players.patch index fef526b7..4defacf3 100644 --- a/patches/server/0037-Remove-streams-from-getting-nearby-players.patch +++ b/patches/server/0035-Remove-streams-from-getting-nearby-players.patch @@ -67,19 +67,3 @@ index c1920e8d571a71cdd9fa18f26d16aabc43f5a88f..9f11a60c1856e474227624118d0362aa return chunkMap.playerEntityTrackerTrackMaps[type.ordinal()].getObjectsInRange(MCUtil.getCoordinateKey(this)); } -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 6377b8ca3cafcbb1b63fc713cc8e132e2260233d..14d04bd5e7421fa11a1e2e55394fef99ed66235e 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -341,6 +341,11 @@ public final class LeavesConfig { - removeInventoryContainsIterators = getBoolean("settings.performance.remove.inventory-contains-iterators", removeInventoryContainsIterators); - } - -+ public static boolean removeGetNearPlayerStreams = true; -+ private static void removeGetNearPlayerStreams() { -+ removeGetNearPlayerStreams = getBoolean("settings.performance.remove.get-nearby-players-streams", removeGetNearPlayerStreams); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0038-Remove-streams-and-iterators-from-range-check.patch b/patches/server/0036-Remove-streams-and-iterators-from-range-check.patch similarity index 77% rename from patches/server/0038-Remove-streams-and-iterators-from-range-check.patch rename to patches/server/0036-Remove-streams-and-iterators-from-range-check.patch index f04a76d4..1bd72f61 100644 --- a/patches/server/0038-Remove-streams-and-iterators-from-range-check.patch +++ b/patches/server/0036-Remove-streams-and-iterators-from-range-check.patch @@ -62,19 +62,3 @@ index 9209b598d7168b82574e4800056b8b9f84265dd0..e122a633bc3e26f7a98149f66da8a9e8 return this.scaledRange(i); } -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 14d04bd5e7421fa11a1e2e55394fef99ed66235e..b75cd13ae7a7d961333d712235baa160ae392b4c 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -346,6 +346,11 @@ public final class LeavesConfig { - removeGetNearPlayerStreams = getBoolean("settings.performance.remove.get-nearby-players-streams", removeGetNearPlayerStreams); - } - -+ public static boolean removeRangeCheckStreams = true; -+ private static void removeRangeCheckStreams() { -+ removeRangeCheckStreams = getBoolean("settings.performance.remove.range-check-streams-and-iterators", removeRangeCheckStreams); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0037-Async-Pathfinding.patch b/patches/server/0037-Async-Pathfinding.patch new file mode 100644 index 00000000..cfb3ebce --- /dev/null +++ b/patches/server/0037-Async-Pathfinding.patch @@ -0,0 +1,21 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: violetc <58360096+s-yh-china@users.noreply.github.com> +Date: Wed, 17 Aug 2022 16:54:54 +0800 +Subject: [PATCH] Async Pathfinding + +This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) +But Pufferfish patch was ported downstream from the Petal fork + +diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java +index 4546a98ae419ff5f647e79455b7d36b21bdb92a8..5a75b8331c2ca804fa61002d9a2e0a8fcf786d3c 100644 +--- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java ++++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java +@@ -326,7 +326,7 @@ public final class LeavesConfig { + // only config now + public static boolean asyncPathfinding = false; + private static boolean asyncPathfindingLock = false; +- private static void asyncPathfinding() { ++ private static void asyncPathfinding() { // void + if (!asyncPathfindingLock) { + asyncPathfinding = getBoolean("settings.performance.async-pathfinding", asyncPathfinding); + asyncPathfindingLock = true; diff --git a/patches/server/0040-Cache-climbing-check-for-activation.patch b/patches/server/0038-Cache-climbing-check-for-activation.patch similarity index 76% rename from patches/server/0040-Cache-climbing-check-for-activation.patch rename to patches/server/0038-Cache-climbing-check-for-activation.patch index e86402a5..df49c131 100644 --- a/patches/server/0040-Cache-climbing-check-for-activation.patch +++ b/patches/server/0038-Cache-climbing-check-for-activation.patch @@ -45,19 +45,3 @@ index d4da9ec6e00bb92b70598ee9a0d0ca5816562378..af138ee23295847377b391dcc73bc932 { return 1; // Paper } -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index a11466aaffe55aa86b54a4aa31586f446e31e0df..d6cd39d61c87636cb4c3500d5a303d3bb28c45fa 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -366,6 +366,11 @@ public final class LeavesConfig { - } - } - -+ public static boolean cacheClimbCheck = true; -+ private static void cacheClimbCheck() { -+ cacheClimbCheck = getBoolean("settings.performance.cache-climb-check", cacheClimbCheck); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0039-Async-Pathfinding.patch b/patches/server/0039-Async-Pathfinding.patch deleted file mode 100644 index 3326ed4d..00000000 --- a/patches/server/0039-Async-Pathfinding.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: violetc <58360096+s-yh-china@users.noreply.github.com> -Date: Wed, 17 Aug 2022 16:54:54 +0800 -Subject: [PATCH] Async Pathfinding - -This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) -But Pufferfish patch was ported downstream from the Petal fork - -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index b75cd13ae7a7d961333d712235baa160ae392b4c..a11466aaffe55aa86b54a4aa31586f446e31e0df 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -351,6 +351,21 @@ public final class LeavesConfig { - removeRangeCheckStreams = getBoolean("settings.performance.remove.range-check-streams-and-iterators", removeRangeCheckStreams); - } - -+ // only config now -+ public static boolean asyncPathfinding = false; -+ private static boolean asyncPathfindingLock = false; -+ private static void asyncPathfinding() { -+ if (!asyncPathfindingLock) { -+ asyncPathfinding = getBoolean("settings.performance.async-pathfinding", asyncPathfinding); -+ asyncPathfindingLock = true; -+ } -+ -+ if (asyncPathfinding) { -+ asyncPathfinding = false; -+ LeavesLogger.LOGGER.severe("Async Pathfinding is updating, it can't work"); -+ } -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0041-Use-aging-cache-for-biome-temperatures.patch b/patches/server/0039-Use-aging-cache-for-biome-temperatures.patch similarity index 89% rename from patches/server/0041-Use-aging-cache-for-biome-temperatures.patch rename to patches/server/0039-Use-aging-cache-for-biome-temperatures.patch index 17e2afc7..03d85349 100644 --- a/patches/server/0041-Use-aging-cache-for-biome-temperatures.patch +++ b/patches/server/0039-Use-aging-cache-for-biome-temperatures.patch @@ -101,26 +101,6 @@ index 65012a12e1430956ef55ced56773e6354ac26444..fe43432da26a3570c993b5592b7b8020 } public boolean shouldFreeze(LevelReader world, BlockPos blockPos) { -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index d6cd39d61c87636cb4c3500d5a303d3bb28c45fa..21d23b2c3691f52aac9445e3c2ceb29eb7970d2b 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -371,6 +371,15 @@ public final class LeavesConfig { - cacheClimbCheck = getBoolean("settings.performance.cache-climb-check", cacheClimbCheck); - } - -+ public static boolean biomeTemperaturesUseAgingCache = true; -+ private static boolean biomeTemperaturesUseAgingCacheLock = false; -+ private static void biomeTemperaturesUseAgingCache() { -+ if (!biomeTemperaturesUseAgingCacheLock) { -+ biomeTemperaturesUseAgingCache = getBoolean("settings.performance.biome-temperatures-use-aging-cache", biomeTemperaturesUseAgingCache); -+ biomeTemperaturesUseAgingCacheLock = true; -+ } -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/src/main/java/top/leavesmc/leaves/structs/Long2FloatAgingCache.java b/src/main/java/top/leavesmc/leaves/structs/Long2FloatAgingCache.java new file mode 100644 index 0000000000000000000000000000000000000000..26f9d4d9099739d6ddc159184a20e2ae9abde5cd diff --git a/patches/server/0042-Reduce-entity-fluid-lookups-if-no-fluids.patch b/patches/server/0040-Reduce-entity-fluid-lookups-if-no-fluids.patch similarity index 94% rename from patches/server/0042-Reduce-entity-fluid-lookups-if-no-fluids.patch rename to patches/server/0040-Reduce-entity-fluid-lookups-if-no-fluids.patch index 14b93524..f2455bae 100644 --- a/patches/server/0042-Reduce-entity-fluid-lookups-if-no-fluids.patch +++ b/patches/server/0040-Reduce-entity-fluid-lookups-if-no-fluids.patch @@ -216,19 +216,3 @@ index d4477b0dda6a1ef7bd8323c0d11b636bd071d18e..3b7fcf532761362d2f657f58962d7bd2 } }); -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 21d23b2c3691f52aac9445e3c2ceb29eb7970d2b..1b82f85e4655ca0edc90026582b89b40e0438bf6 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -380,6 +380,11 @@ public final class LeavesConfig { - } - } - -+ public static boolean reduceEntityFluidLookup = true; -+ private static void reduceEntityFluidLookup() { -+ reduceEntityFluidLookup = getBoolean("settings.performance.reduce-entity-fluid-lookup", reduceEntityFluidLookup); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0043-Reduce-chunk-loading-lookups.patch b/patches/server/0041-Reduce-chunk-loading-lookups.patch similarity index 74% rename from patches/server/0043-Reduce-chunk-loading-lookups.patch rename to patches/server/0041-Reduce-chunk-loading-lookups.patch index 28bf2717..0c697b5c 100644 --- a/patches/server/0043-Reduce-chunk-loading-lookups.patch +++ b/patches/server/0041-Reduce-chunk-loading-lookups.patch @@ -41,19 +41,3 @@ index 4616addb05fcc20b1ec6ca1dea01cbefed697acd..2fce5952352ca09335d3ba74e6d779c4 boolean flag = iblockdata.blocksMotion(); boolean flag1 = iblockdata.getFluidState().is(FluidTags.WATER); -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 1b82f85e4655ca0edc90026582b89b40e0438bf6..b6282e09aff5cc7f8db682faff92d2b2e8b0f47a 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -385,6 +385,11 @@ public final class LeavesConfig { - reduceEntityFluidLookup = getBoolean("settings.performance.reduce-entity-fluid-lookup", reduceEntityFluidLookup); - } - -+ public static boolean reduceChuckLoadAndLookup = true; -+ private static void reduceChuckLoadAndLookup() { -+ reduceChuckLoadAndLookup = getBoolean("settings.performance.reduce-chuck-load-and-lookup", reduceChuckLoadAndLookup); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0044-Simpler-ShapelessRecipes-comparison-for-Vanilla.patch b/patches/server/0042-Simpler-ShapelessRecipes-comparison-for-Vanilla.patch similarity index 79% rename from patches/server/0044-Simpler-ShapelessRecipes-comparison-for-Vanilla.patch rename to patches/server/0042-Simpler-ShapelessRecipes-comparison-for-Vanilla.patch index cd0b9073..cb567eb3 100644 --- a/patches/server/0044-Simpler-ShapelessRecipes-comparison-for-Vanilla.patch +++ b/patches/server/0042-Simpler-ShapelessRecipes-comparison-for-Vanilla.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Simpler ShapelessRecipes comparison for Vanilla This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java b/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java -index f4f3f3a19d3cadaef1ae1a47daa68251a983dcf2..cad40fa0482f286d4b51e934ac639ea524a08455 100644 +index 7f174bb89bf4d700a5ae1b65d8abd4f5b1e7b5ed..fef23722a5abb56c5f0a24a785a312c0378a0500 100644 --- a/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java +++ b/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java @@ -27,13 +27,21 @@ public class ShapelessRecipe implements CraftingRecipe { @@ -72,19 +72,3 @@ index f7ea77dd82d978ad307f99c743efacfb34478b3d..96be7a7b030b2f82ac91f0c5c8e66f28 + MinecraftServer.getServer().getRecipeManager().addRecipe(new net.minecraft.world.item.crafting.ShapelessRecipe(CraftNamespacedKey.toMinecraft(this.getKey()), this.getGroup(), CraftRecipe.getCategory(this.getCategory()), CraftItemStack.asNMSCopy(this.getResult()), data, true)); // Leaves - is bukkit recipe } } -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index b6282e09aff5cc7f8db682faff92d2b2e8b0f47a..0765f80c16efcc17e7b2dc5bf08a1a92eeddb1ae 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -390,6 +390,11 @@ public final class LeavesConfig { - reduceChuckLoadAndLookup = getBoolean("settings.performance.reduce-chuck-load-and-lookup", reduceChuckLoadAndLookup); - } - -+ public static boolean simplerVanillaShapelessRecipes = true; -+ private static void simplerVanillaShapelessRecipes() { -+ simplerVanillaShapelessRecipes = getBoolean("settings.performance.simpler-vanilla-shapeless-recipes", simplerVanillaShapelessRecipes); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0045-PCA-sync-protocol.patch b/patches/server/0043-PCA-sync-protocol.patch similarity index 96% rename from patches/server/0045-PCA-sync-protocol.patch rename to patches/server/0043-PCA-sync-protocol.patch index 50204c71..cacaa4f1 100644 --- a/patches/server/0045-PCA-sync-protocol.patch +++ b/patches/server/0043-PCA-sync-protocol.patch @@ -368,32 +368,6 @@ index 5b128a82f9759dcc033d313f576914d6c9f2214b..87301f69c72b8ed98cc894dfaf285aa7 for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 0765f80c16efcc17e7b2dc5bf08a1a92eeddb1ae..3d71b6cfcb8e7b87b3549aa60dabb4491abbc41a 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -395,6 +395,21 @@ public final class LeavesConfig { - simplerVanillaShapelessRecipes = getBoolean("settings.performance.simpler-vanilla-shapeless-recipes", simplerVanillaShapelessRecipes); - } - -+ public static boolean pcaSyncProtocol = false; -+ private static void pcaSyncProtocol() { -+ pcaSyncProtocol = getBoolean("settings.protocol.pca-sync-protocol", pcaSyncProtocol); -+ } -+ -+ public static String pcaSyncPlayerEntity = "OPS"; -+ private static final List pcaSyncPlayerEntityList = List.of("NOBODY", "BOT", "OPS", "OPS_AND_SELF", "EVERYONE"); -+ private static void pcaSyncPlayerEntity() { -+ pcaSyncPlayerEntity = getString("settings.protocol.pca-sync-player-entity", pcaSyncPlayerEntity); -+ if (!pcaSyncPlayerEntityList.contains(pcaSyncPlayerEntity)) { -+ pcaSyncPlayerEntity = "OPS"; -+ LeavesLogger.LOGGER.severe("pca-sync-player-entity value error, reset to OPS"); -+ } -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/src/main/java/top/leavesmc/leaves/protocol/PcaSyncProtocol.java b/src/main/java/top/leavesmc/leaves/protocol/PcaSyncProtocol.java new file mode 100644 index 0000000000000000000000000000000000000000..819c89946670cc41f390d1855cf7159aec6bb1b5 diff --git a/patches/server/0046-BBOR-Protocol.patch b/patches/server/0044-BBOR-Protocol.patch similarity index 94% rename from patches/server/0046-BBOR-Protocol.patch rename to patches/server/0044-BBOR-Protocol.patch index 8e6da6de..befec0a8 100644 --- a/patches/server/0046-BBOR-Protocol.patch +++ b/patches/server/0044-BBOR-Protocol.patch @@ -18,7 +18,7 @@ index 100ea32bc60e5c052007bb75b35eba16564eadff..a932f1096fb9a89644d649edc2ef7049 for (int i = 0; i < this.tickables.size(); ++i) { ((Runnable) this.tickables.get(i)).run(); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index ba990b85172a44333d619f82f4ad7f2b67c8765c..5f2bbaa1d06e081b0cb9a638a9dfa5b33159bfeb 100644 +index 5bf8c3e04905031c56ed775aaba762ef2fa35662..2a6dd10abd58beb7f7ac3b2e5b68efaceace9b20 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -3550,6 +3550,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -32,7 +32,7 @@ index ba990b85172a44333d619f82f4ad7f2b67c8765c..5f2bbaa1d06e081b0cb9a638a9dfa5b3 ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t dispatch custom payload", ex); this.disconnect("Invalid custom payload!", org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 151ecdb16a331c59287095b497516e99a894db61..3419f931f1e6d3ea9e0de91d18ae415e2df87117 100644 +index 0d751f2795314783d4597b46f8c218ffdbfd70c6..dddc6cf4557acf094ae5b5f03ad2c385533770ec 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -357,6 +357,7 @@ public abstract class PlayerList { @@ -94,22 +94,6 @@ index 87301f69c72b8ed98cc894dfaf285aa72a947894..c172324b4902f4005be5407274525bf1 for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 3d71b6cfcb8e7b87b3549aa60dabb4491abbc41a..1a05745fa952664a937cd2b85e62cbbdb0215ed1 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -410,6 +410,11 @@ public final class LeavesConfig { - } - } - -+ public static boolean bborProtocol = false; -+ private static void bborProtocol() { -+ bborProtocol = getBoolean("settings.protocol.bbor-protocol", bborProtocol); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/src/main/java/top/leavesmc/leaves/protocol/BBORProtocol.java b/src/main/java/top/leavesmc/leaves/protocol/BBORProtocol.java new file mode 100644 index 0000000000000000000000000000000000000000..95469919589b48e1c672b6b9dc884118d33d86de diff --git a/patches/server/0047-InstantBlockUpdater-Reintroduced.patch b/patches/server/0045-InstantBlockUpdater-Reintroduced.patch similarity index 65% rename from patches/server/0047-InstantBlockUpdater-Reintroduced.patch rename to patches/server/0045-InstantBlockUpdater-Reintroduced.patch index cc5bafd3..b215dc81 100644 --- a/patches/server/0047-InstantBlockUpdater-Reintroduced.patch +++ b/patches/server/0045-InstantBlockUpdater-Reintroduced.patch @@ -32,23 +32,3 @@ index 71836aa0e2f5d397c0b02c9662d1b11454c0388b..8051a228854044d77d118c87163d7501 this.registryAccess = iregistrycustom; this.damageSources = new DamageSources(iregistrycustom); // CraftBukkit start -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 1a05745fa952664a937cd2b85e62cbbdb0215ed1..bd446ec62a1b2b87d8e3c49273852eb0d560e934 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -415,6 +415,15 @@ public final class LeavesConfig { - bborProtocol = getBoolean("settings.protocol.bbor-protocol", bborProtocol); - } - -+ public static boolean instantBlockUpdaterReintroduced = false; -+ private static boolean instantBlockUpdaterReintroducedLock = false; -+ private static void instantBlockUpdaterReintroduced() { -+ if (!instantBlockUpdaterReintroducedLock) { -+ instantBlockUpdaterReintroduced = getBoolean("settings.modify.instant-block-updater-reintroduced", instantBlockUpdaterReintroduced); -+ instantBlockUpdaterReintroducedLock = true; -+ } -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0048-Random-flatten-triangular-distribution.patch b/patches/server/0046-Random-flatten-triangular-distribution.patch similarity index 63% rename from patches/server/0048-Random-flatten-triangular-distribution.patch rename to patches/server/0046-Random-flatten-triangular-distribution.patch index e4bd6243..9be72e3f 100644 --- a/patches/server/0048-Random-flatten-triangular-distribution.patch +++ b/patches/server/0046-Random-flatten-triangular-distribution.patch @@ -25,19 +25,3 @@ index ff1ad1024419182f7f3de578442c1c033d4c9ebb..d93f3eeea17d58ccc01c6010b2d49f81 } default void consumeCount(int count) { -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index bd446ec62a1b2b87d8e3c49273852eb0d560e934..68fb787c2356b7e699c6df9c856362009d42a9bb 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -424,6 +424,11 @@ public final class LeavesConfig { - } - } - -+ public static boolean flattenTriangularDistribution = false; -+ private static void flattenTriangularDistribution() { -+ flattenTriangularDistribution = getBoolean("settings.modify.flatten-triangular-distribution", flattenTriangularDistribution); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0049-Jade-Protocol.patch b/patches/server/0047-Jade-Protocol.patch similarity index 97% rename from patches/server/0049-Jade-Protocol.patch rename to patches/server/0047-Jade-Protocol.patch index 4cf05bdb..9a2f8fa2 100644 --- a/patches/server/0049-Jade-Protocol.patch +++ b/patches/server/0047-Jade-Protocol.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Jade Protocol This patch is Powered by Jade(https://github.com/Snownee/Jade) diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 5f2bbaa1d06e081b0cb9a638a9dfa5b33159bfeb..46a7cd5598054ec1acbcbf29b9630e1dde8e6a10 100644 +index 2a6dd10abd58beb7f7ac3b2e5b68efaceace9b20..2640a9cac120b779d228018dfc375c4337e2147f 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -3553,6 +3553,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -68,22 +68,6 @@ index c172324b4902f4005be5407274525bf1d0b16021..3116933c347135bdad6115947c4fa8a8 for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 68fb787c2356b7e699c6df9c856362009d42a9bb..696d290df17274b7e82b2d12ea2c16b28173f660 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -429,6 +429,11 @@ public final class LeavesConfig { - flattenTriangularDistribution = getBoolean("settings.modify.flatten-triangular-distribution", flattenTriangularDistribution); - } - -+ public static boolean jadeProtocol = false; -+ private static void jadeProtocol() { -+ jadeProtocol = getBoolean("settings.protocol.jade-protocol", jadeProtocol); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/src/main/java/top/leavesmc/leaves/protocol/JadeProtocol.java b/src/main/java/top/leavesmc/leaves/protocol/JadeProtocol.java new file mode 100644 index 0000000000000000000000000000000000000000..33ad9e2f0cf2d712ea7f9b5285cd1ade59c6f796 diff --git a/patches/server/0050-Carpet-alternative-block-placement-Protocol.patch b/patches/server/0048-Carpet-alternative-block-placement-Protocol.patch similarity index 91% rename from patches/server/0050-Carpet-alternative-block-placement-Protocol.patch rename to patches/server/0048-Carpet-alternative-block-placement-Protocol.patch index 644bc1d1..a0a90acc 100644 --- a/patches/server/0050-Carpet-alternative-block-placement-Protocol.patch +++ b/patches/server/0048-Carpet-alternative-block-placement-Protocol.patch @@ -64,22 +64,6 @@ index 9522e646529f3d849471931b4b3c0d133e7fcfc5..5cf87860455ca05363685c192dc34a27 @Nullable public BlockState getStateForPlacement(BlockPlaceContext ctx) { return this.defaultBlockState(); -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 696d290df17274b7e82b2d12ea2c16b28173f660..0860bfdfbb8938cebad4b9662f26375082823c8a 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -434,6 +434,11 @@ public final class LeavesConfig { - jadeProtocol = getBoolean("settings.protocol.jade-protocol", jadeProtocol); - } - -+ public static boolean carpetAlternativeBlockPlacement = false; -+ private static void carpetAlternativeBlockPlacement() { -+ carpetAlternativeBlockPlacement = getBoolean("settings.protocol.carpet-alternative-block-placement", carpetAlternativeBlockPlacement); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/src/main/java/top/leavesmc/leaves/protocol/CarpetAlternativeBlockPlacement.java b/src/main/java/top/leavesmc/leaves/protocol/CarpetAlternativeBlockPlacement.java new file mode 100644 index 0000000000000000000000000000000000000000..848c380ed3d9755bab680b1e244a6024110bc383 diff --git a/patches/server/0051-Player-operation-limiter.patch b/patches/server/0049-Player-operation-limiter.patch similarity index 89% rename from patches/server/0051-Player-operation-limiter.patch rename to patches/server/0049-Player-operation-limiter.patch index 0541b9d4..a40f693a 100644 --- a/patches/server/0051-Player-operation-limiter.patch +++ b/patches/server/0049-Player-operation-limiter.patch @@ -131,19 +131,3 @@ index 1015b3c5f6969709bb8ebfbd66eb9cede444385c..437ed8d4cba5e3393ac6370f6b8e364e if (iblockdata == null) { return InteractionResult.FAIL; } else if (!this.placeBlock(blockactioncontext1, iblockdata)) { -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 0860bfdfbb8938cebad4b9662f26375082823c8a..72a750e05f7abe71bf3be8884c4b396cb715d99f 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -439,6 +439,11 @@ public final class LeavesConfig { - carpetAlternativeBlockPlacement = getBoolean("settings.protocol.carpet-alternative-block-placement", carpetAlternativeBlockPlacement); - } - -+ public static boolean playerOperationLimiter = false; -+ private static void playerOperationLimiter() { -+ playerOperationLimiter = getBoolean("settings.modify.player-operation-limiter", playerOperationLimiter); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0052-Renewable-Elytra.patch b/patches/server/0050-Renewable-Elytra.patch similarity index 67% rename from patches/server/0052-Renewable-Elytra.patch rename to patches/server/0050-Renewable-Elytra.patch index b8cb3d46..b233bedf 100644 --- a/patches/server/0052-Renewable-Elytra.patch +++ b/patches/server/0050-Renewable-Elytra.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Renewable Elytra This patch is Powered by Carpet-TIS-Addition(https://github.com/plusls/Carpet-TIS-Addition) diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 97fb1d2110a51498f6419841081b500b3f190370..8fb8bc48342183b978b4bfb0845f2cc2af159ac2 100644 +index 4a132c3eff6978e927bcd4df56b9ce0306af6d19..8f390c7201da00f7e1c5913f0d0642a2b5e943cb 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -36,6 +36,8 @@ import net.minecraft.world.entity.ai.goal.Goal; @@ -39,19 +39,3 @@ index 97fb1d2110a51498f6419841081b500b3f190370..8fb8bc48342183b978b4bfb0845f2cc2 // Paper start java.util.UUID spawningEntity; -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 72a750e05f7abe71bf3be8884c4b396cb715d99f..35c1e3e82f372c5290725f80621f7b9850a29acd 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -444,6 +444,11 @@ public final class LeavesConfig { - playerOperationLimiter = getBoolean("settings.modify.player-operation-limiter", playerOperationLimiter); - } - -+ public static double renewableElytra = -1.0; -+ private static void renewableElytra() { -+ renewableElytra = getDouble("settings.modify.renewable-elytra", renewableElytra); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0053-Stackable-ShulkerBoxes.patch b/patches/server/0051-Stackable-ShulkerBoxes.patch similarity index 93% rename from patches/server/0053-Stackable-ShulkerBoxes.patch rename to patches/server/0051-Stackable-ShulkerBoxes.patch index 2f93b361..87ed95d3 100644 --- a/patches/server/0053-Stackable-ShulkerBoxes.patch +++ b/patches/server/0051-Stackable-ShulkerBoxes.patch @@ -96,7 +96,7 @@ index 3d41dbe0285f8fec8adae1e93010cf464df9b08c..7f5c131b16152c7817b0a29064dacdf4 ItemStack itemstack1 = other.getItem(); diff --git a/src/main/java/net/minecraft/world/entity/player/Inventory.java b/src/main/java/net/minecraft/world/entity/player/Inventory.java -index fee876947e0c00f3e0d0914cf84b5969cc788696..625110623fc28f70c0076295e5f8c6d42db24322 100644 +index a8e8ed277bf467ca8a34e040bf7b1257ffe8a17e..15b3425fd5cebfc2ddcb0e39879f4f65c64f3317 100644 --- a/src/main/java/net/minecraft/world/entity/player/Inventory.java +++ b/src/main/java/net/minecraft/world/entity/player/Inventory.java @@ -114,7 +114,7 @@ public class Inventory implements Container, Nameable { @@ -277,33 +277,6 @@ index 47468086c1cae252aa99c55b0065f225357dee62..bca757ea05403fe46f5bf0dfa75561b8 @Override public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) { return SHAPE; -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 35c1e3e82f372c5290725f80621f7b9850a29acd..5d41d1309e133a4b6dc0e73c43168385256446cb 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -9,6 +9,7 @@ import org.bukkit.configuration.ConfigurationSection; - import org.bukkit.configuration.file.YamlConfiguration; - import top.leavesmc.leaves.bot.BotCommand; - import top.leavesmc.leaves.bot.agent.Actions; -+import top.leavesmc.leaves.util.MathUtils; - - import java.io.File; - import java.lang.reflect.InvocationTargetException; -@@ -449,6 +450,14 @@ public final class LeavesConfig { - renewableElytra = getDouble("settings.modify.renewable-elytra", renewableElytra); - } - -+ public static int shulkerBoxStackSize = 1; -+ private static String stackableShulkerBoxes = "false"; -+ private static void stackableShulkerBoxes() { -+ stackableShulkerBoxes = getString("settings.modify.stackable-shulker-boxes", stackableShulkerBoxes); -+ stackableShulkerBoxes = MathUtils.isNumeric(stackableShulkerBoxes) ? stackableShulkerBoxes : stackableShulkerBoxes.equals("true") ? "2" : "1"; -+ shulkerBoxStackSize = Integer.parseInt(stackableShulkerBoxes); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/src/main/java/top/leavesmc/leaves/util/ShulkerBoxUtils.java b/src/main/java/top/leavesmc/leaves/util/ShulkerBoxUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..82b4337965663ec8eccbc8c77892e3c49bff87cf diff --git a/patches/server/0054-Improve-fluid-direction-caching.patch b/patches/server/0052-Improve-fluid-direction-caching.patch similarity index 91% rename from patches/server/0054-Improve-fluid-direction-caching.patch rename to patches/server/0052-Improve-fluid-direction-caching.patch index 4e4aff3b..5ff4691f 100644 --- a/patches/server/0054-Improve-fluid-direction-caching.patch +++ b/patches/server/0052-Improve-fluid-direction-caching.patch @@ -116,26 +116,6 @@ index 5502ad143fd2575f1346334b5b4fe7846628f54e..39669ad8e8895f1ff3e3a7e3ee1ab39c } public abstract Fluid getFlowing(); -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 5d41d1309e133a4b6dc0e73c43168385256446cb..b3ae62eebb15ca41b55b0f994aa7230ec35d4a0e 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -458,6 +458,15 @@ public final class LeavesConfig { - shulkerBoxStackSize = Integer.parseInt(stackableShulkerBoxes); - } - -+ public static boolean improveFluidDirectionCaching = true; -+ private static boolean improveFluidDirectionCachingLock = false; -+ private static void improveFluidDirectionCaching() { -+ if (!improveFluidDirectionCachingLock) { -+ improveFluidDirectionCaching = getBoolean("settings.performance.improve-fluid-direction-caching", improveFluidDirectionCaching); -+ improveFluidDirectionCachingLock = true; -+ } -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/src/main/java/top/leavesmc/leaves/structs/FluidDirectionCache.java b/src/main/java/top/leavesmc/leaves/structs/FluidDirectionCache.java new file mode 100644 index 0000000000000000000000000000000000000000..30dc532e75bc4dd7ddb086ffb24118cf4b7b5d2f diff --git a/patches/server/0055-MC-Technical-Survival-Mode.patch b/patches/server/0053-MC-Technical-Survival-Mode.patch similarity index 92% rename from patches/server/0055-MC-Technical-Survival-Mode.patch rename to patches/server/0053-MC-Technical-Survival-Mode.patch index 4da07164..23448bca 100644 --- a/patches/server/0055-MC-Technical-Survival-Mode.patch +++ b/patches/server/0053-MC-Technical-Survival-Mode.patch @@ -70,7 +70,7 @@ index c767257b56acbe2cde391f405c010f5b2f62a17c..4327ec0948fb82939272f2dc1bbde8b1 entity.spawnReason == org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.CHUNK_GEN)) { continue; diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index b3ae62eebb15ca41b55b0f994aa7230ec35d4a0e..9b73017d8ace6229aff2688981ffa69caf336dd5 100644 +index 5a75b8331c2ca804fa61002d9a2e0a8fcf786d3c..3c80c9f96f79ce3313053cdfabaa958bc2d2a2fb 100644 --- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java +++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java @@ -2,11 +2,13 @@ package top.leavesmc.leaves; @@ -87,18 +87,10 @@ index b3ae62eebb15ca41b55b0f994aa7230ec35d4a0e..9b73017d8ace6229aff2688981ffa69c import top.leavesmc.leaves.bot.BotCommand; import top.leavesmc.leaves.bot.agent.Actions; import top.leavesmc.leaves.util.MathUtils; -@@ -467,6 +469,24 @@ public final class LeavesConfig { - } - } +@@ -446,6 +448,13 @@ public final class LeavesConfig { -+ public static boolean mcTechnicalMode = true; -+ private static void mcTechnicalMode() { -+ mcTechnicalMode = getBoolean("settings.modify.mc-technical-survival-mode", mcTechnicalMode); // TODO better name? -+ doMcTechnicalMode(); -+ } -+ -+ public static void doMcTechnicalMode() { -+ if (mcTechnicalMode) { + public static void doMcTechnicalMode() { + if (mcTechnicalMode) { + GlobalConfiguration.get().unsupportedSettings.allowPistonDuplication = true; + GlobalConfiguration.get().unsupportedSettings.allowHeadlessPistons = true; + GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits = true; @@ -106,9 +98,6 @@ index b3ae62eebb15ca41b55b0f994aa7230ec35d4a0e..9b73017d8ace6229aff2688981ffa69c + 5000.0, GlobalConfiguration.get().packetLimiter.allPackets.action()); + GlobalConfiguration.get().packetLimiter.overrides = Map.of(); + GlobalConfiguration.get().unsupportedSettings.allowGrindstoneOverstacking = true; -+ } -+ } -+ - public static final class WorldConfig { + } + } - public final String worldName; diff --git a/patches/server/0056-Return-nether-portal-fix.patch b/patches/server/0054-Return-nether-portal-fix.patch similarity index 94% rename from patches/server/0056-Return-nether-portal-fix.patch rename to patches/server/0054-Return-nether-portal-fix.patch index 3a2c06b6..951e6600 100644 --- a/patches/server/0056-Return-nether-portal-fix.patch +++ b/patches/server/0054-Return-nether-portal-fix.patch @@ -133,22 +133,6 @@ index b391fa45df30aa29b58a5aaa2159683314841f90..1a30fab8e52c3b14ae1ba908d7b33873 private Optional lastClimbablePos; @Nullable private DamageSource lastDamageSource; -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 9b73017d8ace6229aff2688981ffa69caf336dd5..9cd0abc273391be06511d1f60fe594711ef16f00 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -487,6 +487,11 @@ public final class LeavesConfig { - } - } - -+ public static boolean netherPortalFix = false; -+ private static void netherPortalFix() { -+ netherPortalFix = getBoolean("settings.modify.return-nether-portal-fix", netherPortalFix); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/src/main/java/top/leavesmc/leaves/util/ReturnPortalManager.java b/src/main/java/top/leavesmc/leaves/util/ReturnPortalManager.java new file mode 100644 index 0000000000000000000000000000000000000000..24f887cbe608eea3beb7dc69cabdca7f32a66a9d diff --git a/patches/server/0057-Appleskin-Protocol.patch b/patches/server/0055-Appleskin-Protocol.patch similarity index 89% rename from patches/server/0057-Appleskin-Protocol.patch rename to patches/server/0055-Appleskin-Protocol.patch index af85be71..df593f77 100644 --- a/patches/server/0057-Appleskin-Protocol.patch +++ b/patches/server/0055-Appleskin-Protocol.patch @@ -17,7 +17,7 @@ index a932f1096fb9a89644d649edc2ef70491d187786..38fe3c8ae7ee5788760f4c295936ccf3 MinecraftTimings.tickablesTimer.startTiming(); // Spigot // Paper for (int i = 0; i < this.tickables.size(); ++i) { diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 930171ea05c8acbc7790a3067ace9bdb1bf8315a..9545676ab8d21c43437004ad9b13536d498969de 100644 +index 5c8fa90a620cad3325b772cca3c5ff374737e7d6..b3315ba92466871fb511980c0348aad80bf5742f 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -363,6 +363,7 @@ public abstract class PlayerList { @@ -54,22 +54,6 @@ index 3116933c347135bdad6115947c4fa8a8eac195cd..053a90ad98c4aa147d338ee2d30d12b1 for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 9cd0abc273391be06511d1f60fe594711ef16f00..ec4bb4e4b08ba3165d978ffd3f055e1aeb6f3f50 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -492,6 +492,11 @@ public final class LeavesConfig { - netherPortalFix = getBoolean("settings.modify.return-nether-portal-fix", netherPortalFix); - } - -+ public static boolean appleskinProtocol = false; -+ private static void appleskinProtocol() { -+ appleskinProtocol = getBoolean("settings.protocol.appleskin-protocol", appleskinProtocol); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/src/main/java/top/leavesmc/leaves/protocol/AppleSkinProtocol.java b/src/main/java/top/leavesmc/leaves/protocol/AppleSkinProtocol.java new file mode 100644 index 0000000000000000000000000000000000000000..6f0b2140df822dc86e360837780768f2f5203041 diff --git a/patches/server/0058-Xaero-Map-Protocol.patch b/patches/server/0056-Xaero-Map-Protocol.patch similarity index 70% rename from patches/server/0058-Xaero-Map-Protocol.patch rename to patches/server/0056-Xaero-Map-Protocol.patch index 21246d72..f4ac795f 100644 --- a/patches/server/0058-Xaero-Map-Protocol.patch +++ b/patches/server/0056-Xaero-Map-Protocol.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Xaero Map Protocol diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 9545676ab8d21c43437004ad9b13536d498969de..abae9652bd3909c619d12bd7c9c16136ab997134 100644 +index b3315ba92466871fb511980c0348aad80bf5742f..da0e91967fb3b303fa5c3b4cf651fbb28ecf31b8 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1295,6 +1295,7 @@ public abstract class PlayerList { @@ -16,32 +16,6 @@ index 9545676ab8d21c43437004ad9b13536d498969de..abae9652bd3909c619d12bd7c9c16136 if (world.isRaining()) { // CraftBukkit start - handle player weather // entityplayer.connection.send(new PacketPlayOutGameStateChange(PacketPlayOutGameStateChange.START_RAINING, 0.0F)); -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index ec4bb4e4b08ba3165d978ffd3f055e1aeb6f3f50..e265d335d57b3f4639c9ad03cb80e9997fa26695 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -20,6 +20,7 @@ import java.lang.reflect.Modifier; - import java.util.HashMap; - import java.util.List; - import java.util.Map; -+import java.util.Random; - import java.util.logging.Level; - - // Powered by Tuinity(https://github.com/Tuinity/Tuinity) -@@ -497,6 +498,13 @@ public final class LeavesConfig { - appleskinProtocol = getBoolean("settings.protocol.appleskin-protocol", appleskinProtocol); - } - -+ public static boolean xaeroMapProtocol = false; -+ public static int xaeroMapServerID = new Random().nextInt(); -+ private static void xaeroMapProtocol() { -+ xaeroMapProtocol = getBoolean("settings.protocol.xaero-map-protocol", xaeroMapProtocol); -+ xaeroMapServerID = getInt("settings.protocol.xaero-map-server-id", xaeroMapServerID); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/src/main/java/top/leavesmc/leaves/protocol/XaeroMapProtocol.java b/src/main/java/top/leavesmc/leaves/protocol/XaeroMapProtocol.java new file mode 100644 index 0000000000000000000000000000000000000000..01c370ec64835fdd038256560f89ed251b3d3d6d diff --git a/patches/server/0059-Leaves-Extra-Yggdrasil-Service.patch b/patches/server/0057-Leaves-Extra-Yggdrasil-Service.patch similarity index 93% rename from patches/server/0059-Leaves-Extra-Yggdrasil-Service.patch rename to patches/server/0057-Leaves-Extra-Yggdrasil-Service.patch index ce947ba8..a4babb08 100644 --- a/patches/server/0059-Leaves-Extra-Yggdrasil-Service.patch +++ b/patches/server/0057-Leaves-Extra-Yggdrasil-Service.patch @@ -18,7 +18,7 @@ index 1459a1f99fe614d072a087cda18788cf13102645..73bfda834fa704b208a5dd9271bb397a super(proxy); this.environment = EnvironmentParser.getEnvironmentFromProperties().orElse(YggdrasilEnvironment.PROD.getEnvironment()); diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java -index cdbf10339a8e8846a8c364de483a0ccd95cd225a..60bfeafed9a6ce7a8b9de128268f462bc0f7d947 100644 +index dae36c6452ccd57a436dd918547b64d59957ab0a..973ecf723e4239307600b42f2d12c264f44d1827 100644 --- a/src/main/java/net/minecraft/server/Main.java +++ b/src/main/java/net/minecraft/server/Main.java @@ -193,7 +193,7 @@ public class Main { @@ -31,7 +31,7 @@ index cdbf10339a8e8846a8c364de483a0ccd95cd225a..60bfeafed9a6ce7a8b9de128268f462b String s = (String) Optional.ofNullable((String) optionset.valueOf("world")).orElse(dedicatedserversettings.getProperties().levelName); LevelStorageSource convertable = LevelStorageSource.createDefault(file.toPath()); diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index e265d335d57b3f4639c9ad03cb80e9997fa26695..fd79c97dc8bda65b47e8e0e792e3525bae9e2b7b 100644 +index 3c80c9f96f79ce3313053cdfabaa958bc2d2a2fb..31fe65c09376544cd919eb2e1acfb3b56b5b9c3b 100644 --- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java +++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java @@ -11,6 +11,7 @@ import org.bukkit.configuration.file.YamlConfiguration; @@ -42,25 +42,16 @@ index e265d335d57b3f4639c9ad03cb80e9997fa26695..fd79c97dc8bda65b47e8e0e792e3525b import top.leavesmc.leaves.util.MathUtils; import java.io.File; -@@ -505,6 +506,18 @@ public final class LeavesConfig { - xaeroMapServerID = getInt("settings.protocol.xaero-map-server-id", xaeroMapServerID); - } - -+ public static boolean extraYggdrasilService = false; -+ public static List extraYggdrasilServiceList = List.of("https://url.with.authlib-injector-yggdrasil"); -+ private static void extraYggdrasilService() { -+ extraYggdrasilService = getBoolean("settings.misc.extra-yggdrasil-service.enable", extraYggdrasilService); -+ extraYggdrasilServiceList = getList("settings.misc.extra-yggdrasil-service.urls", extraYggdrasilServiceList); -+ if (extraYggdrasilService) { +@@ -481,6 +482,9 @@ public final class LeavesConfig { + extraYggdrasilService = getBoolean("settings.misc.extra-yggdrasil-service.enable", extraYggdrasilService); + extraYggdrasilServiceList = getList("settings.misc.extra-yggdrasil-service.urls", extraYggdrasilServiceList); + if (extraYggdrasilService) { + LeavesLogger.LOGGER.warning("extra-yggdrasil-service is an unofficial support. Enabling it may cause data security problems!"); + GlobalConfiguration.get().unsupportedSettings.performUsernameValidation = true; // always check user name + LeavesMinecraftSessionService.initExtraYggdrasilList(); -+ } -+ } -+ - public static final class WorldConfig { + } + } - public final String worldName; diff --git a/src/main/java/top/leavesmc/leaves/profile/LeavesAuthenticationService.java b/src/main/java/top/leavesmc/leaves/profile/LeavesAuthenticationService.java new file mode 100644 index 0000000000000000000000000000000000000000..ee10e314a7e1af28ea008123f75caee26515b692 diff --git a/patches/server/0060-Use-vanilla-random-config.patch b/patches/server/0058-Use-vanilla-random-config.patch similarity index 70% rename from patches/server/0060-Use-vanilla-random-config.patch rename to patches/server/0058-Use-vanilla-random-config.patch index 1435e802..ebe01d1d 100644 --- a/patches/server/0060-Use-vanilla-random-config.patch +++ b/patches/server/0058-Use-vanilla-random-config.patch @@ -30,23 +30,3 @@ index b72006c4b2342ca9d9a81f54f89fa6d979c33c85..4bcaf4387b509df13e8798990f363a54 this.tentacleSpeed = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F; } -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index fd79c97dc8bda65b47e8e0e792e3525bae9e2b7b..201eca1046fd296899538fc630d3857b3579f4a3 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -518,6 +518,15 @@ public final class LeavesConfig { - } - } - -+ public static boolean useVanillaRandom = false; -+ private static boolean useVanillaRandomLock = false; -+ private static void useVanillaRandom() { -+ if (!useVanillaRandomLock) { -+ useVanillaRandom = getBoolean("settings.modify.use-vanilla-random", useVanillaRandom); -+ useVanillaRandomLock = true; -+ } -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0061-Fix-update-suppression-crash.patch b/patches/server/0059-Fix-update-suppression-crash.patch similarity index 86% rename from patches/server/0061-Fix-update-suppression-crash.patch rename to patches/server/0059-Fix-update-suppression-crash.patch index 03985524..29604f93 100644 --- a/patches/server/0061-Fix-update-suppression-crash.patch +++ b/patches/server/0059-Fix-update-suppression-crash.patch @@ -60,22 +60,6 @@ index 19faa8f5f891c1ffbed0af8391dee8202433c447..0f8d5495f9f7306f3267a0741cb6a1a6 CrashReport crashreport = CrashReport.forThrowable(throwable, "Exception while updating neighbours"); CrashReportCategory crashreportsystemdetails = crashreport.addCategory("Block being updated"); -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 201eca1046fd296899538fc630d3857b3579f4a3..dc27195871590ba2b13d299cca5a63193a3da9d5 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -527,6 +527,11 @@ public final class LeavesConfig { - } - } - -+ public static boolean updateSuppressionCrashFix = true; -+ private static void updateSuppressionCrashFix() { -+ updateSuppressionCrashFix = getBoolean("settings.modify.fix-update-suppression-crash", updateSuppressionCrashFix); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/src/main/java/top/leavesmc/leaves/util/UpdateSuppressionException.java b/src/main/java/top/leavesmc/leaves/util/UpdateSuppressionException.java new file mode 100644 index 0000000000000000000000000000000000000000..fa4c91f4ba9a8eab4fdea97737ed778af46518dc diff --git a/patches/server/0062-Bedrock-break-list.patch b/patches/server/0060-Bedrock-break-list.patch similarity index 91% rename from patches/server/0062-Bedrock-break-list.patch rename to patches/server/0060-Bedrock-break-list.patch index 19994be3..5fece752 100644 --- a/patches/server/0062-Bedrock-break-list.patch +++ b/patches/server/0060-Bedrock-break-list.patch @@ -78,26 +78,6 @@ index ee316f2474e43c1e644632772e9eb9cc181756c6..7931f202793e04dcde5a317f06b2a8c4 world.removeBlock(headPos, false); } else { ((ServerLevel)world).getChunkSource().blockChanged(headPos); // ... fix client desync -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index dc27195871590ba2b13d299cca5a63193a3da9d5..7936ede1225be757c89e24af8a56530cfc7042f3 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -532,6 +532,15 @@ public final class LeavesConfig { - updateSuppressionCrashFix = getBoolean("settings.modify.fix-update-suppression-crash", updateSuppressionCrashFix); - } - -+ public static boolean bedrockBreakList = false; -+ private static boolean bedrockBreakListLock = false; -+ private static void bedrockBreakList() { -+ if (!bedrockBreakListLock) { -+ bedrockBreakList = getBoolean("settings.modify.bedrock-break-list", bedrockBreakList); -+ bedrockBreakListLock = true; -+ } -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/src/main/java/top/leavesmc/leaves/util/BreakBedrockList.java b/src/main/java/top/leavesmc/leaves/util/BreakBedrockList.java new file mode 100644 index 0000000000000000000000000000000000000000..a1194aca9f70a44472d1f2ce0cbd6a3e0463eba9 diff --git a/patches/server/0063-Syncmatica-Protocol.patch b/patches/server/0061-Syncmatica-Protocol.patch similarity index 98% rename from patches/server/0063-Syncmatica-Protocol.patch rename to patches/server/0061-Syncmatica-Protocol.patch index 4a6e535c..423b8d35 100644 --- a/patches/server/0063-Syncmatica-Protocol.patch +++ b/patches/server/0061-Syncmatica-Protocol.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Syncmatica Protocol This patch is Powered by Syncmatica(https://github.com/End-Tech/syncmatica) diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 46a7cd5598054ec1acbcbf29b9630e1dde8e6a10..f5c43e538f730df9c400d5d74fafc2ecce28c754 100644 +index 2640a9cac120b779d228018dfc375c4337e2147f..d1d55f8c38cf3d3af6105c92c67132d7ec146a7b 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -322,6 +322,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -54,7 +54,7 @@ index 46a7cd5598054ec1acbcbf29b9630e1dde8e6a10..f5c43e538f730df9c400d5d74fafc2ec ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t dispatch custom payload", ex); this.disconnect("Invalid custom payload!", org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD); diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 7936ede1225be757c89e24af8a56530cfc7042f3..1fd9d864d76f264eec4b8413f2653460c181521b 100644 +index 31fe65c09376544cd919eb2e1acfb3b56b5b9c3b..5aace3df337338fddbac2a6069d3b558e1f14442 100644 --- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java +++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java @@ -12,6 +12,7 @@ import org.spigotmc.SpigotConfig; @@ -65,25 +65,14 @@ index 7936ede1225be757c89e24af8a56530cfc7042f3..1fd9d864d76f264eec4b8413f2653460 import top.leavesmc.leaves.util.MathUtils; import java.io.File; -@@ -541,6 +542,18 @@ public final class LeavesConfig { +@@ -519,6 +520,7 @@ public final class LeavesConfig { + syncmaticaQuota = getBoolean("settings.protocol.syncmatica.quota", syncmaticaQuota); + syncmaticaQuotaLimit = getInt("settings.protocol.syncmatica.quota-limit", syncmaticaQuotaLimit); + if (syncmaticaProtocol) { ++ SyncmaticaProtocol.init(); } } -+ public static boolean syncmaticaProtocol = false; -+ public static boolean syncmaticaQuota = false; -+ public static int syncmaticaQuotaLimit = 40000000; -+ private static void syncmaticaProtocol() { -+ syncmaticaProtocol = getBoolean("settings.protocol.syncmatica.enable", syncmaticaProtocol); -+ syncmaticaQuota = getBoolean("settings.protocol.syncmatica.quota", syncmaticaQuota); -+ syncmaticaQuotaLimit = getInt("settings.protocol.syncmatica.quota-limit", syncmaticaQuotaLimit); -+ if (syncmaticaProtocol) { -+ SyncmaticaProtocol.init(); -+ } -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/src/main/java/top/leavesmc/leaves/protocol/syncmatica/CommunicationManager.java b/src/main/java/top/leavesmc/leaves/protocol/syncmatica/CommunicationManager.java new file mode 100644 index 0000000000000000000000000000000000000000..1dda69bb2ab8103d0886a7800c227344d7fc32f7 diff --git a/patches/server/0064-Fix-trapdoor-feature.patch b/patches/server/0062-Fix-trapdoor-feature.patch similarity index 100% rename from patches/server/0064-Fix-trapdoor-feature.patch rename to patches/server/0062-Fix-trapdoor-feature.patch diff --git a/patches/server/0065-Disable-distance-check-for-UseItemOnPacket.patch b/patches/server/0063-Disable-distance-check-for-UseItemOnPacket.patch similarity index 56% rename from patches/server/0065-Disable-distance-check-for-UseItemOnPacket.patch rename to patches/server/0063-Disable-distance-check-for-UseItemOnPacket.patch index 6ff23f01..694fcc16 100644 --- a/patches/server/0065-Disable-distance-check-for-UseItemOnPacket.patch +++ b/patches/server/0063-Disable-distance-check-for-UseItemOnPacket.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Disable distance check for UseItemOnPacket diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index f5c43e538f730df9c400d5d74fafc2ecce28c754..8868da64ca18ddf674dab200dfab3a5412f70e1c 100644 +index d1d55f8c38cf3d3af6105c92c67132d7ec146a7b..c6a96cc5c398f3a114aee9358b70ae32e38b967e 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1954,7 +1954,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -17,22 +17,3 @@ index f5c43e538f730df9c400d5d74fafc2ecce28c754..8868da64ca18ddf674dab200dfab3a54 Direction enumdirection = movingobjectpositionblock.getDirection(); this.player.resetLastActionTime(); -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 1fd9d864d76f264eec4b8413f2653460c181521b..0c852de41030dd0e2cab49790903de8097a0124d 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -554,6 +554,14 @@ public final class LeavesConfig { - } - } - -+ public static boolean disableDistanceCheckForUseItem = false; -+ private static void disableDistanceCheckForUseItem() { -+ disableDistanceCheckForUseItem = getBoolean("settings.modify.disable-distance-check-for-use-item", disableDistanceCheckForUseItem); -+ if (carpetAlternativeBlockPlacement) { -+ disableDistanceCheckForUseItem = true; -+ } -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0066-No-feather-falling-trample.patch b/patches/server/0064-No-feather-falling-trample.patch similarity index 70% rename from patches/server/0066-No-feather-falling-trample.patch rename to patches/server/0064-No-feather-falling-trample.patch index 5a30a3b8..8d2874c1 100644 --- a/patches/server/0066-No-feather-falling-trample.patch +++ b/patches/server/0064-No-feather-falling-trample.patch @@ -22,19 +22,3 @@ index 552d8c8f3f56bfccd25d11488ed7ec1644a92f47..a0af2e1b417a311464d09d3a9fb458f9 // CraftBukkit start - Interact soil org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index 0c852de41030dd0e2cab49790903de8097a0124d..dc763705f4e8982bd99a7cd5db5e8487574d2753 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -562,6 +562,11 @@ public final class LeavesConfig { - } - } - -+ public static boolean noFeatherFallingTrample = false; -+ private static void noFeatherFallingTrample() { -+ noFeatherFallingTrample = getBoolean("settings.modify.no-feather-falling-trample", noFeatherFallingTrample); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0067-Shared-villager-discounts.patch b/patches/server/0065-Shared-villager-discounts.patch similarity index 66% rename from patches/server/0067-Shared-villager-discounts.patch rename to patches/server/0065-Shared-villager-discounts.patch index 22b8a3d0..48e1923c 100644 --- a/patches/server/0067-Shared-villager-discounts.patch +++ b/patches/server/0065-Shared-villager-discounts.patch @@ -25,19 +25,3 @@ index 097007c1c25ba55d9916fc820dd1d1149d81f6f4..67c0a46b098d631b862df80511990c39 return entityGossips != null ? entityGossips.weightedValue(gossipTypeFilter) : 0; } -diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index dc763705f4e8982bd99a7cd5db5e8487574d2753..673b2608371b7e943d2214f78e39345c07ee8a36 100644 ---- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java -+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -567,6 +567,11 @@ public final class LeavesConfig { - noFeatherFallingTrample = getBoolean("settings.modify.no-feather-falling-trample", noFeatherFallingTrample); - } - -+ public static boolean sharedVillagerDiscounts = false; -+ private static void sharedVillagerDiscounts() { -+ sharedVillagerDiscounts = getBoolean("settings.modify.shared-villager-discounts", sharedVillagerDiscounts); -+ } -+ - public static final class WorldConfig { - - public final String worldName; diff --git a/patches/server/0068-Fix-hoppers-incorrect-update.patch b/patches/server/0066-Fix-hoppers-incorrect-update.patch similarity index 100% rename from patches/server/0068-Fix-hoppers-incorrect-update.patch rename to patches/server/0066-Fix-hoppers-incorrect-update.patch