mirror of
https://github.com/plexusorg/Plex.git
synced 2025-07-12 19:48:36 +00:00
Compare commits
7 Commits
1.5
...
61bcba339d
Author | SHA1 | Date | |
---|---|---|---|
61bcba339d | |||
47bd1b6170 | |||
0b824fc7fd | |||
49b0d3a5d2 | |||
ad9aa32831 | |||
2580c05404 | |||
38d6e043f2 |
@ -32,6 +32,7 @@ public class ToggleCMD extends PlexCommand
|
||||
sender.sendMessage(PlexUtils.mmDeserialize("<gray> - Fluidspread" + status("fluidspread")));
|
||||
sender.sendMessage(PlexUtils.mmDeserialize("<gray> - Drops" + status("drops")));
|
||||
sender.sendMessage(PlexUtils.mmDeserialize("<gray> - Redstone" + status("redstone")));
|
||||
sender.sendMessage(PlexUtils.mmDeserialize("<gray> - Admin-only public chat (modmode)" + status("moderated")));
|
||||
return null;
|
||||
}
|
||||
switch (args[0].toLowerCase())
|
||||
@ -52,6 +53,11 @@ public class ToggleCMD extends PlexCommand
|
||||
{
|
||||
return toggle("redstone");
|
||||
}
|
||||
case "modmode" ->
|
||||
{
|
||||
PlexUtils.broadcast(messageComponent(plugin.toggles.getBoolean("moderated") ? "modModeOff" : "modModeOn", sender.getName()));
|
||||
return toggle("moderated");
|
||||
}
|
||||
default ->
|
||||
{
|
||||
return messageComponent("invalidToggle");
|
||||
|
@ -1,6 +1,12 @@
|
||||
package dev.plex.listener.impl;
|
||||
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.listener.PlexListener;
|
||||
import dev.plex.util.PlexUtils;
|
||||
import io.papermc.paper.event.player.AsyncChatEvent;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.block.BlockExplodeEvent;
|
||||
import org.bukkit.event.block.BlockFromToEvent;
|
||||
@ -8,9 +14,13 @@ import org.bukkit.event.block.BlockRedstoneEvent;
|
||||
import org.bukkit.event.entity.EntityExplodeEvent;
|
||||
import org.bukkit.event.entity.ExplosionPrimeEvent;
|
||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TogglesListener extends PlexListener
|
||||
{
|
||||
List<String> commands = plugin.commands.getStringList("block_on_modmode");
|
||||
@EventHandler
|
||||
public void onExplosionPrime(ExplosionPrimeEvent event)
|
||||
{
|
||||
@ -58,6 +68,48 @@ public class TogglesListener extends PlexListener
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onChat(AsyncChatEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
if (plugin.toggles.getBoolean("moderated") && !Plex.get().getPermissions().has(player, "plex.togglechat.bypass"))
|
||||
{
|
||||
event.getPlayer().sendMessage(PlexUtils.messageComponent("chatIsDisabled"));
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onCommand(PlayerCommandPreprocessEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
if (plugin.toggles.getBoolean("moderated") && !Plex.get().getPermissions().has(player, "plex.togglechat.bypass"))
|
||||
{
|
||||
String message = event.getMessage();
|
||||
message = message.replaceAll("\\s.*", "").replaceFirst("/", "");
|
||||
if (commands.contains(message.toLowerCase()))
|
||||
{
|
||||
event.getPlayer().sendMessage(PlexUtils.messageComponent("chatIsDisabled"));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
for (String command : commands)
|
||||
{
|
||||
Command cmd = Bukkit.getCommandMap().getCommand(command);
|
||||
if (cmd == null) {
|
||||
return;
|
||||
}
|
||||
if (cmd.getAliases().contains(message.toLowerCase())) {
|
||||
event.getPlayer().sendMessage(PlexUtils.messageComponent("chatIsDisabled"));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* I have no idea if this is the best way to do this
|
||||
There is a very weird bug where if you try to create a loop using two repeaters and a lever, after disabling
|
||||
and re-enabling redstone, you are unable to recreate the loop with a lever. Using a redstone torch works fine.
|
||||
|
@ -24,6 +24,7 @@ public class ToggleMenu extends AbstractMenu
|
||||
resetFluidspreadItem(this.inventory());
|
||||
resetDropsItem(this.inventory());
|
||||
resetRedstoneItem(this.inventory());
|
||||
resetChatItem(this.inventory());
|
||||
}
|
||||
|
||||
private void resetExplosionItem(Inventory inventory)
|
||||
@ -66,6 +67,16 @@ public class ToggleMenu extends AbstractMenu
|
||||
inventory.setItem(3, redstone);
|
||||
}
|
||||
|
||||
private void resetChatItem(Inventory inventory)
|
||||
{
|
||||
ItemStack chat = new ItemStack(Material.OAK_SIGN);
|
||||
ItemMeta chatItemMeta = chat.getItemMeta();
|
||||
chatItemMeta.displayName(PlexUtils.mmDeserialize("<!italic><light_purple>Toggle chat"));
|
||||
chatItemMeta.lore(List.of(PlexUtils.mmDeserialize("<!italic><yellow>Public chat is currently " + (plugin.toggles.getBoolean("moderated") ? "<red>restricted to administrators" : "<green>unrestricted"))));
|
||||
chat.setItemMeta(chatItemMeta);
|
||||
inventory.setItem(4, chat);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onClick(InventoryView view, Inventory inventory, Player player, ItemStack clicked)
|
||||
{
|
||||
@ -93,6 +104,13 @@ public class ToggleMenu extends AbstractMenu
|
||||
resetRedstoneItem(inventory);
|
||||
player.sendMessage(PlexUtils.mmDeserialize("<gray>Toggled redstone."));
|
||||
}
|
||||
if (clicked.getType() == Material.OAK_SIGN)
|
||||
{
|
||||
plugin.toggles.set("moderated", !plugin.toggles.getBoolean("moderated"));
|
||||
PlexUtils.broadcast(PlexUtils.messageComponent(plugin.toggles.getBoolean("moderated") ? "modModeOn" : "modModeOff", player.getName()));
|
||||
resetChatItem(inventory);
|
||||
player.sendMessage(PlexUtils.mmDeserialize("<gray>Toggled moderated mode."));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -61,3 +61,8 @@ block_on_mute:
|
||||
- msg
|
||||
- reply
|
||||
- mail
|
||||
|
||||
# These commands will be blocked when chat has been toggled off, doesn't include commands that don't show a public message.
|
||||
block_on_modmode:
|
||||
- me
|
||||
- say
|
||||
|
@ -110,6 +110,10 @@ playerFrozen: "<red>That player is already frozen!"
|
||||
playerMuted: "<red>That player is already muted!"
|
||||
playerLockedUp: "<red>That player is already locked up!"
|
||||
muted: "<red>You are currently muted - STFU!"
|
||||
chatIsDisabled: "<red>Public chat is currently restricted!"
|
||||
# 0 - The command sender
|
||||
modModeOn: "<red>{0} - Restricting public chat to administrators"
|
||||
modModeOff: "<aqua>{0} - Unrestricting public chat"
|
||||
# 0 - The command sender
|
||||
# 1 - The player
|
||||
kickedPlayer: "<red>{0} - Kicking {1}"
|
||||
|
@ -11,3 +11,6 @@ drops: true
|
||||
|
||||
# Should redstone be enabled?
|
||||
redstone: true
|
||||
|
||||
# Should public chat be restricted to admins only? This does not affect commands such as /w, but will affect commands such as /me.
|
||||
moderated: false
|
||||
|
Reference in New Issue
Block a user