Skip to content

Commit a9b5423

Browse files
committed
Dupe Fix pt2
1 parent 2ae65f1 commit a9b5423

File tree

4 files changed

+58
-28
lines changed

4 files changed

+58
-28
lines changed

src/main/java/us/thezircon/play/autopickup/AutoPickup.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,13 +121,13 @@ public void onEnable() {
121121
messages = new Messages();
122122

123123
// Listeners
124-
getServer().getPluginManager().registerEvents(new BlockDropItemEventListener(), this);
124+
// getServer().getPluginManager().registerEvents(new BlockDropItemEventListener(), this);
125125
getServer().getPluginManager().registerEvents(new PlayerJoinEventListener(), this);
126-
// getServer().getPluginManager().registerEvents(new BlockBreakEventListener(), this);
126+
getServer().getPluginManager().registerEvents(new BlockBreakEventListener(), this);
127127
getServer().getPluginManager().registerEvents(new EntityDeathEventListener(), this);
128128
getServer().getPluginManager().registerEvents(new PlayerInteractEventListener(), this);
129129
getServer().getPluginManager().registerEvents(new PlayerDropItemEventListener(), this);
130-
// getServer().getPluginManager().registerEvents(new ItemSpawnEventListener(), this);
130+
getServer().getPluginManager().registerEvents(new ItemSpawnEventListener(), this);
131131

132132
if (usingMythicMobs) {
133133
getServer().getPluginManager().registerEvents(new MythicMobListener(), this);

src/main/java/us/thezircon/play/autopickup/listeners/BlockDropItemEventListener.java

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,19 @@
1313
import org.bukkit.inventory.ItemStack;
1414
import us.thezircon.play.autopickup.AutoPickup;
1515
import us.thezircon.play.autopickup.utils.AutoSmelt;
16+
import us.thezircon.play.autopickup.utils.PickupObjective;
1617

18+
import java.time.Instant;
1719
import java.util.HashMap;
20+
import java.util.HashSet;
1821
import java.util.List;
22+
import java.util.UUID;
1923

2024
public class BlockDropItemEventListener implements Listener {
2125

2226
private static final AutoPickup PLUGIN = AutoPickup.getPlugin(AutoPickup.class);
2327

24-
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
28+
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
2529
public void onDrop(BlockDropItemEvent e) {
2630

2731
Player player = e.getPlayer();
@@ -51,15 +55,27 @@ public void onDrop(BlockDropItemEvent e) {
5155

5256

5357
for (Item i : e.getItems()) {
54-
58+
// i.setThrower(new UUID(0,0));
5559
// if (i==null || i.isDead() || !i.isValid()) {
5660
// System.out.println("RAR " + i.getItemStack().getType() + " " + (i==null) + " "+ (i.isDead()) + " " + (!i.isValid()));
5761
// continue; // TEST
5862
// }
5963

6064
ItemStack drop = i.getItemStack();
6165

62-
if (player.getInventory().firstEmpty() == -1) { // Checks for inventory space
66+
if (doBlacklist) { // Checks if blacklist is enabled
67+
if (blacklist.contains(drop.getType().toString())) { // Stops resets the loop skipping the item & not removing it
68+
continue;
69+
}
70+
}
71+
72+
if (doSmelt) {
73+
drop = AutoSmelt.smelt(drop, player);
74+
}
75+
76+
HashMap<Integer, ItemStack> leftOver = player.getInventory().addItem(drop);
77+
if (leftOver.keySet().size()>0) {
78+
6379
//Player has no space
6480
if (doFullInvMSG) {
6581
long secondsLeft;
@@ -77,25 +93,14 @@ public void onDrop(BlockDropItemEvent e) {
7793

7894
if (voidOnFullInv) {
7995
i.remove();
96+
return;
8097
}
8198

82-
return;
83-
}
84-
85-
if (doBlacklist) { // Checks if blacklist is enabled
86-
if (blacklist.contains(drop.getType().toString())) { // Stops resets the loop skipping the item & not removing it
87-
continue;
88-
}
89-
}
90-
91-
if (doSmelt) {
92-
drop = AutoSmelt.smelt(drop, player);
93-
}
94-
95-
HashMap<Integer, ItemStack> leftOver = player.getInventory().addItem(drop);
96-
if (leftOver.keySet().size()>0) {
9799
for (ItemStack item : leftOver.values()) {
98-
player.getWorld().dropItemNaturally(loc, item);
100+
Item dropped = player.getWorld().dropItemNaturally(loc, item);
101+
dropped.setThrower(new UUID(0,0));
102+
System.out.println("DDrop : " + dropped.getUniqueId());
103+
System.out.println("DDrop : " + dropped.getThrower());
99104
}
100105
}
101106

src/main/java/us/thezircon/play/autopickup/listeners/ItemSpawnEventListener.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package us.thezircon.play.autopickup.listeners;
22

33
import org.bukkit.Location;
4+
import org.bukkit.entity.Item;
45
import org.bukkit.entity.Player;
56
import org.bukkit.event.EventHandler;
67
import org.bukkit.event.EventPriority;
@@ -20,7 +21,7 @@ public class ItemSpawnEventListener implements Listener {
2021

2122
///////////////////////////////////// Custom items \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
2223

23-
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
24+
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
2425
public void onSpawn(ItemSpawnEvent e) {
2526
boolean doBlacklist = PLUGIN.getBlacklistConf().getBoolean("doBlacklisted");
2627
List<String> blacklist = PLUGIN.getBlacklistConf().getStringList("Blacklisted");
@@ -45,17 +46,25 @@ public void onSpawn(ItemSpawnEvent e) {
4546
Location loc = e.getLocation();
4647
String key = loc.getBlockX()+";"+loc.getBlockY()+";"+loc.getBlockZ()+";"+loc.getWorld();
4748
if (AutoPickup.customItemPatch.containsKey(key)) {
49+
50+
// UUID testUUID = e.getEntity().getThrower();
51+
// if (testUUID!=null && testUUID.equals(new UUID(0, 0))) {
52+
// return;
53+
// }
4854
PickupObjective po = AutoPickup.customItemPatch.get(key);
4955
ItemStack item = e.getEntity().getItemStack();
5056
Player player = po.getPlayer();
5157
boolean doSmelt = PLUGIN.auto_smelt_blocks.contains(player);
5258
HashMap<Integer, ItemStack> leftOver = player.getInventory().addItem(item);
53-
e.getEntity().remove();
54-
if (leftOver.keySet().size()>0) {
55-
for (ItemStack items : leftOver.values()) {
56-
player.getWorld().dropItemNaturally(new Location(loc.getWorld(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()).add(.5,0,.5), items);
57-
}
59+
if (leftOver.keySet().size()<=0) {
60+
e.getEntity().remove();
5861
}
62+
// if (leftOver.keySet().size()>0) {
63+
// for (ItemStack items : leftOver.values()) {
64+
// Item dropped = player.getWorld().dropItemNaturally(new Location(loc.getWorld(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()).add(.5,0,.5), items);
65+
// dropped.setThrower(new UUID(0, 0));
66+
// }
67+
// }
5968
// if (player.getInventory().firstEmpty()!=-1) {
6069
// e.getEntity().remove();
6170
// if (doSmelt) {

src/main/java/us/thezircon/play/autopickup/utils/PickupObjective.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,31 @@
11
package us.thezircon.play.autopickup.utils;
22

33
import org.bukkit.Location;
4+
import org.bukkit.entity.Item;
45
import org.bukkit.entity.Player;
56

67
import java.time.Instant;
8+
import java.util.HashSet;
79

810
public class PickupObjective {
911

1012
private Location location;
1113
private Player player;
1214
private Instant createdAt;
15+
private HashSet<Item> processed;
16+
17+
public PickupObjective(Location location, Player player, Instant instant, HashSet<Item> processed) {
18+
this.location = location;
19+
this.player = player;
20+
this.createdAt = instant;
21+
this.processed = processed;
22+
}
1323

1424
public PickupObjective(Location location, Player player, Instant instant) {
1525
this.location = location;
1626
this.player = player;
1727
this.createdAt = instant;
28+
this.processed = null;
1829
}
1930

2031
public Location getLocation() {
@@ -28,4 +39,9 @@ public Player getPlayer() {
2839
public Instant getCreatedAt() {
2940
return createdAt;
3041
}
42+
43+
public HashSet<Item> getProcessed() {
44+
return processed;
45+
}
46+
3147
}

0 commit comments

Comments
 (0)