b34fa8237e
fixes #77
48 lines
3.6 KiB
Diff
48 lines
3.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Helvetica Volubi <suisuroru@blue-millennium.fun>
|
|
Date: Wed, 29 Oct 2025 00:09:09 +0800
|
|
Subject: [PATCH] Leaves: Configurable trading with the void
|
|
|
|
Co-authored by: violetc <58360096+s-yh-china@users.noreply.github.com>
|
|
As a part of : Leaves (https://github.com/LeavesMC/Leaves)
|
|
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
|
|
|
|
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
|
index 3207150a9bbe9f7bef66e416efdc9bb242b1ad17..08e7cd3db4b5a2e02f959bb8ee306aef4cb189db 100644
|
|
--- a/net/minecraft/server/level/ServerLevel.java
|
|
+++ b/net/minecraft/server/level/ServerLevel.java
|
|
@@ -2902,7 +2902,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
|
// Spigot start
|
|
if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message
|
|
// Paper start - Fix merchant inventory not closing on entity removal
|
|
- if (entity.getBukkitEntity() instanceof org.bukkit.inventory.Merchant merchant && merchant.getTrader() != null) {
|
|
+ if (!fun.bm.lophine.config.modules.function.OldFeatureConfig.villagerVoidTrade && entity.getBukkitEntity() instanceof org.bukkit.inventory.Merchant merchant && merchant.getTrader() != null) { // Leaves - Configurable trading with the void
|
|
merchant.getTrader().closeInventory(org.bukkit.event.inventory.InventoryCloseEvent.Reason.UNLOADED);
|
|
}
|
|
// Paper end - Fix merchant inventory not closing on entity removal
|
|
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
|
|
index 593dbcda4b497291eb1ecdc64b947a8d279f8be6..6c1f4f943a5be5f2e43a82cca52ca76a98226915 100644
|
|
--- a/net/minecraft/server/players/PlayerList.java
|
|
+++ b/net/minecraft/server/players/PlayerList.java
|
|
@@ -649,7 +649,7 @@ public abstract class PlayerList {
|
|
player.stopRiding();
|
|
rootVehicle.getPassengersAndSelf().forEach(entity -> {
|
|
// Paper start - Fix villager boat exploit
|
|
- if (entity instanceof net.minecraft.world.entity.npc.AbstractVillager villager) {
|
|
+ if (!fun.bm.lophine.config.modules.function.OldFeatureConfig.villagerVoidTrade && entity instanceof net.minecraft.world.entity.npc.AbstractVillager villager) { // Leaves - Configurable trading with the void
|
|
final net.minecraft.world.entity.player.Player human = villager.getTradingPlayer();
|
|
if (human != null) {
|
|
villager.setTradingPlayer(null);
|
|
diff --git a/net/minecraft/world/inventory/MerchantMenu.java b/net/minecraft/world/inventory/MerchantMenu.java
|
|
index d59f67ffe34201c63e3d9706a4434f33b6732edb..c635c7211bff9d190b7035b284dda162334fd5c2 100644
|
|
--- a/net/minecraft/world/inventory/MerchantMenu.java
|
|
+++ b/net/minecraft/world/inventory/MerchantMenu.java
|
|
@@ -74,6 +74,7 @@ public class MerchantMenu extends AbstractContainerMenu {
|
|
|
|
@Override
|
|
public boolean stillValid(Player player) {
|
|
+ if (fun.bm.lophine.config.modules.function.OldFeatureConfig.villagerVoidTrade) return this.trader.getTradingPlayer() == player; // Leaves - Configurable trading with the void
|
|
if (!checkReachable) return true; // Paper - checkReachable
|
|
return this.trader.stillValid(player);
|
|
}
|