44import java .util .List ;
55import java .util .Map ;
66import java .util .Objects ;
7+ import java .util .UUID ;
78
89import org .bukkit .Bukkit ;
910import org .bukkit .Location ;
1011import org .bukkit .Material ;
1112import org .bukkit .NamespacedKey ;
1213import org .bukkit .entity .Player ;
13- import org .bukkit .event .EventHandler ;
14- import org .bukkit .event .HandlerList ;
15- import org .bukkit .event .Listener ;
1614import org .bukkit .event .inventory .InventoryClickEvent ;
17- import org .bukkit .event .inventory .InventoryCloseEvent ;
1815import org .bukkit .inventory .Inventory ;
1916import org .bukkit .inventory .InventoryHolder ;
2017import org .bukkit .inventory .ItemStack ;
@@ -31,14 +28,14 @@ public class LandmarkMenu implements InventoryHolder {
3128
3229 private static final String LANDMARK_KEY = "landmark_name" ;
3330 private final LandmarkPlugin plugin ;
34- private final Player player ;
31+ private final UUID playerId ;
3532 private Inventory inventory ;
3633 private final MiniMessage miniMessage = MiniMessage .miniMessage ();
3734 private final NamespacedKey landmarkKey ;
3835
3936 public LandmarkMenu (LandmarkPlugin plugin , Player player ) {
4037 this .plugin = plugin ;
41- this .player = player ;
38+ this .playerId = player . getUniqueId () ;
4239 this .landmarkKey = new NamespacedKey (plugin , LANDMARK_KEY );
4340 }
4441
@@ -52,7 +49,7 @@ public void open() {
5249 int size = plugin .getConfigManager ().getConfig ().getInt ("gui.size" , 54 );
5350 this .inventory = Bukkit .createInventory (this , size , title );
5451 initializeItems ();
55- player .openInventory (inventory );
52+ getPlayer () .openInventory (inventory );
5653 }
5754
5855 private void initializeItems () {
@@ -96,8 +93,8 @@ private void setupCurrentLocation() {
9693 boolean isAtAnyLandmark = false ;
9794
9895 for (Map .Entry <String , Landmark > entry : plugin .getLandmarkManager ().getLandmarks ().entrySet ()) {
99- if (plugin .getLandmarkManager ().isLandmarkUnlocked (player , entry .getKey ())
100- && plugin .getLandmarkManager ().isPlayerNearLandmark (player , entry .getValue ().getLocation ())) {
96+ if (plugin .getLandmarkManager ().isLandmarkUnlocked (getPlayer () , entry .getKey ())
97+ && plugin .getLandmarkManager ().isPlayerNearLandmark (getPlayer () , entry .getValue ().getLocation ())) {
10198 isAtAnyLandmark = true ;
10299 currentLandmark = entry .getValue ();
103100 break ;
@@ -123,7 +120,7 @@ private void setupLandmarks() {
123120
124121 // 计算实际槽位(row对应第2-4行)
125122 int slot = (row * 9 ) + col ;
126- boolean isUnlocked = plugin .getLandmarkManager ().isLandmarkUnlocked (player , entry .getKey ());
123+ boolean isUnlocked = plugin .getLandmarkManager ().isLandmarkUnlocked (getPlayer () , entry .getKey ());
127124 ItemStack item = createLandmarkItem (landmark , isUnlocked );
128125
129126 // 存储锚点名称到物品中
@@ -321,4 +318,8 @@ private void handleItemClick(ItemStack item, Player player) {
321318 }
322319 }
323320
321+ private Player getPlayer () {
322+ return Bukkit .getPlayer (playerId );
323+ }
324+
324325}
0 commit comments