From f33384b3b9cd0dc420871cd35d5577147e8e25df Mon Sep 17 00:00:00 2001 From: Y2Kwastaken Date: Sat, 1 Feb 2025 21:14:10 -0600 Subject: [PATCH 1/3] Switch BlockPos to zero instead of player to prevent clashing --- .../view/builder/CraftAccessLocationInventoryViewBuilder.java | 3 ++- .../view/builder/CraftBlockEntityInventoryViewBuilder.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftAccessLocationInventoryViewBuilder.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftAccessLocationInventoryViewBuilder.java index 096f3ebf8167..211cc3cf3746 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftAccessLocationInventoryViewBuilder.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftAccessLocationInventoryViewBuilder.java @@ -1,5 +1,6 @@ package org.bukkit.craftbukkit.inventory.view.builder; +import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.AbstractContainerMenu; @@ -21,7 +22,7 @@ public CraftAccessLocationInventoryViewBuilder(final MenuType handle, final C protected AbstractContainerMenu buildContainer(final ServerPlayer player) { final ContainerLevelAccess access; if (super.position == null) { - access = ContainerLevelAccess.create(player.level(), player.blockPosition()); + access = ContainerLevelAccess.create(player.level(), BlockPos.ZERO); } else { access = ContainerLevelAccess.create(super.world, super.position); } diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftBlockEntityInventoryViewBuilder.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftBlockEntityInventoryViewBuilder.java index 262581444013..5eef4aca6825 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftBlockEntityInventoryViewBuilder.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftBlockEntityInventoryViewBuilder.java @@ -31,7 +31,7 @@ protected AbstractContainerMenu buildContainer(final ServerPlayer player) { } if (this.position == null) { - this.position = player.blockPosition(); + this.position = BlockPos.ZERO; } final BlockEntity entity = this.world.getBlockEntity(position); From f0839879fdba4ea5eac9bf442f3d0f7d3321fbd0 Mon Sep 17 00:00:00 2001 From: Y2Kwastaken Date: Sun, 2 Feb 2025 09:50:56 -0600 Subject: [PATCH 2/3] Fix clashing of InventoryView locations with real world --- ...raftAccessLocationInventoryViewBuilder.java | 2 +- .../CraftBlockEntityInventoryViewBuilder.java | 3 ++- .../java/io/papermc/testplugin/TestPlugin.java | 18 +++++++++++++++++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftAccessLocationInventoryViewBuilder.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftAccessLocationInventoryViewBuilder.java index 211cc3cf3746..edf48e13dae7 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftAccessLocationInventoryViewBuilder.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftAccessLocationInventoryViewBuilder.java @@ -22,7 +22,7 @@ public CraftAccessLocationInventoryViewBuilder(final MenuType handle, final C protected AbstractContainerMenu buildContainer(final ServerPlayer player) { final ContainerLevelAccess access; if (super.position == null) { - access = ContainerLevelAccess.create(player.level(), BlockPos.ZERO); + access = ContainerLevelAccess.create(player.level(), player.blockPosition()); } else { access = ContainerLevelAccess.create(super.world, super.position); } diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftBlockEntityInventoryViewBuilder.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftBlockEntityInventoryViewBuilder.java index 5eef4aca6825..037c287a01e9 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftBlockEntityInventoryViewBuilder.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftBlockEntityInventoryViewBuilder.java @@ -31,7 +31,8 @@ protected AbstractContainerMenu buildContainer(final ServerPlayer player) { } if (this.position == null) { - this.position = BlockPos.ZERO; + this.position = player.blockPosition(); + return buildFakeTile(player); // fixes clashing with container at player position } final BlockEntity entity = this.world.getBlockEntity(position); diff --git a/test-plugin/src/main/java/io/papermc/testplugin/TestPlugin.java b/test-plugin/src/main/java/io/papermc/testplugin/TestPlugin.java index fd891f5b1fad..b0132be8ab7c 100644 --- a/test-plugin/src/main/java/io/papermc/testplugin/TestPlugin.java +++ b/test-plugin/src/main/java/io/papermc/testplugin/TestPlugin.java @@ -1,6 +1,13 @@ package io.papermc.testplugin; +import io.papermc.paper.command.brigadier.Commands; +import io.papermc.paper.command.brigadier.argument.ArgumentTypes; +import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents; +import io.papermc.paper.registry.RegistryKey; +import net.kyori.adventure.text.Component; +import org.bukkit.entity.Player; import org.bukkit.event.Listener; +import org.bukkit.inventory.MenuType; import org.bukkit.plugin.java.JavaPlugin; public final class TestPlugin extends JavaPlugin implements Listener { @@ -8,7 +15,16 @@ public final class TestPlugin extends JavaPlugin implements Listener { @Override public void onEnable() { this.getServer().getPluginManager().registerEvents(this, this); - + getLifecycleManager().registerEventHandler(LifecycleEvents.COMMANDS, (c) -> { + c.registrar().register(Commands.literal("topen") + .then(Commands.argument("menu", ArgumentTypes.resource(RegistryKey.MENU)).executes((context) -> { + ((Player) context.getSource().getSender()).openInventory( + context.getArgument("menu", MenuType.class).typed().builder().title(Component.text("12")).build((Player) context.getSource().getSender()) + ); + return 1; + })) + .build()); + }); // io.papermc.testplugin.brigtests.Registration.registerViaOnEnable(this); } } From 2d769a1f79da9cc2b0aaba0e110d26d0941cd91d Mon Sep 17 00:00:00 2001 From: Y2Kwastaken Date: Sun, 2 Feb 2025 09:52:22 -0600 Subject: [PATCH 3/3] cleanup --- ...raftAccessLocationInventoryViewBuilder.java | 1 - .../java/io/papermc/testplugin/TestPlugin.java | 18 +----------------- 2 files changed, 1 insertion(+), 18 deletions(-) diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftAccessLocationInventoryViewBuilder.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftAccessLocationInventoryViewBuilder.java index edf48e13dae7..096f3ebf8167 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftAccessLocationInventoryViewBuilder.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/builder/CraftAccessLocationInventoryViewBuilder.java @@ -1,6 +1,5 @@ package org.bukkit.craftbukkit.inventory.view.builder; -import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.AbstractContainerMenu; diff --git a/test-plugin/src/main/java/io/papermc/testplugin/TestPlugin.java b/test-plugin/src/main/java/io/papermc/testplugin/TestPlugin.java index b0132be8ab7c..fd891f5b1fad 100644 --- a/test-plugin/src/main/java/io/papermc/testplugin/TestPlugin.java +++ b/test-plugin/src/main/java/io/papermc/testplugin/TestPlugin.java @@ -1,13 +1,6 @@ package io.papermc.testplugin; -import io.papermc.paper.command.brigadier.Commands; -import io.papermc.paper.command.brigadier.argument.ArgumentTypes; -import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents; -import io.papermc.paper.registry.RegistryKey; -import net.kyori.adventure.text.Component; -import org.bukkit.entity.Player; import org.bukkit.event.Listener; -import org.bukkit.inventory.MenuType; import org.bukkit.plugin.java.JavaPlugin; public final class TestPlugin extends JavaPlugin implements Listener { @@ -15,16 +8,7 @@ public final class TestPlugin extends JavaPlugin implements Listener { @Override public void onEnable() { this.getServer().getPluginManager().registerEvents(this, this); - getLifecycleManager().registerEventHandler(LifecycleEvents.COMMANDS, (c) -> { - c.registrar().register(Commands.literal("topen") - .then(Commands.argument("menu", ArgumentTypes.resource(RegistryKey.MENU)).executes((context) -> { - ((Player) context.getSource().getSender()).openInventory( - context.getArgument("menu", MenuType.class).typed().builder().title(Component.text("12")).build((Player) context.getSource().getSender()) - ); - return 1; - })) - .build()); - }); + // io.papermc.testplugin.brigtests.Registration.registerViaOnEnable(this); } }