Skip to content

Commit

Permalink
Fix Directing duping MT items
Browse files Browse the repository at this point in the history
  • Loading branch information
Flo56958 committed Oct 4, 2023
1 parent 1b39087 commit db2d9ef
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 24 deletions.
28 changes: 11 additions & 17 deletions src/main/java/de/flo56958/minetinker/listeners/ItemListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import de.flo56958.minetinker.MineTinker;
import de.flo56958.minetinker.data.Lists;
import de.flo56958.minetinker.modifiers.ModManager;
import de.flo56958.minetinker.modifiers.Modifier;
import de.flo56958.minetinker.utils.LanguageManager;
import org.bukkit.Bukkit;
import org.bukkit.entity.Item;
Expand Down Expand Up @@ -97,22 +96,19 @@ public void onPlayerDeath(@NotNull final PlayerDeathEvent event) {
return;
}

for (ItemStack itemStack : inventory.getContents()) {
if (MineTinker.getPlugin().getConfig().getBoolean("ItemBehaviour.DisableDroppingBehaviour")) return;


for (ItemStack itemStack : new ArrayList<>(event.getDrops())) {
if (itemStack == null) {
continue; // More consistent nullability in NotNull fields
continue;
}

boolean isMineTinker = false;

if (MineTinker.getPlugin().getConfig().getBoolean("ItemBehaviour.ForModItems")) { //Modifieritems
final ItemStack modifierTester = itemStack.clone();
modifierTester.setAmount(1);

for (Modifier modifier : modManager.getAllowedMods()) {
if (modifier.getModItem().equals(modifierTester)) {
isMineTinker = true;
break;
}
if (modManager.isModifierItem(itemStack)) {
isMineTinker = true;
}
}

Expand All @@ -125,12 +121,10 @@ public void onPlayerDeath(@NotNull final PlayerDeathEvent event) {
continue;
}

if (!MineTinker.getPlugin().getConfig().getBoolean("ItemBehaviour.DisableDroppingBehaviour")) {
Bukkit.getPluginManager().callEvent(
new PlayerDropItemEvent(player, player.getWorld().dropItem(
player.getLocation(), itemStack))); //To trigger item behaviour
itemStack.setAmount(0);
}
Bukkit.getPluginManager().callEvent(
new PlayerDropItemEvent(player, player.getWorld().dropItem(
player.getLocation(), itemStack))); //To trigger item behaviour
event.getDrops().remove(itemStack);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,15 +200,12 @@ public void effect(MTEntityDeathEvent event) {
return;
}

final List<ItemStack> drops = event.getEvent().getDrops();
final List<ItemStack> toremove = new ArrayList<>();

//Track stats
int stat = (DataHandler.hasTag(tool, getKey() + "_stat_used", PersistentDataType.INTEGER, false))
? DataHandler.getTag(tool, getKey() + "_stat_used", PersistentDataType.INTEGER, false)
: 0;

for (ItemStack current : drops) {
for (ItemStack current : new ArrayList<>(event.getEvent().getDrops())) {
if (modManager.hasMod(current, Soulbound.instance())) {
continue;
}
Expand All @@ -218,13 +215,11 @@ public void effect(MTEntityDeathEvent event) {
if (!player.getInventory().addItem(current).isEmpty()) { //adds items to (full) inventory
player.getWorld().dropItem(player.getLocation(), current);
} // no else as it gets added in if-clause
toremove.add(current);
event.getEvent().getDrops().remove(current);
}

DataHandler.setTag(tool, getKey() + "_stat_used", stat, PersistentDataType.INTEGER, false);

drops.removeAll(toremove);

if (this.workOnXP && modManager.getModLevel(tool, this) >= this.minimumLevelForXP) {
//Spawn Experience Orb as adding it directly to the player would prevent Mending from working
ExperienceOrb orb = (ExperienceOrb) player.getWorld().spawnEntity(player.getLocation(), EntityType.EXPERIENCE_ORB);
Expand Down

0 comments on commit db2d9ef

Please sign in to comment.