Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package flavor.pie;
- import org.bukkit.ChatColor;
- import org.bukkit.Material;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.conversations.*;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.inventory.InventoryClickEvent;
- import org.bukkit.inventory.Inventory;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.meta.ItemMeta;
- import org.bukkit.plugin.java.JavaPlugin;
- import java.util.*;
- public class LegacyDiscipline extends JavaPlugin implements Listener {
- @Override
- public void onEnable() {
- saveDefaultConfig();
- getServer().getPluginManager().registerEvents(this, this);
- }
- String c(String s) {
- return ChatColor.translateAlternateColorCodes('&', "&f"+s);
- }
- @Override
- public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
- if (args.length == 0) {
- sender.sendMessage(c("&c/"+label+" reload|<player>"));
- return true;
- }
- if (args[0].equalsIgnoreCase("reload")) {
- if (sender instanceof Player && !sender.hasPermission("legacy.reload")) {
- sender.sendMessage(c("&cYou do not have permission to run this command."));
- return true;
- }
- reloadConfig();
- }
- if (!(sender instanceof Player)) {
- sender.sendMessage(c("&cSorry, players only."));
- return true;
- }
- Player p = (Player) sender;
- Player p2;
- try {
- p2 = getServer().getPlayer(UUID.fromString(args[0]));
- } catch (IllegalArgumentException e) {
- p2 = getServer().getPlayer(args[0]);
- }
- if (p2 == null) {
- sender.sendMessage(c("&cInvalid player!"));
- return true;
- }
- Inventory i = getServer().createInventory(null, 54, "Punishing "+p.getName());
- i.setItem(4, build(p.getName(), Material.WEB, getConfig().getStringList("discipline.info").toArray(new String[]{})));
- if (p.hasPermission("legacy.mute")) i.setItem(10, build(p.getName(), Material.IRON_BLOCK, "Mute"));
- if (p.hasPermission("legacy.ban")) i.setItem(16, build(p.getName(), Material.REDSTONE, "Ban"));
- if (p.hasPermission("legacy.kick")) i.setItem(22, build(p.getName(), Material.COAL, "Kick"));
- if (p.hasPermission("legacy.tempban")) i.setItem(37, build(p.getName(), Material.LAPIS_BLOCK, "Temp Ban"));
- if (p.hasPermission("legacy.tempmute")) i.setItem(43, build(p.getName(), Material.GOLD_BLOCK, "Temp Mute"));
- p.openInventory(i);
- return true;
- }
- ItemStack build(String name, Material m, String... text) {
- ItemStack stack = new ItemStack(m);
- ItemMeta meta = stack.getItemMeta();
- List<String> list = Arrays.asList(text);
- list.replaceAll(this::c);
- list.replaceAll(s -> s.replace("<player>", name));
- meta.setDisplayName(list.get(0));
- if (list.size() > 1) {
- meta.setLore(list.subList(1, list.size()));
- }
- stack.setItemMeta(meta);
- return stack;
- }
- @EventHandler
- public void onClick(InventoryClickEvent e) {
- if (e.getInventory().getTitle().startsWith("Punishing ") && e.getSlot() == e.getRawSlot()) {
- e.setCancelled(true);
- if (e.getView().getItem(e.getRawSlot()) == null || e.getView().getItem(e.getRawSlot()).getType().equals(Material.AIR)) return;
- Discipline d;
- switch (e.getSlot()) {
- case 10:
- d = Discipline.MUTE;
- break;
- case 16:
- d = Discipline.BAN;
- break;
- case 22:
- d = Discipline.KICK;
- break;
- case 37:
- d = Discipline.TEMPBAN;
- break;
- case 43:
- d = Discipline.TEMPMUTE;
- break;
- default: return;
- }
- HashMap<Object, Object> map = new HashMap<>();
- map.put(d, e.getInventory().getTitle().replace("Punishing ",""));
- Conversation c = new ConversationFactory(this).withEscapeSequence("cancel").withFirstPrompt(new ReasonPrompt(d)).thatExcludesNonPlayersWithMessage("Players only. Duh.").withLocalEcho(true).withInitialSessionData(map).buildConversation((Player) e.getWhoClicked());
- c.begin();
- }
- }
- void runCommand(Player p, Discipline d, String... args) {
- getServer().broadcastMessage(d.toString().toLowerCase() + " " + args[0] + (args.length == 0 ? "" : " " + args[1]));
- }
- enum Discipline {
- BAN, KICK, MUTE, TEMPBAN, TEMPMUTE
- }
- class ReasonPrompt extends StringPrompt {
- Discipline d;
- ReasonPrompt(Discipline d) {
- ReasonPrompt.this.d = d;
- }
- @Override
- public Prompt acceptInput(ConversationContext context, String msg) {
- if (d.equals(Discipline.TEMPBAN) || d.equals(Discipline.TEMPMUTE)) {
- String args = (String) context.getSessionData(d);
- args += " "+msg;
- context.setSessionData(d, args);
- return new DurationPrompt(d);
- } else {
- runCommand((Player) context.getForWhom(), d, msg);
- return END_OF_CONVERSATION;
- }
- }
- @Override
- public String getPromptText(ConversationContext context) {
- return getConfig().getString("discipline."+d.toString().toLowerCase()+".reason").replace("<player>", ((Player) context.getForWhom()).getName());
- }
- }
- class DurationPrompt extends StringPrompt {
- Discipline d;
- DurationPrompt(Discipline d) {
- DurationPrompt.this.d = d;
- }
- @Override
- public Prompt acceptInput(ConversationContext context, String input) {
- String msg = (String) context.getSessionData(d);
- runCommand((Player) context.getForWhom(), d, msg, input);
- return END_OF_CONVERSATION;
- }
- @Override
- public String getPromptText(ConversationContext context) {
- return getConfig().getString("discipline."+d.toString().toLowerCase()+".duration").replace("<player>", ((Player) context.getForWhom()).getName());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement