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
60 changes: 39 additions & 21 deletions src/main/java/pw/kaboom/extras/Main.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
package pw.kaboom.extras;

import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import io.papermc.paper.command.brigadier.CommandSourceStack;
import io.papermc.paper.command.brigadier.Commands;
import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents;
import io.papermc.paper.registry.keys.BlockTypeKeys;
import org.bukkit.WorldCreator;
import org.bukkit.WorldType;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.plugin.messaging.Messenger;
import pw.kaboom.extras.commands.BrigadierCommand;
import pw.kaboom.extras.commands.*;
import pw.kaboom.extras.modules.block.BlockCheck;
import pw.kaboom.extras.modules.block.BlockPhysics;
Expand All @@ -21,6 +26,7 @@
import pw.kaboom.extras.util.FlatLayers;

import java.io.File;
import java.util.List;

public final class Main extends JavaPlugin {
public static Main PLUGIN;
Expand All @@ -46,27 +52,39 @@ public void onEnable() {
prefixConfig = YamlConfiguration.loadConfiguration(prefixConfigFile);

/* Commands */
this.getCommand("broadcastrainbow").setExecutor(new CommandBroadcastRainbow());
this.getCommand("broadcastminimessage").setExecutor(new CommandBroadcastMM());
this.getCommand("broadcastvanilla").setExecutor(new CommandBroadcastVanilla());
this.getCommand("clearchat").setExecutor(new CommandClearChat());
this.getCommand("console").setExecutor(new CommandConsole());
this.getCommand("destroyentities").setExecutor(new CommandDestroyEntities());
this.getCommand("enchantall").setExecutor(new CommandEnchantAll());
this.getCommand("getjson").setExecutor(new CommandGetJSON());
this.getCommand("getjsonmm").setExecutor(new CommandGetJSONMM());
this.getCommand("jumpscare").setExecutor(new CommandJumpscare());
this.getCommand("kaboom").setExecutor(new CommandKaboom());
this.getCommand("ping").setExecutor(new CommandPing());
this.getCommand("prefix").setExecutor(new CommandPrefix());
this.getCommand("pumpkin").setExecutor(new CommandPumpkin());
this.getCommand("serverinfo").setExecutor(new CommandServerInfo());
this.getCommand("skin").setExecutor(new CommandSkin());
this.getCommand("spawn").setExecutor(new CommandSpawn());
this.getCommand("spidey").setExecutor(new CommandSpidey());
this.getCommand("tellraw").setExecutor(new CommandTellraw());
this.getCommand("username").setExecutor(new CommandUsername());

this.getLifecycleManager().registerEventHandler(LifecycleEvents.COMMANDS,event->{
final Commands registrar = event.registrar();
List<BrigadierCommand> commands = List.of(
new CommandBroadcastMiniMessage(),
new CommandBroadcastRainbow(),
new CommandBroadcastVanilla(),
new CommandClearChat(),
new CommandConsole(),
new CommandDestroyEntities(),
new CommandEnchantAll(),
new CommandGetJSON(),
new CommandGetJSONMM(),
new CommandJumpscare(),
new CommandKaboom(),
new CommandPing(),
new CommandPrefix(),
new CommandPumpkin(),
new CommandServerInfo(),
new CommandSkin(),
new CommandSpawn(),
new CommandSpidey(),
new CommandUsername()
);
for (BrigadierCommand command : commands) {
LiteralArgumentBuilder<CommandSourceStack> builder
= Commands.literal(command.getLabel());
command.build(builder);
registrar.register(
builder.build(),command.getDescription(),command.getAliases()
);
}
});

/* Block-related modules */
BlockPhysics.init(this);

Expand Down
18 changes: 18 additions & 0 deletions src/main/java/pw/kaboom/extras/commands/BrigadierCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package pw.kaboom.extras.commands;

import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import io.papermc.paper.command.brigadier.CommandSourceStack;

import java.util.List;

public interface BrigadierCommand {
String getLabel();

String getDescription();

default List<String> getAliases() {
return List.of();
}

void build(final LiteralArgumentBuilder<CommandSourceStack> builder);
}
34 changes: 0 additions & 34 deletions src/main/java/pw/kaboom/extras/commands/CommandBroadcastMM.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package pw.kaboom.extras.commands;

import com.mojang.brigadier.Command;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import io.papermc.paper.command.brigadier.CommandSourceStack;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.Bukkit;

import java.util.List;

import static com.mojang.brigadier.arguments.StringArgumentType.greedyString;
import static io.papermc.paper.command.brigadier.Commands.argument;

public final class CommandBroadcastMiniMessage implements BrigadierCommand {
private static final MiniMessage MINI_MESSAGE = MiniMessage.miniMessage();

@Override
public String getLabel() {
return "broadcastminimessage";
}

@Override
public String getDescription() {
return "Broadcasts a deserialized MiniMessage component";
}

@Override
public List<String> getAliases() {
return List.of("broadcastmm", "bcmm");
}

@Override
public void build(final LiteralArgumentBuilder<CommandSourceStack> builder) {
builder
.requires(src -> src.getSender().hasPermission("extras.broadcastminimessage"))
.then(argument("message", greedyString())
.executes(ctx -> {
final String mm = StringArgumentType.getString(ctx, "message");
final Component component = MINI_MESSAGE.deserialize(mm);
Bukkit.broadcast(component);
return Command.SINGLE_SUCCESS;
})
);
}
}
Original file line number Diff line number Diff line change
@@ -1,35 +1,45 @@
package pw.kaboom.extras.commands;

import com.mojang.brigadier.Command;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import io.papermc.paper.command.brigadier.CommandSourceStack;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jspecify.annotations.NonNull;
import org.checkerframework.checker.units.qual.C;

public final class CommandBroadcastRainbow implements CommandExecutor {
import static com.mojang.brigadier.arguments.StringArgumentType.greedyString;
import static io.papermc.paper.command.brigadier.Commands.argument;

public final class CommandBroadcastRainbow implements BrigadierCommand {
private static final MiniMessage MINI_MESSAGE = MiniMessage.miniMessage();

public boolean onCommand(final @NonNull CommandSender sender,
final @NonNull Command command,
final @NonNull String label,
final String[] args) {
if (args.length == 0) {
sender.sendMessage(Component
.text("Usage: /" + label + " <message ..>",
NamedTextColor.RED));
return true;
}
final String strippedTags = MINI_MESSAGE.stripTags(String.join(" ", args));
final Component component = MINI_MESSAGE.deserialize("<rainbow>" + strippedTags);
@Override
public String getLabel() {
return "broadcastrainbow";
}

for (Player onlinePlayer: Bukkit.getOnlinePlayers()) {
onlinePlayer.sendMessage(component);
}
@Override
public String getDescription() {
return "Broadcasts a rainbow message";
}

return true;
@Override
public void build(final LiteralArgumentBuilder<CommandSourceStack> builder) {
builder
.requires(src ->
src.getSender().hasPermission("extras.broadcastrainbow")
)
.then(argument("message", greedyString())
.executes(ctx -> {
final String mm = StringArgumentType.getString(ctx, "message");
final String strippedTags = MINI_MESSAGE.stripTags(mm);
final Component component = MINI_MESSAGE.deserialize("<rainbow>"
+ strippedTags);
Bukkit.broadcast(component);
return Command.SINGLE_SUCCESS;
})
);
}
}
}
52 changes: 52 additions & 0 deletions src/main/java/pw/kaboom/extras/commands/CommandBroadcastRaw.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package pw.kaboom.extras.commands;

import com.mojang.brigadier.Command;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import io.papermc.paper.command.brigadier.CommandSourceStack;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.bukkit.Bukkit;

import java.util.List;

import static com.mojang.brigadier.arguments.StringArgumentType.greedyString;
import static io.papermc.paper.command.brigadier.Commands.argument;

public final class CommandBroadcastRaw implements BrigadierCommand {
private static final LegacyComponentSerializer SERIALIZER =
LegacyComponentSerializer.legacyAmpersand();


@Override
public String getLabel() {
return "broadcastraw";
}

@Override
public String getDescription() {
return "Broadcasts raw text to the server";
}

@Override
public List<String> getAliases() {
return List.of("bcraw", "tellraw");
}

@Override
public void build(final LiteralArgumentBuilder<CommandSourceStack> builder) {
builder
.requires(src ->
src.getSender().hasPermission("extras.broadcastraw")
)
.then(argument("message", greedyString())
.executes(ctx -> {
Bukkit.broadcast(
SERIALIZER.deserialize(
StringArgumentType.getString(ctx, "message")
)
);
return Command.SINGLE_SUCCESS;
})
);
}
}
Loading