Skip to content

Commit 3823e9a

Browse files
authored
fix gui closing when open sign
看板のGuiが開いた瞬間に閉じるバグの修正
2 parents 2ae2034 + cd44897 commit 3823e9a

3 files changed

Lines changed: 42 additions & 38 deletions

File tree

core/src/main/java/net/akazukin/library/event/Events.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
import net.akazukin.library.LibraryPlugin;
44
import net.akazukin.library.compat.minecraft.data.packets.Packet;
55
import net.akazukin.library.event.events.PacketReceiveEvent;
6+
import net.akazukin.library.event.events.PacketSendEvent;
67
import net.akazukin.library.event.events.ServerTickEvent;
78
import org.bukkit.event.Event;
89
import org.bukkit.event.EventHandler;
910
import org.bukkit.event.EventPriority;
1011
import org.bukkit.event.Listener;
11-
import org.bukkit.event.block.SignChangeEvent;
1212
import org.bukkit.event.entity.EntityDamageEvent;
1313
import org.bukkit.event.inventory.InventoryClickEvent;
1414
import org.bukkit.event.inventory.InventoryCloseEvent;
@@ -70,11 +70,6 @@ public void onPlayerMove(final PlayerMoveEvent event) {
7070
this.callEvent(event, EventPriority.NORMAL);
7171
}
7272

