feat: player actions prevention

This commit is contained in:
TheClashFruit 2023-06-11 21:48:45 +02:00
parent ea5815c613
commit ddb56ec01a
Signed by: TheClashFruit
GPG key ID: CF4A319B9A73290C
11 changed files with 104 additions and 3 deletions

Binary file not shown.

View file

@ -4,6 +4,7 @@ import me.theclashfruit.hubbit.bstats.Metrics;
import me.theclashfruit.hubbit.commands.InfoCommand;
import me.theclashfruit.hubbit.commands.MenuCommand;
import me.theclashfruit.hubbit.events.MenuListener;
import me.theclashfruit.hubbit.events.PlayerActionsListener;
import me.theclashfruit.hubbit.utils.ConfigLoaderSingleton;
import org.bukkit.plugin.java.JavaPlugin;
@ -17,6 +18,7 @@ public final class Hubbit extends JavaPlugin {
// Register Events
this.getServer().getPluginManager().registerEvents(new MenuListener(), this);
this.getServer().getPluginManager().registerEvents(new PlayerActionsListener(), this);
// Config
this.saveDefaultConfig();

View file

@ -73,7 +73,9 @@ public class MenuListener implements Listener {
Player player = event.getPlayer();
if(player.getInventory().getItemInMainHand().isSimilar(new ItemStack(Material.valueOf(menuConfig.getString("open_material")), 1))) {
if(player.getInventory().getItemInMainHand().getType() == Material.valueOf(menuConfig.getString("open_material"))) {
event.setCancelled(true);
player.performCommand("servers");

View file

@ -0,0 +1,83 @@
package me.theclashfruit.hubbit.events;
import me.theclashfruit.hubbit.Hubbit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.configuration.Configuration;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.*;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.List;
import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
import static org.bukkit.Bukkit.getLogger;
public class PlayerActionsListener implements Listener {
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Configuration mainConfig = getPlugin(Hubbit.class).getConfig();
event.setJoinMessage(ChatColor.translateAlternateColorCodes('&', mainConfig.getString("messages.player.join").replace("%player%", event.getPlayer().getName())));
getLogger().log(java.util.logging.Level.INFO, String.valueOf(mainConfig.getStringList("hub.worlds").contains(event.getPlayer().getWorld().getName())));
if(mainConfig.getStringList("hub.worlds").contains(event.getPlayer().getWorld().getName())) {
Inventory playerInv = event.getPlayer().getInventory();
mainConfig.getMapList("hub.inventory").forEach(item -> {
ItemStack itemStack = new ItemStack(Material.valueOf((String) item.get("material")), (int) item.get("count"));
ItemMeta itemMeta = itemStack.getItemMeta();
itemMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', (String) item.get("name")));
List<String> lore = (List<String>) item.get("lore");
for (int i = 0; i < lore.size(); i++) {
lore.set(i, ChatColor.translateAlternateColorCodes('&', lore.get(i)));
}
itemMeta.setLore(lore);
itemStack.setItemMeta(itemMeta);
playerInv.setItem((int) item.get("slot"), itemStack);
});
event.getPlayer().getInventory().setContents(playerInv.getContents());
event.getPlayer().updateInventory();
}
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
Configuration mainConfig = getPlugin(Hubbit.class).getConfig();
event.setQuitMessage(ChatColor.translateAlternateColorCodes('&', mainConfig.getString("messages.player.quit").replace("%player%", event.getPlayer().getName())));
}
@EventHandler
public void preventInventoryClick(InventoryClickEvent event) {
Configuration mainConfig = getPlugin(Hubbit.class).getConfig();
if(mainConfig.getStringList("hub.worlds").contains(event.getWhoClicked().getWorld().getName()) && !event.getWhoClicked().hasPermission("hubbit.admin.interact")) {
event.setCancelled(true);
}
}
@EventHandler
public void preventPlayerDrop(PlayerDropItemEvent event) {
Configuration mainConfig = getPlugin(Hubbit.class).getConfig();
if (mainConfig.getStringList("hub.worlds").contains(event.getPlayer().getWorld().getName()) && !event.getPlayer().hasPermission("hubbit.admin.interact")) {
event.setCancelled(true);
}
}
}

View file

@ -1,2 +1,16 @@
message_prefix: '[Hubbit]'
hub_world: world
messages:
prefix: 'Hubbit |'
player:
join: '&a%player% &7has joined the server!'
leave: '&a%player% &7has left the server!'
hub:
worlds:
- world
inventory:
- name: '&aServer Selector'
material: 'COMPASS'
slot: 0
count: 1
lore:
- '&7Select The Server You Want To Join!'