From f649e3d6c33ae81658f16decd2f24bbc3ddfac81 Mon Sep 17 00:00:00 2001 From: Lemon Date: Fri, 11 Jan 2019 22:04:32 +0500 Subject: [PATCH] add clearchat --- .../blocking/EventBlocker.java | 19 ++----- .../command/Command_clearchat.java | 51 +++++++++++++++++++ .../masterbuilder/MasterBuilder.java | 13 +++-- .../playerverification/VPlayer.java | 11 ++-- 4 files changed, 70 insertions(+), 24 deletions(-) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearchat.java diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/EventBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/EventBlocker.java index 11926c2e..e39e3b29 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/EventBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/EventBlocker.java @@ -3,18 +3,16 @@ package me.totalfreedom.totalfreedommod.blocking; import me.totalfreedom.totalfreedommod.FreedomService; import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.config.ConfigEntry; -import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.MaterialGroup; -import org.bukkit.ChatColor; import org.bukkit.attribute.Attribute; import org.bukkit.attribute.AttributeModifier; -import org.bukkit.block.Block; import org.bukkit.block.ShulkerBox; import org.bukkit.entity.Entity; import org.bukkit.entity.Tameable; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.block.BlockBurnEvent; +import org.bukkit.event.block.BlockDispenseEvent; import org.bukkit.event.block.BlockFromToEvent; import org.bukkit.event.block.BlockIgniteEvent; import org.bukkit.event.block.BlockPistonExtendEvent; @@ -29,7 +27,6 @@ import org.bukkit.event.entity.ExplosionPrimeEvent; import org.bukkit.event.entity.FireworkExplodeEvent; import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerRespawnEvent; -import org.bukkit.event.block.BlockDispenseEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.BlockStateMeta; @@ -163,8 +160,7 @@ public class EventBlocker extends FreedomService } @EventHandler(priority = EventPriority.NORMAL) - public void onLeavesDecay(LeavesDecayEvent event - ) + public void onLeavesDecay(LeavesDecayEvent event) { event.setCancelled(true); } @@ -225,16 +221,7 @@ public class EventBlocker extends FreedomService { BlockStateMeta blockStateMeta = (BlockStateMeta)item.getItemMeta(); ShulkerBox shulkerBox = (ShulkerBox)blockStateMeta.getBlockState(); - for (ItemStack itemStack : shulkerBox.getInventory().getContents()) - { - if (itemStack != null) - { - event.setCancelled(true); - break; - } - } + shulkerBox.getInventory().clear(); } } - - } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearchat.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearchat.java new file mode 100644 index 00000000..841f0b71 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearchat.java @@ -0,0 +1,51 @@ +package me.totalfreedom.totalfreedommod.command; + +import java.util.stream.IntStream; +import me.totalfreedom.totalfreedommod.masterbuilder.MasterBuilder; +import me.totalfreedom.totalfreedommod.playerverification.VPlayer; +import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.util.FUtil; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.OP, source = SourceType.BOTH) +@CommandParameters(description = "Clear chat", usage = "/ [optout]", aliases = "cc") +public class Command_clearchat extends FreedomCommand +{ + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) + { + if (plugin.al.isAdmin(playerSender)) + { + server.getOnlinePlayers().stream().filter(player -> !plugin.al.isAdmin(player) || !plugin.pv.getVerificationPlayer(player).isClearChatOptOut() || !plugin.mbl.getMasterBuilder(player).isClearChatOptOut()).forEach(player -> IntStream.range(0, 100).mapToObj(i -> "").forEach(player::sendMessage)); + FUtil.adminAction(sender.getName(), "Cleared chat", true); + return true; + } + if (args.length != 1) + { + return false; + } + if (plugin.mbl.isMasterBuilder(playerSender)) + { + MasterBuilder mb = plugin.mbl.getMasterBuilder(playerSender); + mb.setClearChatOptOut(!mb.isClearChatOptOut()); + msg(mb.isClearChatOptOut() ? "Opted-out" : "Opted-in" + " to clear chat."); + plugin.mbl.save(); + plugin.mbl.updateTables(); + return true; + } + if (plugin.pv.getVerificationPlayer(playerSender).getEnabled()) + { + VPlayer vp = plugin.pv.getVerificationPlayer(playerSender); + vp.setClearChatOptOut(!vp.isClearChatOptOut()); + msg(vp.isClearChatOptOut() ? "Opted-out" : "Opted-in" + " to clear chat."); + plugin.pv.saveVerificationData(vp); + return true; + } + msg("Only Master Builders, and players with verification enabled can opt out of clear chat.", ChatColor.RED); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/masterbuilder/MasterBuilder.java b/src/main/java/me/totalfreedom/totalfreedommod/masterbuilder/MasterBuilder.java index c33a0a70..c0d52222 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/masterbuilder/MasterBuilder.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/masterbuilder/MasterBuilder.java @@ -34,6 +34,9 @@ public class MasterBuilder implements ConfigLoadable, ConfigSavable, Validatable @Getter @Setter private String tag = null; + @Getter + @Setter + private boolean clearChatOptOut = false; public static final String CONFIG_FILENAME = "masterbuilders.yml"; @@ -58,7 +61,8 @@ public class MasterBuilder implements ConfigLoadable, ConfigSavable, Validatable .append("- IPs: ").append(StringUtils.join(ips, ", ")).append("\n") .append("- Last Login: ").append(FUtil.dateToString(lastLogin)).append("\n") .append("- Discord ID: ").append(discordID).append("\n") - .append("- Tag: ").append(tag).append("\n"); + .append("- Tag: ").append(tag).append("\n") + .append("- Clear Chat Opt Out: ").append(clearChatOptOut); return output.toString(); } @@ -80,6 +84,7 @@ public class MasterBuilder implements ConfigLoadable, ConfigSavable, Validatable lastLogin = FUtil.stringToDate(cs.getString("last_login")); discordID = cs.getString("discord_id", null); tag = cs.getString("tag", null); + clearChatOptOut = cs.getBoolean("clearchatoptout", false); } @Override @@ -91,6 +96,7 @@ public class MasterBuilder implements ConfigLoadable, ConfigSavable, Validatable cs.set("last_login", FUtil.dateToString(lastLogin)); cs.set("discord_id", discordID); cs.set("tag", tag); + cs.set("clearchatoptout", clearChatOptOut); } public void addIp(String ip) @@ -111,10 +117,7 @@ public class MasterBuilder implements ConfigLoadable, ConfigSavable, Validatable public void removeIp(String ip) { - if (ips.contains(ip)) - { - ips.remove(ip); - } + ips.remove(ip); } public void clearIPs() diff --git a/src/main/java/me/totalfreedom/totalfreedommod/playerverification/VPlayer.java b/src/main/java/me/totalfreedom/totalfreedommod/playerverification/VPlayer.java index 72b5bcb7..e328d398 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/playerverification/VPlayer.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/playerverification/VPlayer.java @@ -31,6 +31,9 @@ public class VPlayer implements ConfigLoadable, ConfigSavable, Validatable @Getter @Setter private String tag = null; + @Getter + @Setter + private boolean clearChatOptOut = false; public VPlayer(String name) { @@ -51,6 +54,7 @@ public class VPlayer implements ConfigLoadable, ConfigSavable, Validatable discordId = cs.getString("discordId", null); enabled = cs.getBoolean("enabled", false); tag = cs.getString("tag", null); + clearChatOptOut = cs.getBoolean("clearchatoptout", false); } @Override @@ -62,6 +66,7 @@ public class VPlayer implements ConfigLoadable, ConfigSavable, Validatable cs.set("enabled", enabled); cs.set("tag", tag); cs.set("ips", Lists.newArrayList(ips)); + cs.set("clearchatoptout", clearChatOptOut); } public List getIps() @@ -71,12 +76,12 @@ public class VPlayer implements ConfigLoadable, ConfigSavable, Validatable public boolean addIp(String ip) { - return ips.contains(ip) ? false : ips.add(ip); + return !ips.contains(ip) && ips.add(ip); } - public boolean removeIp(String ip) + public void removeIp(String ip) { - return ips.remove(ip); + ips.remove(ip); } @Override