Skip to content

Commit 375dc67

Browse files
committed
feat: add vanilla item check for drop/trash protect
1 parent 96dec22 commit 375dc67

3 files changed

Lines changed: 16 additions & 3 deletions

File tree

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ plugins {
99
}
1010

1111
group = "net.azisaba"
12-
version = "6.20.2+1.15.2"
12+
version = "6.20.3+1.15.2"
1313

1414
java {
1515
toolchain.languageVersion.set(JavaLanguageVersion.of(11))

src/main/java/com/github/mori01231/lifecore/listener/DropProtectListener.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@
1010
import net.minecraft.server.v1_15_R1.DataWatcherObject;
1111
import net.minecraft.server.v1_15_R1.EntityItem;
1212
import net.minecraft.server.v1_15_R1.Items;
13+
import net.minecraft.server.v1_15_R1.NBTTagCompound;
1314
import org.bukkit.ChatColor;
1415
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftItem;
16+
import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftItemStack;
1517
import org.bukkit.event.EventHandler;
1618
import org.bukkit.event.Listener;
1719
import org.bukkit.event.player.PlayerDropItemEvent;
@@ -47,7 +49,7 @@ public void onDrop(PlayerDropItemEvent e) {
4749

4850
if (plugin.getDropProtectConfig().contains(e.getPlayer().getUniqueId(), "has_pve_level") && requiredLevel > 0) {
4951
shouldCancel = true;
50-
} else if (plugin.getDropProtectConfig().contains(e.getPlayer().getUniqueId(), "has_no_pve_level") && requiredLevel == 0) {
52+
} else if (plugin.getDropProtectConfig().contains(e.getPlayer().getUniqueId(), "has_no_pve_level") && requiredLevel == 0 && !isVanillaItem(itemStack)) {
5153
shouldCancel = true;
5254
} else {
5355
if (rarity == null) {
@@ -96,4 +98,9 @@ private void cancelDrop(PlayerDropItemEvent e, ItemStack stack, String reason) {
9698
e.getPlayer().sendMessage(ChatColor.AQUA + "/pickupstash" + ChatColor.RED + "で回収できます。");
9799
});
98100
}
101+
102+
private boolean isVanillaItem(@NotNull ItemStack itemStack) {
103+
NBTTagCompound tag = CraftItemStack.asNMSCopy(itemStack).getTag();
104+
return tag == null;
105+
}
99106
}

src/main/java/com/github/mori01231/lifecore/listener/TrashListener.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import org.bukkit.Bukkit
1111
import org.bukkit.ChatColor
1212
import org.bukkit.event.EventHandler
1313
import org.bukkit.event.Listener
14+
import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftItemStack
1415
import org.bukkit.event.inventory.InventoryClickEvent
1516
import org.bukkit.event.inventory.InventoryCloseEvent
1617
import org.bukkit.event.inventory.InventoryDragEvent
@@ -46,7 +47,7 @@ class TrashListener(private val plugin: LifeCore) : Listener {
4647
val shouldCancel =
4748
if (plugin.trashProtectConfig.contains(e.whoClicked.uniqueId, "has_pve_level") && requiredLevel > 0) {
4849
true
49-
} else if (plugin.trashProtectConfig.contains(e.whoClicked.uniqueId, "has_no_pve_level") && requiredLevel == 0L) {
50+
} else if (plugin.trashProtectConfig.contains(e.whoClicked.uniqueId, "has_no_pve_level") && requiredLevel == 0L && !isVanillaItem(item)) {
5051
true
5152
} else {
5253
if (rarity == null) {
@@ -126,4 +127,9 @@ class TrashListener(private val plugin: LifeCore) : Listener {
126127
}
127128
}
128129
}
130+
131+
private fun isVanillaItem(itemStack: ItemStack): Boolean {
132+
val tag = CraftItemStack.asNMSCopy(itemStack).tag
133+
return tag == null
134+
}
129135
}

0 commit comments

Comments
 (0)