From 60ff1db36d29efc7e75fab4290563ae80062c4a0 Mon Sep 17 00:00:00 2001 From: MC_XiaoHei Date: Thu, 25 Sep 2025 17:21:54 +0800 Subject: [PATCH] feat: fix some error --- .../features/0050-Creative-fly-no-clip.patch | 4 +-- .../features/0072-Replay-Mod-API.patch | 30 +++++++++++++------ .../0077-Spider-jockeys-drop-gapples.patch | 30 +++++++++++++------ .../0136-Lithium-Sleeping-Block-Entity.patch | 12 ++++---- .../org/leavesmc/leaves/bot/ServerBot.java | 24 ++++++++------- .../bot/agent/actions/ServerLookAction.java | 8 +++-- .../LeavesMinecraftSessionService.java | 4 +-- .../leaves/protocol/AppleSkinProtocol.java | 2 +- .../leaves/protocol/BBORProtocol.java | 4 +-- .../leaves/protocol/jade/util/CommonUtil.java | 2 +- .../servux/ServuxHudDataProtocol.java | 2 +- .../servux/ServuxStructuresProtocol.java | 10 ++++--- .../servux/litematics/utils/EntityUtils.java | 2 +- .../syncmatica/CommunicationManager.java | 4 +-- .../syncmatica/PlayerIdentifierProvider.java | 2 +- .../leaves/replay/ServerPhotographer.java | 10 ++++--- 16 files changed, 91 insertions(+), 59 deletions(-) diff --git a/leaves-server/minecraft-patches/features/0050-Creative-fly-no-clip.patch b/leaves-server/minecraft-patches/features/0050-Creative-fly-no-clip.patch index b4ae4071..57273c4d 100644 --- a/leaves-server/minecraft-patches/features/0050-Creative-fly-no-clip.patch +++ b/leaves-server/minecraft-patches/features/0050-Creative-fly-no-clip.patch @@ -110,7 +110,7 @@ index 1f0e7c391d02b18e2c89700025713ec3d759f2ea..300ee12ca9584e53e9d72e3ebfd039be org.bukkit.event.block.BlockCanBuildEvent event = new org.bukkit.event.block.BlockCanBuildEvent(org.bukkit.craftbukkit.block.CraftBlock.at(context.getLevel(), clickedPos), player, org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(blockState), defaultReturn, org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(context.getHand())); // Paper - Expose hand in BlockCanBuildEvent diff --git a/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java b/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java -index 10c123b9cffdc79d069a82d09e57b24bc1572771..034f01c0f8987fbfd32120c8186aa8c6f44eb81d 100644 +index 10c123b9cffdc79d069a82d09e57b24bc1572771..85ba7ef0c2e50269427e168336cf29f5375f731d 100644 --- a/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java +++ b/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java @@ -153,7 +153,7 @@ public class ShulkerBoxBlockEntity extends RandomizableContainerBlockEntity impl @@ -118,7 +118,7 @@ index 10c123b9cffdc79d069a82d09e57b24bc1572771..034f01c0f8987fbfd32120c8186aa8c6 if (!entities.isEmpty()) { for (Entity entity : entities) { - if (entity.getPistonPushReaction() != PushReaction.IGNORE) { -+ if (entity.getPistonPushReaction() != PushReaction.IGNORE && !(entity instanceof Player player && player.isCreativeFlyOrSpectator())) { // Leaves - creative no clip ++ if (entity.getPistonPushReaction() != PushReaction.IGNORE && !(entity instanceof net.minecraft.world.entity.player.Player player && player.isCreativeFlyOrSpectator())) { // Leaves - creative no clip entity.move( MoverType.SHULKER_BOX, new Vec3( diff --git a/leaves-server/minecraft-patches/features/0072-Replay-Mod-API.patch b/leaves-server/minecraft-patches/features/0072-Replay-Mod-API.patch index 079fa285..4f513ddc 100644 --- a/leaves-server/minecraft-patches/features/0072-Replay-Mod-API.patch +++ b/leaves-server/minecraft-patches/features/0072-Replay-Mod-API.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Replay Mod API This patch is Powered by ReplayMod(https://github.com/ReplayMod) diff --git a/net/minecraft/commands/CommandSourceStack.java b/net/minecraft/commands/CommandSourceStack.java -index 6ead209287ab021b8245fa5c3b7f18ca7d9c66b3..c8744cb6ae4f5a2d1527bace129d9b4b8c1a8cd9 100644 +index 6ead209287ab021b8245fa5c3b7f18ca7d9c66b3..cc0213907d1291e31261e923c74bdeaae2765e2e 100644 --- a/net/minecraft/commands/CommandSourceStack.java +++ b/net/minecraft/commands/CommandSourceStack.java @@ -580,7 +580,7 @@ public class CommandSourceStack implements ExecutionCommandSource getOnlinePlayerNames() { - return this.entity instanceof ServerPlayer sourcePlayer && !sourcePlayer.getBukkitEntity().hasPermission("paper.bypass-visibility.tab-completion") ? this.getServer().getPlayerList().getPlayers().stream().filter(serverPlayer -> sourcePlayer.getBukkitEntity().canSee(serverPlayer.getBukkitEntity())).map(serverPlayer -> serverPlayer.getGameProfile().name()).toList() : Lists.newArrayList(this.server.getPlayerNames()); // Paper - Make CommandSourceStack respect hidden players -+ return this.entity instanceof ServerPlayer sourcePlayer && !(sourcePlayer instanceof org.leavesmc.leaves.replay.ServerPhotographer) && !sourcePlayer.getBukkitEntity().hasPermission("paper.bypass-visibility.tab-completion") ? this.getServer().getPlayerList().getPlayers().stream().filter(serverPlayer -> sourcePlayer.getBukkitEntity().canSee(serverPlayer.getBukkitEntity())).map(serverPlayer -> serverPlayer.getGameProfile().getName()).toList() : Lists.newArrayList(this.server.getPlayerNames()); // Paper - Make CommandSourceStack respect hidden players // Leaves - only real player ++ return this.entity instanceof ServerPlayer sourcePlayer && !(sourcePlayer instanceof org.leavesmc.leaves.replay.ServerPhotographer) && !sourcePlayer.getBukkitEntity().hasPermission("paper.bypass-visibility.tab-completion") ? this.getServer().getPlayerList().getPlayers().stream().filter(serverPlayer -> sourcePlayer.getBukkitEntity().canSee(serverPlayer.getBukkitEntity())).map(serverPlayer -> serverPlayer.getGameProfile().name()).toList() : Lists.newArrayList(this.server.getPlayerNames()); // Paper - Make CommandSourceStack respect hidden players // Leaves - only real player } @Override @@ -265,21 +265,20 @@ index cfe62a56ce1b4222ed6d73fc6390b7726542a9cd..234478bca5f8b1ea768b487c943b44e0 .map(Player::nameAndId) .filter(nameAndId -> !playerList.getWhiteList().isWhiteListed(nameAndId)) diff --git a/net/minecraft/server/gui/PlayerListComponent.java b/net/minecraft/server/gui/PlayerListComponent.java -index 5a8cd3e6b448a4472092690cf589bca10b142126..c9abb60b96e07fae86111be503bc49422ba92906 100644 +index 5a8cd3e6b448a4472092690cf589bca10b142126..8f22d5faf89006153b1fff4ff0b622f8de9fb588 100644 --- a/net/minecraft/server/gui/PlayerListComponent.java +++ b/net/minecraft/server/gui/PlayerListComponent.java -@@ -17,9 +17,8 @@ public class PlayerListComponent extends JList { +@@ -17,8 +17,8 @@ public class PlayerListComponent extends JList { if (this.tickCount++ % 20 == 0) { Vector list = new Vector<>(); - for (int i = 0; i < this.server.getPlayerList().getPlayers().size(); i++) { - list.add(this.server.getPlayerList().getPlayers().get(i).getGameProfile().name()); -- } + for (int i = 0; i < this.server.getPlayerList().realPlayers.size(); i++) { // Leaves - only real players + list.add(this.server.getPlayerList().realPlayers.get(i).getGameProfile().name()); // Leaves - only real players + } this.setListData(list); - } diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java index 5deab686b386e3b82205a828ae12a72cb0f2e6fb..0db088864eac6c65a78620953821a1280056a688 100644 --- a/net/minecraft/server/level/ServerLevel.java @@ -302,8 +301,21 @@ index 5deab686b386e3b82205a828ae12a72cb0f2e6fb..0db088864eac6c65a78620953821a128 ServerLevel.this.realPlayers.remove(serverPlayer); } // Leaves end - skip +diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java +index 0981f5d07144f75148b035e41f82190d0cd6526a..13c6ed8e37875e1ae061cf0a55b05a7f10fa24e1 100644 +--- a/net/minecraft/server/level/ServerPlayer.java ++++ b/net/minecraft/server/level/ServerPlayer.java +@@ -522,7 +522,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc + // Paper start - Expand PlayerGameModeChangeEvent + this.loadGameTypes(input); + } +- private void loadGameTypes(ValueInput input) { ++ public void loadGameTypes(ValueInput input) { // Leaves - private -> public + if (this.server.getForcedGameType() != null && this.server.getForcedGameType() != readPlayerMode(input, "playerGameType")) { + if (new org.bukkit.event.player.PlayerGameModeChangeEvent(this.getBukkitEntity(), org.bukkit.GameMode.getByValue(this.server.getDefaultGameType().getId()), org.bukkit.event.player.PlayerGameModeChangeEvent.Cause.DEFAULT_GAMEMODE, null).callEvent()) { + this.gameMode.setGameModeForPlayer(this.server.getForcedGameType(), GameType.DEFAULT_MODE); diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 248c08b4f1dc6cf47ac311d5872ae56485e3b425..39e624aca0cc803b682ea8d2304dcd86480265bb 100644 +index 248c08b4f1dc6cf47ac311d5872ae56485e3b425..19c8b1a728c28ed6e325b0b5e3d4aec764b74f0b 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java @@ -125,6 +125,7 @@ public abstract class PlayerList { @@ -363,7 +375,7 @@ index 248c08b4f1dc6cf47ac311d5872ae56485e3b425..39e624aca0cc803b682ea8d2304dcd86 + this.playersByName.put(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT), player); // Spigot + this.playersByUUID.put(player.getUUID(), player); + -+ player.supressTrackerForLogin = true; ++ player.suppressTrackerForLogin = true; + worldserver1.addNewPlayer(player); + this.server.getCustomBossEvents().onPlayerConnect(player); + org.bukkit.craftbukkit.entity.CraftPlayer bukkitPlayer = player.getBukkitEntity(); @@ -409,7 +421,7 @@ index 248c08b4f1dc6cf47ac311d5872ae56485e3b425..39e624aca0cc803b682ea8d2304dcd86 + } + + player.sentListPacket = true; -+ player.supressTrackerForLogin = false; ++ player.suppressTrackerForLogin = false; + ((ServerLevel)player.level()).getChunkSource().chunkMap.addEntity(player); + + this.sendLevelInfo(player, worldserver1); diff --git a/leaves-server/minecraft-patches/features/0077-Spider-jockeys-drop-gapples.patch b/leaves-server/minecraft-patches/features/0077-Spider-jockeys-drop-gapples.patch index 95518769..96443cc1 100644 --- a/leaves-server/minecraft-patches/features/0077-Spider-jockeys-drop-gapples.patch +++ b/leaves-server/minecraft-patches/features/0077-Spider-jockeys-drop-gapples.patch @@ -4,28 +4,40 @@ Date: Tue, 5 Sep 2023 08:49:01 +0800 Subject: [PATCH] Spider jockeys drop gapples +diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java +index fccb328fbad2dafe1655acbcbca3e05d85864f23..ad72fbbf8fd27a7fc1e9dd599e8721bc4a7294ff 100644 +--- a/net/minecraft/world/entity/monster/Creeper.java ++++ b/net/minecraft/world/entity/monster/Creeper.java +@@ -54,7 +54,7 @@ public class Creeper extends Monster { + public int swell; + public int maxSwell = 30; + public int explosionRadius = 3; +- private boolean droppedSkulls; ++ public boolean droppedSkulls; // Leaves - private -> public + public @Nullable Entity entityIgniter; // CraftBukkit + + public Creeper(EntityType entityType, Level level) { diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java -index 4eb35a7a2dfcb4803c00e1e9179fea8186b15d41..b81ca006d33f14faf54ecce3ad4c7d198b9794d0 100644 +index 4eb35a7a2dfcb4803c00e1e9179fea8186b15d41..7f564227fb022e38a28190683cf54406c764a06f 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java -@@ -129,4 +129,26 @@ public class Skeleton extends AbstractSkeleton { +@@ -129,4 +129,25 @@ public class Skeleton extends AbstractSkeleton { SoundEvent getStepSound() { return SoundEvents.SKELETON_STEP; } + -+ ++ // Leaves start - spider jockeys drop gapples + @Override -+ protected void dropCustomDeathLoot(ServerLevel level, DamageSource damageSource, boolean recentlyHit) { ++ protected void dropCustomDeathLoot(net.minecraft.server.level.ServerLevel level, DamageSource damageSource, boolean recentlyHit) { + super.dropCustomDeathLoot(level, damageSource, recentlyHit); -+ if (damageSource.getEntity() instanceof Creeper creeper && creeper.canDropMobsSkull()) { -+ creeper.increaseDroppedSkulls(); -+ this.spawnAtLocation(level, Items.SKELETON_SKULL); ++ if (damageSource.getEntity() instanceof Creeper creeper && creeper.isPowered() && !creeper.droppedSkulls) { ++ creeper.droppedSkulls = true; ++ this.spawnAtLocation(level, net.minecraft.world.item.Items.SKELETON_SKULL); + } + } + -+ // Leaves start - spider jockeys drop gapples + @Override -+ protected void dropFromLootTable(ServerLevel level, DamageSource damageSource, boolean causedByPlayer) { ++ protected void dropFromLootTable(net.minecraft.server.level.ServerLevel level, DamageSource damageSource, boolean causedByPlayer) { + super.dropFromLootTable(level, damageSource, causedByPlayer); + if (org.leavesmc.leaves.LeavesConfig.modify.spiderJockeysDropGapples > 0.0D) { + if (this.getRootVehicle().getType() == EntityType.SPIDER && this.random.nextDouble() < org.leavesmc.leaves.LeavesConfig.modify.spiderJockeysDropGapples) { diff --git a/leaves-server/minecraft-patches/features/0136-Lithium-Sleeping-Block-Entity.patch b/leaves-server/minecraft-patches/features/0136-Lithium-Sleeping-Block-Entity.patch index ea2bd66f..5d802c1a 100644 --- a/leaves-server/minecraft-patches/features/0136-Lithium-Sleeping-Block-Entity.patch +++ b/leaves-server/minecraft-patches/features/0136-Lithium-Sleeping-Block-Entity.patch @@ -608,7 +608,7 @@ index 5c7638fed052d68023646b86d5f4bb5b3510b390..a646628fb486056ea631f22f54c03259 + // Leaves end - Lithium Sleeping Block Entity } diff --git a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -index 646d4c26870bb03f6d397b5e03ad97923d0928b2..77cfc97b3c8926b8126076f41c801c418f3b93fd 100644 +index 646d4c26870bb03f6d397b5e03ad97923d0928b2..6abdcd09c522b8278a381f08151c1a5fc33d1b2e 100644 --- a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +++ b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java @@ -39,7 +39,7 @@ import net.minecraft.world.level.storage.ValueInput; @@ -674,7 +674,7 @@ index 646d4c26870bb03f6d397b5e03ad97923d0928b2..77cfc97b3c8926b8126076f41c801c41 + + @Override + public void lithium$handleSetChanged() { -+ if (this.isSleeping() && this.level != null && !this.level.isClientSide) { ++ if (this.isSleeping() && this.level != null && !this.level.isClientSide()) { + this.wakeUpNow(); + } + } @@ -1245,7 +1245,7 @@ index 6b05556a84ae6a8f08025439db29db207325bb7a..f02904e9be89dd4e6ee416d0d383b718 + @Override public boolean lithium$itemInsertionTestRequiresStackSize1() {return true;} // Leaves - Lithium Sleeping Block Entity } diff --git a/net/minecraft/world/level/block/entity/CrafterBlockEntity.java b/net/minecraft/world/level/block/entity/CrafterBlockEntity.java -index a631ad830d4820fbf983ef321b40f3192db4527f..6ecb54cbd7d57a9198e8b1273ee0cebb373a005d 100644 +index a631ad830d4820fbf983ef321b40f3192db4527f..8c515d1164fe62b13633d30894e8291cc242cbb3 100644 --- a/net/minecraft/world/level/block/entity/CrafterBlockEntity.java +++ b/net/minecraft/world/level/block/entity/CrafterBlockEntity.java @@ -22,7 +22,7 @@ import net.minecraft.world.level.block.state.BlockState; @@ -1316,7 +1316,7 @@ index a631ad830d4820fbf983ef321b40f3192db4527f..6ecb54cbd7d57a9198e8b1273ee0cebb + + @Override + public void lithium$handleSetChanged() { -+ if (this.isSleeping() && this.level != null && !this.level.isClientSide) { ++ if (this.isSleeping() && this.level != null && !this.level.isClientSide()) { + this.wakeUpNow(); + } + } @@ -2344,7 +2344,7 @@ index 83a8dc51d0346fb5b28922e7b54d5ee58b315228..b67a1cacad31a93276988560ef03879a + // Leaves end - Lithium Sleeping Block Entity } diff --git a/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java b/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java -index 034f01c0f8987fbfd32120c8186aa8c6f44eb81d..7b5518340aede4fe626c9aae0c5a301ab6522972 100644 +index 85ba7ef0c2e50269427e168336cf29f5375f731d..faf41dcb07f0259fde4098b39a149c273fcc9c80 100644 --- a/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java +++ b/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java @@ -32,7 +32,7 @@ import net.minecraft.world.level.storage.ValueOutput; @@ -2442,7 +2442,7 @@ index 9542e5c9418d74f131f794687b6c8276159d8c3f..906d7f9fb9135205ae7099cb12a50300 } diff --git a/net/minecraft/world/level/chunk/LevelChunk.java b/net/minecraft/world/level/chunk/LevelChunk.java -index ff76f9ddc97c326bbe56a7ec138b11bf8e2d108d..7eb9d3e60869dbc8eafa6272c7e7bdcc2943b3ae 100644 +index e5175fe703a103f7056618ca6322624c7fd8ad95..faf16d133286fe10a46048e8cb750ccaef48d704 100644 --- a/net/minecraft/world/level/chunk/LevelChunk.java +++ b/net/minecraft/world/level/chunk/LevelChunk.java @@ -932,12 +932,14 @@ public class LevelChunk extends ChunkAccess implements DebugValueSource, ca.spot diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/bot/ServerBot.java b/leaves-server/src/main/java/org/leavesmc/leaves/bot/ServerBot.java index 159a0384..0b83e9df 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/bot/ServerBot.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/bot/ServerBot.java @@ -81,6 +81,8 @@ import java.util.Objects; import java.util.UUID; import java.util.function.Predicate; +import static net.minecraft.server.MinecraftServer.getServer; + public class ServerBot extends ServerPlayer { private final List> actions; @@ -199,7 +201,7 @@ public class ServerBot extends ServerPlayer { this.notSleepTicks = 0; } - if (!this.level().isClientSide && this.level().isBrightOutside()) { + if (!this.level().isClientSide() && this.level().isBrightOutside()) { this.stopSleepInBed(false, true); } } else if (this.sleepCounter > 0) { @@ -212,7 +214,7 @@ public class ServerBot extends ServerPlayer { this.updateIsUnderwater(); if (this.getConfigValue(Configs.TICK_TYPE) == TickType.NETWORK) { - this.getServer().scheduleOnMain(this::runAction); + getServer().scheduleOnMain(this::runAction); } this.livingEntityTick(); @@ -350,7 +352,7 @@ public class ServerBot extends ServerPlayer { if (LeavesConfig.modify.fakeplayer.canOpenInventory) { if (player instanceof ServerPlayer player1 && player.getMainHandItem().isEmpty()) { BotInventoryOpenEvent event = new BotInventoryOpenEvent(this.getBukkitEntity(), player1.getBukkitEntity()); - this.getServer().server.getPluginManager().callEvent(event); + getServer().server.getPluginManager().callEvent(event); if (!event.isCancelled()) { player.openMenu(new SimpleMenuProvider((i, inventory, p) -> ChestMenu.sixRows(i, inventory, this.container), this.getDisplayName())); return InteractionResult.SUCCESS; @@ -479,17 +481,17 @@ public class ServerBot extends ServerPlayer { } public void renderInfo() { - this.getServer().getPlayerList().getPlayers().forEach(this::sendPlayerInfo); + getServer().getPlayerList().getPlayers().forEach(this::sendPlayerInfo); } public void renderData() { - this.getServer().getPlayerList().getPlayers().forEach( + getServer().getPlayerList().getPlayers().forEach( player -> this.sendFakeDataIfNeed(player, false) ); } private void sendPacket(Packet packet) { - this.getServer().getPlayerList().getPlayers().forEach(player -> player.connection.send(packet)); + getServer().getPlayerList().getPlayers().forEach(player -> player.connection.send(packet)); } @Override @@ -498,7 +500,7 @@ public class ServerBot extends ServerPlayer { Component defaultMessage = this.getCombatTracker().getDeathMessage(); BotDeathEvent event = new BotDeathEvent(this.getBukkitEntity(), PaperAdventure.asAdventure(defaultMessage), flag); - this.getServer().server.getPluginManager().callEvent(event); + getServer().server.getPluginManager().callEvent(event); if (event.isCancelled()) { if (this.getHealth() <= 0) { @@ -511,15 +513,15 @@ public class ServerBot extends ServerPlayer { net.kyori.adventure.text.Component deathMessage = event.deathMessage(); if (event.isSendDeathMessage() && deathMessage != null && !deathMessage.equals(net.kyori.adventure.text.Component.empty())) { - this.getServer().getPlayerList().broadcastSystemMessage(PaperAdventure.asVanilla(deathMessage), false); + getServer().getPlayerList().broadcastSystemMessage(PaperAdventure.asVanilla(deathMessage), false); } - this.getServer().getBotList().removeBot(this, BotRemoveEvent.RemoveReason.DEATH, null, false); + getServer().getBotList().removeBot(this, BotRemoveEvent.RemoveReason.DEATH, null, false); } @Override - public boolean startRiding(@NotNull Entity vehicle, boolean force) { - if (super.startRiding(vehicle, force)) { + public boolean startRiding(@NotNull Entity vehicle, boolean force, boolean sendGameEvent) { + if (super.startRiding(vehicle, force, sendGameEvent)) { if (vehicle.getControllingPassenger() == this) { // see net.minecraft.server.networkServerGamePacketListenerImpl#handleMoveVehicle this.setDeltaMovement(Vec3.ZERO); this.setYRot(vehicle.yRotO); diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerLookAction.java b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerLookAction.java index abc10852..24f84502 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerLookAction.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerLookAction.java @@ -18,6 +18,8 @@ import java.util.Arrays; import java.util.List; import java.util.stream.Stream; +import static net.minecraft.server.MinecraftServer.getServer; + public class ServerLookAction extends ServerBotAction { private static final Vector ZERO_VECTOR = new Vector(0, 0, 0); @@ -29,8 +31,8 @@ public class ServerLookAction extends ServerBotAction { public ServerLookAction() { super("look", CommandArgument.of(CommandArgumentType.STRING, CommandArgumentType.DOUBLE, CommandArgumentType.DOUBLE), ServerLookAction::new); this.setSuggestion(0, (sender, arg) -> sender instanceof Player player ? - Pair.of(Stream.concat(Arrays.stream(MinecraftServer.getServer().getPlayerNames()), Stream.of(DF.format(player.getX()))).toList(), "|") : - Pair.of(Stream.concat(Arrays.stream(MinecraftServer.getServer().getPlayerNames()), Stream.of("0")).toList(), "|") + Pair.of(Stream.concat(Arrays.stream(getServer().getPlayerNames()), Stream.of(DF.format(player.getX()))).toList(), "|") : + Pair.of(Stream.concat(Arrays.stream(getServer().getPlayerNames()), Stream.of("0")).toList(), "|") ); this.setSuggestion(1, (sender, arg) -> sender instanceof Player player ? Pair.of(List.of(DF.format(player.getY())), "") : Pair.of(List.of("0"), "")); this.setSuggestion(2, (sender, arg) -> sender instanceof Player player ? Pair.of(List.of(DF.format(player.getZ())), "") : Pair.of(List.of("0"), "")); @@ -90,7 +92,7 @@ public class ServerLookAction extends ServerBotAction { @Override public void loadCommand(ServerPlayer player, @NotNull CommandArgumentResult result) { String nameOrX = result.readString(player.getScoreboardName()); - ServerPlayer player1 = player.getServer().getPlayerList().getPlayerByName(nameOrX); + ServerPlayer player1 = getServer().getPlayerList().getPlayerByName(nameOrX); if (player1 != null) { this.setTarget(player1); return; diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/profile/LeavesMinecraftSessionService.java b/leaves-server/src/main/java/org/leavesmc/leaves/profile/LeavesMinecraftSessionService.java index 49ef02e1..b489baa2 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/profile/LeavesMinecraftSessionService.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/profile/LeavesMinecraftSessionService.java @@ -74,14 +74,14 @@ public class LeavesMinecraftSessionService extends PaperMinecraftSessionService final HasJoinedMinecraftServerResponse response = client.get(url, HasJoinedMinecraftServerResponse.class); if (response != null && response.id() != null) { if (LeavesConfig.mics.yggdrasil.loginProtect && cache != null) { - if (!response.id().equals(cache.getId())) { + if (!response.id().equals(cache.id())) { continue; } } final GameProfile result1 = new GameProfile(response.id(), profileName); if (response.properties() != null) { - result1.getProperties().putAll(response.properties()); + result1.properties().putAll(response.properties()); } final Set profileActions = response.profileActions().stream() diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/AppleSkinProtocol.java b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/AppleSkinProtocol.java index a6407b37..77ff7a06 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/AppleSkinProtocol.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/AppleSkinProtocol.java @@ -54,7 +54,7 @@ public class AppleSkinProtocol implements LeavesProtocol { @ProtocolHandler.MinecraftRegister(onlyNamespace = true) public static void onPlayerSubscribed(@NotNull Context context, ResourceLocation id) { - subscribedChannels.computeIfAbsent(context.profile().getId(), k -> new HashSet<>()).add(id.getPath()); + subscribedChannels.computeIfAbsent(context.profile().id(), k -> new HashSet<>()).add(id.getPath()); } @ProtocolHandler.Ticker diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/BBORProtocol.java b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/BBORProtocol.java index 6698d367..b7de08f6 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/BBORProtocol.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/BBORProtocol.java @@ -69,8 +69,8 @@ public class BBORProtocol implements LeavesProtocol { ServerLevel overworld = MinecraftServer.getServer().overworld(); ProtocolUtils.sendBytebufPacket(player, INITIALIZE_CLIENT, buf -> { buf.writeLong(overworld.getSeed()); - buf.writeInt(overworld.levelData.getSpawnPos().getX()); - buf.writeInt(overworld.levelData.getSpawnPos().getZ()); + buf.writeInt(overworld.levelData.getRespawnData().pos().getX()); + buf.writeInt(overworld.levelData.getRespawnData().pos().getZ()); }); sendStructureList(player); } diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/util/CommonUtil.java b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/util/CommonUtil.java index 4e48a268..606e463d 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/util/CommonUtil.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/jade/util/CommonUtil.java @@ -48,7 +48,7 @@ public class CommonUtil { return null; } Optional optional = SkullBlockEntity.fetchGameProfile(String.valueOf(uuid)).getNow(Optional.empty()); - return optional.map(GameProfile::getName).orElse(null); + return optional.map(GameProfile::name).orElse(null); } diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/servux/ServuxHudDataProtocol.java b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/servux/ServuxHudDataProtocol.java index 70325ded..f5c33c35 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/servux/ServuxHudDataProtocol.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/servux/ServuxHudDataProtocol.java @@ -164,7 +164,7 @@ public class ServuxHudDataProtocol implements LeavesProtocol { private static void putWorldData(@NotNull CompoundTag metadata) { ServerLevel level = MinecraftServer.getServer().overworld(); - BlockPos spawnPos = level.levelData.getSpawnPos(); + BlockPos spawnPos = level.levelData.getRespawnData().pos(); metadata.putInt("spawnPosX", spawnPos.getX()); metadata.putInt("spawnPosY", spawnPos.getY()); metadata.putInt("spawnPosZ", spawnPos.getZ()); diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/servux/ServuxStructuresProtocol.java b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/servux/ServuxStructuresProtocol.java index 6b4421f9..af57e659 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/servux/ServuxStructuresProtocol.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/servux/ServuxStructuresProtocol.java @@ -35,6 +35,8 @@ import java.util.Set; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; +import static net.minecraft.server.MinecraftServer.getServer; + // Powered by Servux(https://github.com/sakura-ryoko/servux) @LeavesProtocol.Register(namespace = "servux") @@ -69,7 +71,7 @@ public class ServuxStructuresProtocol implements LeavesProtocol { @ProtocolHandler.Ticker public static void tick() { - MinecraftServer server = MinecraftServer.getServer(); + MinecraftServer server = getServer(); int tickCounter = server.getTickCount(); retainDistance = server.getPlayerList().getViewDistance() + 2; for (ServerPlayer player : players.values()) { @@ -79,8 +81,8 @@ public class ServuxStructuresProtocol implements LeavesProtocol { } public static void onStartedWatchingChunk(ServerPlayer player, LevelChunk chunk) { - MinecraftServer server = player.getServer(); - if (players.containsKey(player.getId()) && server != null) { + MinecraftServer server = getServer(); + if (players.containsKey(player.getId())) { addChunkTimeoutIfHasReferences(player.getUUID(), chunk, server.getTickCount()); } } @@ -119,7 +121,7 @@ public class ServuxStructuresProtocol implements LeavesProtocol { LeavesLogger.LOGGER.warning(player.getScoreboardName() + " re-register servux:structures"); } - MinecraftServer server = MinecraftServer.getServer(); + MinecraftServer server = getServer(); sendMetaData(player); initialSyncStructures(player, player.moonrise$getViewDistanceHolder().getViewDistances().sendViewDistance() + 2, server.getTickCount()); } diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/servux/litematics/utils/EntityUtils.java b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/servux/litematics/utils/EntityUtils.java index c031382d..e9c9a77b 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/servux/litematics/utils/EntityUtils.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/servux/litematics/utils/EntityUtils.java @@ -53,7 +53,7 @@ public class EntityUtils { Entity passenger = createEntityAndPassengersFromNBT(tagList.getCompoundOrEmpty(i), world); if (passenger != null) { - passenger.startRiding(entity, true); + passenger.startRiding(entity, true, true); } } } diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/syncmatica/CommunicationManager.java b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/syncmatica/CommunicationManager.java index e19ec8fe..4e009397 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/syncmatica/CommunicationManager.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/syncmatica/CommunicationManager.java @@ -55,7 +55,7 @@ public class CommunicationManager implements LeavesProtocol { final VersionHandshakeServer hi = new VersionHandshakeServer(newPlayer); playerMap.put(newPlayer, player); final GameProfile profile = player.getGameProfile(); - SyncmaticaProtocol.getPlayerIdentifierProvider().updateName(profile.getId(), profile.getName()); + SyncmaticaProtocol.getPlayerIdentifierProvider().updateName(profile.id(), profile.name()); startExchangeUnchecked(hi); } @@ -149,7 +149,7 @@ public class CommunicationManager implements LeavesProtocol { final UUID placementId = packetBuf.readUUID(); final ServerPlacement placement = SyncmaticaProtocol.getSyncmaticManager().getPlacement(placementId); if (placement != null) { - if (!getGameProfile(source).getId().equals(placement.getOwner().uuid)) { + if (!getGameProfile(source).id().equals(placement.getOwner().uuid)) { return; } diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/syncmatica/PlayerIdentifierProvider.java b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/syncmatica/PlayerIdentifierProvider.java index 4a6248fc..a4f983a5 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/syncmatica/PlayerIdentifierProvider.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/syncmatica/PlayerIdentifierProvider.java @@ -22,7 +22,7 @@ public class PlayerIdentifierProvider { } public PlayerIdentifier createOrGet(final @NotNull GameProfile gameProfile) { - return createOrGet(gameProfile.getId(), gameProfile.getName()); + return createOrGet(gameProfile.id(), gameProfile.name()); } public PlayerIdentifier createOrGet(final UUID uuid, final String playerName) { diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/replay/ServerPhotographer.java b/leaves-server/src/main/java/org/leavesmc/leaves/replay/ServerPhotographer.java index d9d8ef31..240afb93 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/replay/ServerPhotographer.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/replay/ServerPhotographer.java @@ -24,6 +24,8 @@ import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CopyOnWriteArrayList; +import static net.minecraft.server.MinecraftServer.getServer; + public class ServerPhotographer extends ServerPlayer { private static final List photographers = new CopyOnWriteArrayList<>(); @@ -49,7 +51,7 @@ public class ServerPhotographer extends ServerPlayer { throw new IllegalArgumentException(state.id + " is a invalid photographer id"); } - MinecraftServer server = MinecraftServer.getServer(); + MinecraftServer server = getServer(); ServerLevel world = ((CraftWorld) state.loc.getWorld()).getHandle(); GameProfile profile = new GameProfile(UUID.randomUUID(), state.id); @@ -62,7 +64,7 @@ public class ServerPhotographer extends ServerPlayer { photographer.createState = state; photographer.recorder.start(); - MinecraftServer.getServer().getPlayerList().placeNewPhotographer(photographer.recorder, photographer, world); + getServer().getPlayerList().placeNewPhotographer(photographer.recorder, photographer, world); photographer.level().chunkSource.move(photographer); photographer.setInvisible(true); photographers.add(photographer); @@ -79,7 +81,7 @@ public class ServerPhotographer extends ServerPlayer { this.lastPos = this.blockPosition(); super.tick(); - if (this.getServer().getTickCount() % 10 == 0) { + if (getServer().getTickCount() % 10 == 0) { connection.resetPosition(); this.level().chunkSource.move(this); } @@ -131,7 +133,7 @@ public class ServerPhotographer extends ServerPlayer { super.remove(RemovalReason.KILLED); photographers.remove(this); this.recorder.stop(); - this.getServer().getPlayerList().removePhotographer(this); + getServer().getPlayerList().removePhotographer(this); LeavesLogger.LOGGER.info("Photographer " + createState.id + " removed");