Skip to content

Commit c60a72c

Browse files
committed
try to fix the display issue
1 parent a011371 commit c60a72c

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

quickshop-bukkit/src/main/java/com/ghostchu/quickshop/shop/ContainerShop.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,6 @@ public void checkDisplay() {
345345
if (!displayStatus) {
346346
if (this.displayItem != null) {
347347
this.displayItem.remove();
348-
this.displayItem = null;
349348
}
350349
return;
351350
}

quickshop-bukkit/src/main/java/com/ghostchu/quickshop/shop/display/VirtualDisplayItem.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ public class VirtualDisplayItem extends AbstractDisplayItem implements Reloadabl
5454
//cache chunk x and z
5555
private SimpleShopChunk chunkLocation;
5656
//If packet initialized
57-
private volatile boolean initialized = false;
58-
private volatile boolean isSpawned = false;
57+
private final AtomicBoolean initialized = new AtomicBoolean(false);
58+
private final AtomicBoolean isSpawned = new AtomicBoolean(false);
5959
//packets
6060
private PacketContainer fakeItemSpawnPacket;
6161
private PacketContainer fakeItemMetaPacket;
@@ -100,7 +100,7 @@ public void fixDisplayNeedRegen() {
100100

101101
@Override
102102
public boolean isSpawned() {
103-
return isSpawned;
103+
return isSpawned.get();
104104
}
105105

106106
@Override
@@ -114,7 +114,7 @@ public void remove() {
114114
if (isSpawned()) {
115115
sendPacketToAll(fakeItemDestroyPacket);
116116
unload();
117-
isSpawned = false;
117+
isSpawned.set(false);
118118
}
119119
}
120120

@@ -138,7 +138,7 @@ public void safeGuard(@Nullable Entity entity) {
138138
@Override
139139
public void spawn() {
140140
Util.ensureThread(false);
141-
if (isSpawned || shop.isDeleted() || !shop.isLoaded()) {
141+
if (isSpawned.get() || shop.isDeleted() || !shop.isLoaded()) {
142142
return;
143143
}
144144
if (new ShopDisplayItemSpawnEvent(shop, originalItemStack, DisplayType.VIRTUALITEM).callCancellableEvent()) {
@@ -148,7 +148,7 @@ public void spawn() {
148148
}
149149

150150
//lazy initialize
151-
if (!initialized) {
151+
if (!initialized.get()) {
152152
initFakeDropItemPacket();
153153
}
154154

@@ -162,15 +162,15 @@ public void spawn() {
162162
}*/
163163

164164
sendFakeItemToAll();
165-
isSpawned = true;
165+
isSpawned.set(true);
166166
}
167167

168168
private void initFakeDropItemPacket() {
169169
fakeItemSpawnPacket = PacketFactory.createFakeItemSpawnPacket(entityID, getDisplayLocation());
170170
fakeItemMetaPacket = PacketFactory.createFakeItemMetaPacket(entityID, getOriginalItemStack().clone());
171171
fakeItemVelocityPacket = PacketFactory.createFakeItemVelocityPacket(entityID);
172172
fakeItemDestroyPacket = PacketFactory.createFakeItemDestroyPacket(entityID);
173-
initialized = true;
173+
initialized.set(true);
174174
}
175175

176176
//Due to the delay task in ChunkListener
@@ -198,6 +198,10 @@ public void sendFakeItem(@NotNull Player player) {
198198
sendPacket(player, fakeItemVelocityPacket);
199199
}
200200

201+
public void sendDestroyItem(@NotNull Player player) {
202+
sendPacket(player, fakeItemDestroyPacket);
203+
}
204+
201205
private void sendPacket(@NotNull Player player, @NotNull PacketContainer packet) {
202206
PROTOCOL_MANAGER.sendServerPacket(player, packet);
203207
}
@@ -272,6 +276,7 @@ public void onPacketSending(@NotNull PacketEvent event) {
272276
continue;
273277
}
274278
target.packetSenders.add(player.getUniqueId());
279+
target.sendDestroyItem(player);
275280
target.sendFakeItem(player);
276281
}
277282
return targetList;

0 commit comments

Comments
 (0)