Skip to content

Commit 8f52fc6

Browse files
authored
Merge pull request #618 from pylonmc/balugaq/fix-unresearched-dupe
Fix unresearched item dupe
2 parents 12611a5 + 71523ef commit 8f52fc6

File tree

1 file changed

+22
-4
lines changed
  • rebar/src/main/kotlin/io/github/pylonmc/rebar/item/research

1 file changed

+22
-4
lines changed

rebar/src/main/kotlin/io/github/pylonmc/rebar/item/research/Research.kt

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ import org.bukkit.entity.Player
3030
import org.bukkit.event.EventHandler
3131
import org.bukkit.event.Listener
3232
import org.bukkit.event.entity.EntityPickupItemEvent
33+
import org.bukkit.event.inventory.InventoryClickEvent
34+
import org.bukkit.event.inventory.InventoryCloseEvent
35+
import org.bukkit.event.inventory.InventoryMoveItemEvent
36+
import org.bukkit.event.inventory.InventoryOpenEvent
3337
import org.bukkit.event.player.PlayerJoinEvent
3438
import org.bukkit.inventory.ItemStack
3539
import kotlin.math.min
@@ -273,13 +277,27 @@ class Research(
273277
private fun onPlayerPickup(event: EntityPickupItemEvent) {
274278
val entity = event.entity
275279
if (entity is Player) {
276-
Rebar.launch {
277-
delay(1.ticks)
278-
entity.ejectUnknownItems()
280+
val rebar = RebarItem.fromStack(event.item.itemStack)
281+
if (rebar == null) return
282+
283+
if (!entity.canPickUp(rebar, sendMessage = true)) {
284+
// See net.minecraft.world.entity.item.ItemEntity#setDefaultPickUpDelay
285+
event.item.pickupDelay = 10
286+
event.isCancelled = true
279287
}
280288
}
281289
}
282290

291+
@EventHandler
292+
private fun onPlayerOpenInventory(event: InventoryOpenEvent) {
293+
(event.player as Player).ejectUnknownItems()
294+
}
295+
296+
@EventHandler
297+
private fun onPlayerCloseInventory(event: InventoryCloseEvent) {
298+
(event.player as Player).ejectUnknownItems()
299+
}
300+
283301
@EventHandler
284302
private fun onJoin(e: PlayerJoinEvent) {
285303
if (!RebarConfig.ResearchConfig.ENABLED) return
@@ -326,7 +344,7 @@ private fun Player.ejectUnknownItems() {
326344
rebarItem != null && !canPickUp(rebarItem, sendMessage = true)
327345
}
328346
for (item in toRemove) {
329-
inventory.remove(item)
347+
inventory.removeItemAnySlot(item)
330348
dropItem(item)
331349
}
332350
}

0 commit comments

Comments
 (0)