-
-
Notifications
You must be signed in to change notification settings - Fork 56
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
13 changed files
with
674 additions
and
621 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
160 changes: 160 additions & 0 deletions
160
...a/src/main/java/me/moomoo/anarchyexploitfixes/modules/illegals/items/BannedItemNames.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,160 @@ | ||
package me.moomoo.anarchyexploitfixes.modules.illegals.items; | ||
|
||
import com.destroystokyo.paper.event.inventory.PrepareResultEvent; | ||
import io.papermc.paper.event.player.PrePlayerAttackEntityEvent; | ||
import me.moomoo.anarchyexploitfixes.AnarchyExploitFixes; | ||
import me.moomoo.anarchyexploitfixes.config.Config; | ||
import me.moomoo.anarchyexploitfixes.enums.AEFPermission; | ||
import me.moomoo.anarchyexploitfixes.utils.models.HumanPermHelper; | ||
import net.kyori.adventure.text.Component; | ||
import net.kyori.adventure.text.minimessage.MiniMessage; | ||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; | ||
import org.bukkit.event.EventHandler; | ||
import org.bukkit.event.EventPriority; | ||
import org.bukkit.event.HandlerList; | ||
import org.bukkit.event.inventory.InventoryClickEvent; | ||
import org.bukkit.event.player.PlayerDropItemEvent; | ||
import org.bukkit.event.player.PlayerInteractEntityEvent; | ||
import org.bukkit.event.player.PlayerInteractEvent; | ||
import org.bukkit.inventory.ItemStack; | ||
|
||
import java.util.HashSet; | ||
import java.util.List; | ||
import java.util.Set; | ||
import java.util.stream.Collectors; | ||
|
||
public class BannedItemNames implements IllegalItemModule { | ||
|
||
private final AnarchyExploitFixes plugin; | ||
private final Set<Component> colorSensitiveNames; | ||
private final Set<String> colorInsensitiveNames; | ||
|
||
public BannedItemNames() { | ||
shouldEnable(); | ||
this.plugin = AnarchyExploitFixes.getInstance(); | ||
Config config = AnarchyExploitFixes.getConfiguration(); | ||
config.addComment("illegals.remove-specific-item-names.enable", "Resets an item's name if configured in the config."); | ||
this.colorInsensitiveNames = new HashSet<>(config.getList("illegals.remove-specific-item-names.color-insensitive-item-names", | ||
List.of("Super Insane Mega Sussy Item"))); | ||
this.colorSensitiveNames = config.getList("illegals.remove-specific-item-names.color-sensitive-item-names", | ||
List.of("<bold><aqua>PvP KIT V2")) | ||
.stream() | ||
.map(serialized -> MiniMessage.miniMessage().deserialize(serialized)) | ||
.collect(Collectors.toCollection(HashSet::new)); | ||
} | ||
|
||
@Override | ||
public String name() { | ||
return "remove-items-with-specific-names"; | ||
} | ||
|
||
@Override | ||
public String category() { | ||
return "illegals"; | ||
} | ||
|
||
@Override | ||
public void enable() { | ||
plugin.getServer().getPluginManager().registerEvents(this, plugin); | ||
} | ||
|
||
@Override | ||
public boolean shouldEnable() { | ||
return AnarchyExploitFixes.getConfiguration().getBoolean("illegals.remove-specific-item-names.enable", false); | ||
} | ||
|
||
@Override | ||
public void disable() { | ||
HandlerList.unregisterAll(this); | ||
} | ||
|
||
@Override | ||
public ItemCheckResult checkItem(ItemStack itemStack) { | ||
if (itemStack == null || itemStack.getType().isAir() || !itemStack.hasItemMeta()) { | ||
return ItemCheckResult.FINE; | ||
} | ||
|
||
final Component displayName = itemStack.displayName(); | ||
if (colorSensitiveNames.contains(displayName) | ||
|| colorInsensitiveNames.contains(PlainTextComponentSerializer.plainText().serialize(displayName))) { | ||
return ItemCheckResult.IS_ILLEGAL; | ||
} | ||
|
||
return ItemCheckResult.FINE; | ||
} | ||
|
||
@Override | ||
public void takeAction(ItemStack itemStack, ItemCheckResult result) { | ||
itemStack.editMeta(meta -> meta.displayName(null)); | ||
} | ||
|
||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) | ||
private void onPrepareResult(PrepareResultEvent event) { | ||
if (HumanPermHelper.hasPermission(AEFPermission.BYPASS_ILLEGAL_BANNEDNAME, event.getView().getPlayer())) return; | ||
|
||
ItemStack resultItem = event.getResult(); | ||
if (checkItem(resultItem) == ItemCheckResult.IS_ILLEGAL) { | ||
takeAction(resultItem, ItemCheckResult.IS_ILLEGAL); | ||
event.setResult(resultItem); | ||
} | ||
} | ||
|
||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) | ||
private void onInventoryClick(InventoryClickEvent event) { | ||
if (HumanPermHelper.hasPermission(AEFPermission.BYPASS_ILLEGAL_BANNEDNAME, event.getWhoClicked())) return; | ||
|
||
takeAction(event.getCurrentItem(), checkItem(event.getCurrentItem())); | ||
takeAction(event.getCursor(), checkItem(event.getCursor())); | ||
for (ItemStack itemStack : event.getInventory()) { | ||
takeAction(itemStack, checkItem(itemStack)); | ||
} | ||
} | ||
|
||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) | ||
private void onAttack(PrePlayerAttackEntityEvent event) { | ||
if (!event.willAttack()) return; | ||
ItemStack attackItem = event.getPlayer().getActiveItem(); | ||
final ItemCheckResult result = checkItem(attackItem); | ||
if (result != ItemCheckResult.FINE) { | ||
if (HumanPermHelper.hasPermission(AEFPermission.BYPASS_ILLEGAL_BANNEDNAME, event.getPlayer())) return; | ||
|
||
event.setCancelled(true); | ||
takeAction(attackItem, result); | ||
} | ||
} | ||
|
||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) | ||
private void onPlayerDropItem(PlayerDropItemEvent event) { | ||
ItemStack droppedItem = event.getItemDrop().getItemStack(); | ||
final ItemCheckResult result = checkItem(droppedItem); | ||
if (result != ItemCheckResult.FINE) { | ||
if (HumanPermHelper.hasPermission(AEFPermission.BYPASS_ILLEGAL_BANNEDNAME, event.getPlayer())) return; | ||
|
||
takeAction(droppedItem, result); | ||
event.getItemDrop().setItemStack(droppedItem); | ||
} | ||
} | ||
|
||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = false) | ||
private void onInteract(PlayerInteractEvent event) { | ||
final ItemCheckResult result = checkItem(event.getItem()); | ||
if (result != ItemCheckResult.FINE) { | ||
if (HumanPermHelper.hasPermission(AEFPermission.BYPASS_ILLEGAL_BANNEDNAME, event.getPlayer())) return; | ||
|
||
event.setCancelled(true); | ||
takeAction(event.getItem(), result); | ||
} | ||
} | ||
|
||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) | ||
private void onInteractEntity(PlayerInteractEntityEvent event) { | ||
ItemStack handItem = event.getPlayer().getInventory().getItem(event.getHand()); | ||
final ItemCheckResult result = checkItem(handItem); | ||
if (result != ItemCheckResult.FINE) { | ||
if (HumanPermHelper.hasPermission(AEFPermission.BYPASS_ILLEGAL_BANNEDNAME, event.getPlayer())) return; | ||
|
||
event.setCancelled(true); | ||
takeAction(handItem, result); | ||
} | ||
} | ||
} |
Oops, something went wrong.