Skip to content

Commit 468bbcc

Browse files
committed
add material list to avoid false positives
1 parent 9209e5f commit 468bbcc

File tree

2 files changed

+50
-2
lines changed
  • AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/dupepreventions
  • AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/dupepreventions

2 files changed

+50
-2
lines changed

AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/dupepreventions/TridentDupe.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,44 @@
44
import com.github.retrooper.packetevents.manager.server.ServerVersion;
55
import me.xginko.aef.modules.AEFModule;
66
import me.xginko.aef.utils.enums.Platform;
7+
import org.bukkit.Material;
78
import org.bukkit.event.EventHandler;
89
import org.bukkit.event.EventPriority;
910
import org.bukkit.event.HandlerList;
1011
import org.bukkit.event.Listener;
1112
import org.bukkit.event.inventory.InventoryClickEvent;
1213

14+
import java.util.EnumSet;
15+
import java.util.Objects;
16+
import java.util.Set;
17+
import java.util.stream.Collectors;
18+
import java.util.stream.Stream;
19+
1320
public class TridentDupe extends AEFModule implements Listener {
1421

22+
private final Set<Material> dupePreventedMaterial;
23+
1524
public TridentDupe() {
1625
super("dupe-preventions.trident-dupe",
1726
Platform.getServerVersion().isOlderThanOrEquals(ServerVersion.V_1_21_4), """
1827
Prevents trident dupe from working in 1.13 - 1.21.4
1928
This dupe was originally found by Autism inc and turned into
2029
a mod by Killet, Laztec, and Ionar.""");
30+
this.dupePreventedMaterial = config.getList(configPath + ".materials",
31+
Stream.of(XMaterial.TRIDENT, XMaterial.ARROW, XMaterial.TIPPED_ARROW,
32+
XMaterial.SPECTRAL_ARROW, XMaterial.EGG, XMaterial.WIND_CHARGE)
33+
.filter(XMaterial::isSupported).map(XMaterial::get).map(Enum::name).collect(Collectors.toList()))
34+
.stream()
35+
.map(configuredMaterial -> {
36+
try {
37+
return Material.valueOf(configuredMaterial);
38+
} catch (IllegalArgumentException e) {
39+
notRecognized(Material.class, configuredMaterial);
40+
return null;
41+
}
42+
})
43+
.filter(Objects::nonNull)
44+
.collect(Collectors.toCollection(() -> EnumSet.noneOf(Material.class)));
2145
}
2246

2347
@Override
@@ -32,7 +56,7 @@ public void disable() {
3256

3357
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
3458
private void onInventoryClick(InventoryClickEvent event) {
35-
if (event.getWhoClicked().getActiveItem().getType() != XMaterial.AIR.get()) {
59+
if (dupePreventedMaterial.contains(event.getWhoClicked().getActiveItem().getType())) {
3660
event.setCancelled(true);
3761
}
3862
}

AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/dupepreventions/TridentDupe.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,45 @@
44
import com.github.retrooper.packetevents.manager.server.ServerVersion;
55
import me.xginko.aef.modules.AEFModule;
66
import me.xginko.aef.utils.enums.Platform;
7+
import org.bukkit.Material;
78
import org.bukkit.event.EventHandler;
89
import org.bukkit.event.EventPriority;
910
import org.bukkit.event.HandlerList;
1011
import org.bukkit.event.Listener;
1112
import org.bukkit.event.inventory.InventoryClickEvent;
1213

14+
import java.util.EnumSet;
15+
import java.util.Objects;
16+
import java.util.Set;
17+
import java.util.stream.Collectors;
18+
import java.util.stream.Stream;
19+
1320
public class TridentDupe extends AEFModule implements Listener {
1421

22+
private final Set<Material> dupePreventedMaterial;
23+
1524
public TridentDupe() {
1625
super("dupe-preventions.trident-dupe",
1726
Platform.getServerVersion().isOlderThanOrEquals(ServerVersion.V_1_21_4)
1827
&& Platform.getServerVersion().isNewerThan(ServerVersion.V_1_12_2),
1928
"Prevents trident dupe from working in 1.13 - 1.21.4\n"+
2029
"This dupe was originally found by Autism inc and turned into\n"+
2130
"a mod by Killet, Laztec, and Ionar.");
31+
this.dupePreventedMaterial = config.getList(configPath + ".materials",
32+
Stream.of(XMaterial.TRIDENT, XMaterial.ARROW, XMaterial.TIPPED_ARROW,
33+
XMaterial.SPECTRAL_ARROW, XMaterial.EGG, XMaterial.WIND_CHARGE)
34+
.filter(XMaterial::isSupported).map(XMaterial::get).map(Enum::name).collect(Collectors.toList()))
35+
.stream()
36+
.map(configuredMaterial -> {
37+
try {
38+
return Material.valueOf(configuredMaterial);
39+
} catch (IllegalArgumentException e) {
40+
notRecognized(Material.class, configuredMaterial);
41+
return null;
42+
}
43+
})
44+
.filter(Objects::nonNull)
45+
.collect(Collectors.toCollection(() -> EnumSet.noneOf(Material.class)));
2246
}
2347

2448
@Override
@@ -34,7 +58,7 @@ public void disable() {
3458
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
3559
private void onInventoryClick(InventoryClickEvent event) {
3660
if (event.getWhoClicked().getActiveItem() != null
37-
&& event.getWhoClicked().getActiveItem().getType() != XMaterial.AIR.get()) {
61+
&& dupePreventedMaterial.contains(event.getWhoClicked().getActiveItem().getType())) {
3862
event.setCancelled(true);
3963
}
4064
}

0 commit comments

Comments
 (0)