Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<groupId>network.palace</groupId>
<artifactId>Core</artifactId>
<version>2.8.3</version>
<version>2.8.4</version>

<repositories>
<repository>
Expand Down
6 changes: 5 additions & 1 deletion src/main/java/network/palace/core/Core.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import network.palace.core.economy.EconomyManager;
import network.palace.core.economy.HonorManager;
import network.palace.core.errors.RollbarHandler;
import network.palace.core.events.CommandListener;
import network.palace.core.library.LibraryHandler;
import network.palace.core.messagequeue.MessageHandler;
import network.palace.core.mongo.MongoHandler;
Expand Down Expand Up @@ -63,7 +64,7 @@
* <p>
* You can access instances of other modules by depending on Core in your pom.xml, and then executing Core.get
*/
@PluginInfo(name = "Core", version = "2.8.3", depend = {"ProtocolLib"}, softdepend = {"ViaVersion"})
@PluginInfo(name = "Core", version = "2.8.4", depend = {"ProtocolLib"}, softdepend = {"ViaVersion"})
public class Core extends JavaPlugin {
@Getter private URLClassLoader coreClassLoader;
@Getter private static Core instance;
Expand Down Expand Up @@ -201,6 +202,8 @@ public void onPacketSending(PacketEvent event) {
registerDisabledCommands();
// Log
logMessage("Core", ChatColor.DARK_GREEN + "Enabled");
// Command Listener
new CommandListener(this);

runTask(this, () -> mongoHandler.setServerOnline(getInstanceName(), getServerType(), playground, true));

Expand Down Expand Up @@ -244,6 +247,7 @@ private void registerCommands() {
registerCommand(new FlyCommand());
registerCommand(new HelpopCommand());
registerCommand(new HonorCommand());
registerCommand(new KillCommand());
registerCommand(new ListCommand());
registerCommand(new LockArmorStandCommand());
registerCommand(new MsgCommand());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ protected void handleCommand(CPlayer player, String[] args) throws CommandExcept
}

private void message(String sender, String message) {
String msg = ChatColor.DARK_RED + "[CM CHAT] " + ChatColor.GRAY + sender + ": " + ChatColor.WHITE +
String msg = ChatColor.DARK_PURPLE + "[CM CHAT] " + ChatColor.GRAY + sender + ": " + ChatColor.WHITE +
ChatColor.translateAlternateColorCodes('&', message);
for (CPlayer tp : Core.getPlayerManager().getOnlinePlayers()) {
if (tp.getRank().getRankId() >= Rank.TRAINEE.getRankId()) {
Expand Down
37 changes: 37 additions & 0 deletions src/main/java/network/palace/core/commands/KillCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package network.palace.core.commands;

import network.palace.core.command.CommandException;
import network.palace.core.command.CommandMeta;
import network.palace.core.command.CoreCommand;
import network.palace.core.player.CPlayer;
import network.palace.core.player.Rank;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.ChatColor;

/**
* @author Tourist457
* @since 4/25/2021
*/

@CommandMeta(description = "Kill entities safely", rank = Rank.CM)
public class KillCommand extends CoreCommand {

public KillCommand() {
super("kill");
}

@Override
protected void handleCommand(ConsoleCommandSender sender, String[] args) throws CommandException {
sender.sendMessage(ChatColor.RED + "You cannot kill entities in console!");
}

@Override
protected void handleCommand(CPlayer sender, String[] args) throws CommandException {
String command = String.join(" ", args);
if (!command.matches(".*r=[1-9].*")) {
sender.sendMessage(ChatColor.RED + "You cannot kill entities without a radius!");
return;
}
sender.performCommand("minecraft:kill " + command);
}
}
61 changes: 61 additions & 0 deletions src/main/java/network/palace/core/events/CommandListener.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package network.palace.core.events;

import org.bukkit.event.Listener;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.event.block.BlockRedstoneEvent;
import org.bukkit.block.Block;
import org.bukkit.block.CommandBlock;
import org.bukkit.Bukkit;


public class CommandListener implements Listener {
JavaPlugin plugin;

public CommandListener(JavaPlugin plugin) {
plugin.getServer().getPluginManager().registerEvents(this, plugin);
this.plugin = plugin;
}

@EventHandler
public void preProcessCommand(PlayerCommandPreprocessEvent event) {
if (event.getMessage().toLowerCase().startsWith("/minecraft:kill")) {
if (!event.getMessage().matches(".*r=[1-9].*")) {
event.setCancelled(true);
event.getPlayer().sendMessage("§cYou cannot kill entities without a radius!");
}
}
}

@EventHandler
public void redstoneChanges(BlockRedstoneEvent e){
Block block = e.getBlock();
if(e.getOldCurrent() > 0 || e.getNewCurrent() == 0) return;
if (!(block.getState() instanceof CommandBlock)) return;

CommandBlock cb = (CommandBlock)block.getState();
try {
String[] args = cb.getCommand().split(" ");
if (args[0].toLowerCase().equals("minecraft:kill") && !cb.getCommand().matches(".*r=[1-9].*")) {
setCommandBlock(cb, "", String.join(" ", args));
return;
}

if (!args[0].toLowerCase().equals("kill")) return;

String cmd = cb.getCommand().matches(".*r=[1-9].*") ? "minecraft:" + cb.getCommand() : "";
setCommandBlock(cb, cmd, String.join(" ", args));
} catch (Exception ignored) { }
}

public void setCommandBlock(CommandBlock cb, String command, String oldCommand) {
cb.setCommand(command);
cb.update();

Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> {
cb.setCommand(String.join(" ", oldCommand));
cb.update();
}, 5L);
}}