73-
/*@EventHandler
74-
public void onPlayerRotation(final PlayerRotationEvent event) {
75-
callEvent(event, EventPriority.NORMAL);
76-
}*/
77-
7873
@EventHandler
7974
public void onPlayerInteract(final PlayerInteractEvent event) {
8075
this.callEvent(event, EventPriority.NORMAL);
@@ -85,13 +80,14 @@ public void onAsyncPlayerChat(final AsyncPlayerChatEvent event) {
8580
this.callEvent(event, EventPriority.NORMAL);
8681
}
8782

88-
@EventHandler(priority = EventPriority.HIGH)
89-
public void onSignChange(final SignChangeEvent event) {
90-
this.callEvent(event, EventPriority.HIGH);
83+
@EventHandler
84+
public void onPacketReceive(final PacketReceiveEvent event) {
85+
this.callEvent(event, EventPriority.NORMAL);
86+
final Packet pkt = LibraryPlugin.COMPAT.getWrappedPacket(event.getPacket());
9187
}
9288

9389
@EventHandler
94-
public void onPacketReceive(final PacketReceiveEvent event) {
90+
public void onPackeSend(final PacketSendEvent event) {
9591
this.callEvent(event, EventPriority.NORMAL);
9692
final Packet pkt = LibraryPlugin.COMPAT.getWrappedPacket(event.getPacket());
9793
}

core/src/main/java/net/akazukin/library/gui/GuiManager.java

Lines changed: 35 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import net.akazukin.library.event.EventTarget;
1111
import net.akazukin.library.event.Listenable;
1212
import net.akazukin.library.event.events.PacketReceiveEvent;
13+
import net.akazukin.library.event.events.PacketSendEvent;
1314
import net.akazukin.library.gui.screens.chat.ChatGui;
1415
import net.akazukin.library.gui.screens.chest.ContainerGuiBase;
1516
import net.akazukin.library.gui.screens.chest.GuiBase;
@@ -37,7 +38,7 @@ public static GuiManager singleton() {
3738
}
3839

3940
public GuiBase getScreen(final UUID player) {
40-
return screens.get(player);
41+
return this.screens.get(player);
4142
}
4243

4344
@EventTarget(bktPriority = EventPriority.HIGH)
@@ -48,41 +49,39 @@ public void onInventoryClick(final InventoryClickEvent event) {
4849

4950
if (event.getCurrentItem() == null) return;
5051

51-
final GuiBase gui = screens.get(event.getWhoClicked().getUniqueId());
52+
final GuiBase gui = this.screens.get(event.getWhoClicked().getUniqueId());
5253
if (!(gui instanceof ContainerGuiBase) || !event.getView().getTitle().equals(((ContainerGuiBase) gui).getTitle()))
5354
return;
5455

5556
if (event.getView().getType() == InventoryType.CHEST && event.getCurrentItem() != null && !ItemUtils.isGuiItem(event.getCurrentItem())) {
56-
System.out.println("Not cancelled | Title: " + event.getView().getTitle() + " | DisplayName: " + event.getCurrentItem().getItemMeta().getDisplayName());
57+
LibraryPlugin.getLogManager().warning("Not cancelled | Title: " + event.getView().getTitle() + " | DisplayName: " + event.getCurrentItem().getItemMeta().getDisplayName());
5758
}
5859

5960
if (InventoryUtils.isCloseItem(event.getCurrentItem())) {
6061
event.getWhoClicked().closeInventory();
6162
} else if (InventoryUtils.isBackItem(event.getCurrentItem()) && gui.getPrevGui() != null) {
6263
event.getWhoClicked().closeInventory();
63-
setScreen(event.getWhoClicked().getUniqueId(), gui.getPrevGui());
64+
this.setScreen(event.getWhoClicked().getUniqueId(), gui.getPrevGui());
6465
} else {
6566
((ContainerGuiBase) gui).onInventoryClick(event);
6667
}
6768
}
6869

6970
public void setScreen(final UUID player, final GuiBase gui) {
70-
final Player player_ = Bukkit.getPlayer(player);
71-
if (player_ == null) return;
72-
Bukkit.getScheduler().runTask(LibraryPlugin.getPlugin(), player_::closeInventory);
73-
74-
screens.remove(player);
75-
screens.put(player, gui);
76-
if (gui instanceof ContainerGuiBase) {
77-
Bukkit.getScheduler().runTask(LibraryPlugin.getPlugin(), gui::forceOpen);
78-
} else {
71+
Bukkit.getScheduler().runTask(LibraryPlugin.getPlugin(), () -> {
72+
final Player player_ = Bukkit.getPlayer(player);
73+
if (player_ == null) return;
74+
player_.closeInventory();
75+
76+
this.screens.remove(player);
77+
this.screens.put(player, gui);
7978
gui.forceOpen();
80-
}
79+
});
8180
}
8281

8382
@EventTarget
8483
public void onInventoryOpen(final InventoryOpenEvent event) {
85-
final GuiBase gui = screens.get(event.getPlayer().getUniqueId());
84+
final GuiBase gui = this.screens.get(event.getPlayer().getUniqueId());
8685
if (!(gui instanceof ContainerGuiBase) || !event.getView().getTitle().equals(((ContainerGuiBase) gui).getTitle()))
8786
return;
8887

@@ -91,51 +90,60 @@ public void onInventoryOpen(final InventoryOpenEvent event) {
9190

9291
@EventTarget
9392
public void onInventoryClose(final InventoryCloseEvent event) {
94-
final GuiBase gui = screens.get(event.getPlayer().getUniqueId());
93+
final GuiBase gui = this.screens.get(event.getPlayer().getUniqueId());
9594
if (!(gui instanceof ContainerGuiBase) || !event.getView().getTitle().equals(((ContainerGuiBase) gui).getTitle()))
9695
return;
9796

98-
screens.remove(event.getPlayer().getUniqueId());
97+
this.screens.remove(event.getPlayer().getUniqueId());
9998
((ContainerGuiBase) gui).onInventoryClose(event);
10099
}
101100

102101
@EventTarget
103102
public void onPlayerMove(final PlayerMoveEvent event) {
104-
final GuiBase prevGui = screens.get(event.getPlayer().getUniqueId());
103+
final GuiBase prevGui = this.screens.get(event.getPlayer().getUniqueId());
105104
if (prevGui instanceof ChatGui) ((ChatGui) prevGui).onPlayerMove(event);
106105
}
107106

108107
@EventTarget
109108
public void onAsyncPlayerChat(final AsyncPlayerChatEvent event) {
110-
final GuiBase prevGui = screens.get(event.getPlayer().getUniqueId());
109+
final GuiBase prevGui = this.screens.get(event.getPlayer().getUniqueId());
111110
if (prevGui instanceof ChatGui) ((ChatGui) prevGui).onChat(event);
112111
}
113112

114113
@EventTarget
115114
public void onPlayerQuit(final PlayerQuitEvent event) {
116-
screens.remove(event.getPlayer().getUniqueId());
115+
this.screens.remove(event.getPlayer().getUniqueId());
117116
}
118117

119118
@EventTarget
120119
public void onPacketReceive(final PacketReceiveEvent event) {
121-
final GuiBase gui = screens.get(event.getClient().getPlayer().getUniqueId());
120+
final GuiBase gui = this.screens.get(event.getClient().getPlayer().getUniqueId());
122121
if (gui instanceof SignStringSelectorGui) {
123122
final Packet pkt = LibraryPlugin.COMPAT.getWrappedPacket(event.getPacket());
124-
if (pkt instanceof SOpenSignEditorPacket) {
125-
((SignStringSelectorGui) gui).onGuiOpen();
126-
} else if (pkt instanceof CUpdateSignPacket) {
123+
if (pkt instanceof CUpdateSignPacket) {
127124
((SignStringSelectorGui) gui).onGuiClose(event);
128125
if (gui.getPrevGui() == null) {
129-
screens.remove(event.getClient().getPlayer().getUniqueId());
126+
this.screens.remove(event.getClient().getPlayer().getUniqueId());
130127
} else {
131-
screens.put(event.getClient().getPlayer().getUniqueId(), gui.getPrevGui());
128+
this.screens.put(event.getClient().getPlayer().getUniqueId(), gui.getPrevGui());
132129
Bukkit.getScheduler().runTask(LibraryPlugin.getPlugin(), () ->
133-
screens.get(event.getClient().getPlayer().getUniqueId()).forceOpen());
130+
this.screens.get(event.getClient().getPlayer().getUniqueId()).forceOpen());
134131
}
135132
}
136133
}
137134
}
138135

136+
@EventTarget
137+
public void onPacketSend(final PacketSendEvent event) {
138+
final GuiBase gui = this.screens.get(event.getClient().getPlayer().getUniqueId());
139+
if (gui instanceof SignStringSelectorGui) {
140+
final Packet pkt = LibraryPlugin.COMPAT.getWrappedPacket(event.getPacket());
141+
if (pkt instanceof SOpenSignEditorPacket) {
142+
((SignStringSelectorGui) gui).onGuiOpen();
143+
}
144+
}
145+
}
146+
139147
@Override
140148
public boolean handleEvents() {
141149
return true;

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ org.gradle.caching = true
99
group = net.akazukin
1010
plugin_name = AkazukinLibrary
1111
artifact = plugin-library
12-
version = 1.0.2.1
12+
version = 1.0.2.2

0 commit comments

Comments
 (0)