Skip to content

Commit

Permalink
Add commands for toggle features and set values live.
Browse files Browse the repository at this point in the history
  • Loading branch information
TheMeinerLP committed Jan 30, 2024
1 parent f9d6359 commit 667c403
Show file tree
Hide file tree
Showing 8 changed files with 224 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import net.onelitefeather.antiredstoneclockremastered.api.PlotsquaredSupport;
import net.onelitefeather.antiredstoneclockremastered.api.WorldGuardSupport;
import net.onelitefeather.antiredstoneclockremastered.commands.DisplayActiveClocksCommand;
import net.onelitefeather.antiredstoneclockremastered.commands.FeatureCommand;
import net.onelitefeather.antiredstoneclockremastered.commands.ReloadCommand;
import net.onelitefeather.antiredstoneclockremastered.listener.*;
import net.onelitefeather.antiredstoneclockremastered.plotsquared.v4.PlotSquaredWhatTheHellSupport;
Expand Down Expand Up @@ -103,6 +104,7 @@ private void registerCommands() {
if (this.annotationParser != null) {
this.annotationParser.parse(new ReloadCommand(this));
this.annotationParser.parse(new DisplayActiveClocksCommand(this));
this.annotationParser.parse(new FeatureCommand(this));
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
package net.onelitefeather.antiredstoneclockremastered.commands;

import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TranslationArgument;
import net.onelitefeather.antiredstoneclockremastered.AntiRedstoneClockRemastered;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
import org.incendo.cloud.annotations.Argument;
import org.incendo.cloud.annotations.Command;
import org.incendo.cloud.annotations.CommandDescription;
import org.incendo.cloud.annotations.Permission;

import java.util.List;

@Command("arcm feature")
public final class FeatureCommand {

private final AntiRedstoneClockRemastered plugin;

public FeatureCommand(AntiRedstoneClockRemastered plugin) {
this.plugin = plugin;
}

@Command("check observer")
@CommandDescription("antiredstoneclockremastered.command.feature.check.toggle.observer.description")
@Permission("antiredstoneclockremastered.command.feature.check.observer")
public void toggleObserver(CommandSender sender) {
plugin.getConfig().set("check.observer", !plugin.getConfig().getBoolean("check.observer"));
plugin.saveConfig();
plugin.getRedstoneClockService().reload();
sendMessageToggleMessage(sender, plugin.getConfig().getBoolean("check.observer"));
}

@Command("check piston")
@CommandDescription("antiredstoneclockremastered.command.feature.check.toggle.piston.description")
@Permission("antiredstoneclockremastered.command.feature.check.piston")
public void togglePiston(CommandSender sender) {
plugin.getConfig().set("check.piston", !plugin.getConfig().getBoolean("check.piston"));
plugin.saveConfig();
plugin.getRedstoneClockService().reload();
sendMessageToggleMessage(sender, plugin.getConfig().getBoolean("check.piston"));
}

@Command("check comparator")
@CommandDescription("antiredstoneclockremastered.command.feature.check.toggle.comparator.description")
@Permission("antiredstoneclockremastered.command.feature.check.comparator")
public void toggleComparator(CommandSender sender) {
plugin.getConfig().set("check.comparator", !plugin.getConfig().getBoolean("check.comparator"));
plugin.saveConfig();
plugin.getRedstoneClockService().reload();
sendMessageToggleMessage(sender, plugin.getConfig().getBoolean("check.comparator"));
}

@Command("check sculk")
@CommandDescription("antiredstoneclockremastered.command.feature.check.toggle.sculk.description")
@Permission("antiredstoneclockremastered.command.feature.check.sculk")
public void toggleSculk(CommandSender sender) {
plugin.getConfig().set("check.sculk", !plugin.getConfig().getBoolean("check.sculk"));
plugin.saveConfig();
plugin.getRedstoneClockService().reload();
sendMessageToggleMessage(sender, plugin.getConfig().getBoolean("check.sculk"));
}

@Command("check redstone_and_repeater")
@CommandDescription("antiredstoneclockremastered.command.feature.check.toggle.redstone_and_repeater.description")
@Permission("antiredstoneclockremastered.command.feature.check.redstone_and_repeater")
public void toggleRedstoneAndRepeater(CommandSender sender) {
plugin.getConfig().set("check.redstoneAndRepeater", !plugin.getConfig().getBoolean("check.redstoneAndRepeater"));
plugin.saveConfig();
plugin.getRedstoneClockService().reload();
sendMessageToggleMessage(sender, plugin.getConfig().getBoolean("check.redstoneAndRepeater"));
}

private void sendMessageToggleMessage(CommandSender sender, boolean value) {
if (value) {
sender.sendMessage(Component.translatable("antiredstoneclockremastered.command.feature.check.toggle.enabled").arguments(AntiRedstoneClockRemastered.PREFIX));
} else {
sender.sendMessage(Component.translatable("antiredstoneclockremastered.command.feature.check.toggle.disabled").arguments(AntiRedstoneClockRemastered.PREFIX));
}
}

@Command("check ignored_worlds add <world>")
@CommandDescription("antiredstoneclockremastered.command.feature.check.world.add.description")
@Permission("antiredstoneclockremastered.command.feature.check.world.add")
public void addIgnoredWorld(CommandSender sender, @Argument("world") World world) {
List<String> worlds = plugin.getConfig().getStringList("check.ignoredWorlds");
worlds.add(world.getName());
plugin.getConfig().set("check.ignoredWorlds", worlds);
plugin.saveConfig();
plugin.getRedstoneClockService().reload();
sender.sendMessage(Component.translatable("antiredstoneclockremastered.command.feature.check.world.add").arguments(AntiRedstoneClockRemastered.PREFIX, Component.text(world.getName())));
}

@Command("check ignored_worlds remove <world>")
@CommandDescription("antiredstoneclockremastered.command.feature.check.world.remove.description")
@Permission("antiredstoneclockremastered.command.feature.check.world.remove")
public void removeIgnoredWorld(CommandSender sender, @Argument("world") World world) {
List<String> worlds = plugin.getConfig().getStringList("check.ignoredWorlds");
worlds.remove(world.getName());
plugin.getConfig().set("check.ignoredWorlds", worlds);
plugin.saveConfig();
plugin.getRedstoneClockService().reload();
sender.sendMessage(Component.translatable("antiredstoneclockremastered.command.feature.check.world.remove").arguments(AntiRedstoneClockRemastered.PREFIX, Component.text(world.getName())));
}

@Command("check ignored_regions add <region>")
@CommandDescription("antiredstoneclockremastered.command.feature.check.region.add.description")
@Permission("antiredstoneclockremastered.command.feature.check.region.add")
public void addIgnoredRegion(CommandSender sender, @Argument("region") String region) {
List<String> regions = plugin.getConfig().getStringList("check.ignoredRegions");
regions.add(region);
plugin.getConfig().set("check.ignoredRegions", regions);
plugin.saveConfig();
plugin.getRedstoneClockService().reload();
sender.sendMessage(Component.translatable("antiredstoneclockremastered.command.feature.check.region.add").arguments(AntiRedstoneClockRemastered.PREFIX, Component.text(region)));
}

@Command("check ignored_regions remove <region>")
@CommandDescription("antiredstoneclockremastered.command.feature.check.region.remove.description")
@Permission("antiredstoneclockremastered.command.feature.check.region.remove")
public void removeIgnoredRegion(CommandSender sender, @Argument("region") String region) {
List<String> regions = plugin.getConfig().getStringList("check.ignoredRegions");
regions.remove(region);
plugin.getConfig().set("check.ignoredRegions", regions);
plugin.saveConfig();
plugin.getRedstoneClockService().reload();
sender.sendMessage(Component.translatable("antiredstoneclockremastered.command.feature.check.region.remove").arguments(AntiRedstoneClockRemastered.PREFIX, Component.text(region)));
}

@Command("clock autoBreak")
@CommandDescription("antiredstoneclockremastered.command.feature.clock.toggle.autoBreak.description")
@Permission("antiredstoneclockremastered.command.feature.clock.autoBreak")
public void toggleAutoBreak(CommandSender sender) {
plugin.getConfig().set("clock.autoBreak", !plugin.getConfig().getBoolean("clock.autoBreak"));
plugin.saveConfig();
plugin.getRedstoneClockService().reload();
sendMessageToggleMessage(sender, plugin.getConfig().getBoolean("clock.autoBreak"));
}

@Command("clock notify_admins")
@CommandDescription("antiredstoneclockremastered.command.feature.clock.toggle.notifyAdmins.description")
@Permission("antiredstoneclockremastered.command.feature.clock.notifyAdmins")
public void toggleNotifyAdmins(CommandSender sender) {
plugin.getConfig().set("clock.notifyAdmins", !plugin.getConfig().getBoolean("clock.notifyAdmins"));
plugin.saveConfig();
plugin.getRedstoneClockService().reload();
sendMessageToggleMessage(sender, plugin.getConfig().getBoolean("clock.notifyAdmins"));
}

@Command("clock notify_console")
@CommandDescription("antiredstoneclockremastered.command.feature.clock.toggle.notifyConsole.description")
@Permission("antiredstoneclockremastered.command.feature.clock.notifyConsole")
public void toggleNotifyConsole(CommandSender sender) {
plugin.getConfig().set("clock.notifyConsole", !plugin.getConfig().getBoolean("clock.notifyConsole"));
plugin.saveConfig();
plugin.getRedstoneClockService().reload();
sendMessageToggleMessage(sender, plugin.getConfig().getBoolean("clock.notifyConsole"));
}

@Command("clock drop")
@CommandDescription("antiredstoneclockremastered.command.feature.clock.toggle.drop.description")
@Permission("antiredstoneclockremastered.command.feature.clock.drop")
public void toggleDrop(CommandSender sender) {
plugin.getConfig().set("clock.drop", !plugin.getConfig().getBoolean("clock.drop"));
plugin.saveConfig();
plugin.getRedstoneClockService().reload();
sendMessageToggleMessage(sender, plugin.getConfig().getBoolean("clock.drop"));
}

@Command("clock endDelay <delay>")
@CommandDescription("antiredstoneclockremastered.command.feature.clock.set.delay.description")
@Permission("antiredstoneclockremastered.command.feature.clock.enddelay")
public void setEndDelay(CommandSender sender,@Argument("delay") Integer endDeplay) {
plugin.getConfig().set("clock.endDelay", endDeplay);
plugin.saveConfig();
plugin.getRedstoneClockService().reload();
sendMessageSetMessage(sender, plugin.getConfig().getInt("clock.endDelay"));
}

@Command("clock maxCount <count>")
@CommandDescription("antiredstoneclockremastered.command.feature.clock.set.maxCount.description")
@Permission("antiredstoneclockremastered.command.feature.clock.maxCount")
public void setMaxCount(CommandSender sender,@Argument("count") Integer count) {
plugin.getConfig().set("clock.maxCount", count);
plugin.saveConfig();
plugin.getRedstoneClockService().reload();
sendMessageSetMessage(sender, plugin.getConfig().getInt("clock.maxCount"));
}

private void sendMessageSetMessage(CommandSender sender, Integer value) {
sender.sendMessage(Component.translatable("antiredstoneclockremastered.command.feature.clock.set").arguments(AntiRedstoneClockRemastered.PREFIX, TranslationArgument.numeric(value)));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public ComparatorListener(Material comparatorMaterial, AntiRedstoneClockRemaster
private void onRedstoneComparatorClock(BlockRedstoneEvent blockRedstoneEvent) {

if (!this.antiRedstoneClockRemastered.getTps().isTpsOk()) return;
if (!this.antiRedstoneClockRemastered.getConfig().getBoolean("check.comparator")) return;

var block = blockRedstoneEvent.getBlock();
var type = block.getType();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public ObserverListener(AntiRedstoneClockRemastered antiRedstoneClockRemastered)
private void onRedstoneObserverClock(BlockRedstoneEvent blockRedstoneEvent) {

if (!this.antiRedstoneClockRemastered.getTps().isTpsOk()) return;
if (!this.antiRedstoneClockRemastered.getConfig().getBoolean("check.observer")) return;

var block = blockRedstoneEvent.getBlock();
var type = block.getType();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public PistonListener(AntiRedstoneClockRemastered antiRedstoneClockRemastered) {
private void onPistonExtendEvent(BlockPistonExtendEvent blockPistonExtendEvent) {

if (!this.antiRedstoneClockRemastered.getTps().isTpsOk()) return;
if (!this.antiRedstoneClockRemastered.getConfig().getBoolean("check.piston")) return;

var block = blockPistonExtendEvent.getBlock();

Expand All @@ -29,6 +30,7 @@ private void onPistonExtendEvent(BlockPistonExtendEvent blockPistonExtendEvent)
@EventHandler(priority = EventPriority.LOWEST)
private void onPistonRetractEvent(BlockPistonRetractEvent blockPistonExtendEvent) {
if (!this.antiRedstoneClockRemastered.getTps().isTpsOk()) return;
if (!this.antiRedstoneClockRemastered.getConfig().getBoolean("check.piston")) return;

var block = blockPistonExtendEvent.getBlock();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public RedstoneListener(Material reperaterMaterial, AntiRedstoneClockRemastered
private void onRedstoneClock(BlockRedstoneEvent blockRedstoneEvent) {

if (!this.antiRedstoneClockRemastered.getTps().isTpsOk()) return;
if (!this.antiRedstoneClockRemastered.getConfig().getBoolean("check.redstoneAndRepeater")) return;

var block = blockRedstoneEvent.getBlock();
var type = block.getType();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public SculkListener(AntiRedstoneClockRemastered antiRedstoneClockRemastered) {
@EventHandler(priority = EventPriority.LOWEST)
private void onBlockReceiveGameEvent(BlockReceiveGameEvent event) {
if (!this.antiRedstoneClockRemastered.getTps().isTpsOk()) return;
if (!this.antiRedstoneClockRemastered.getConfig().getBoolean("check.sculk")) return;
var block = event.getBlock();
this.antiRedstoneClockRemastered.getRedstoneClockService().checkAndUpdateClockState(block);
}
Expand Down
22 changes: 22 additions & 0 deletions src/main/resources/antiredstoneclockremasterd_en_US.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,25 @@ antiredstoneclockremastered.command.display.clock.text=<yellow><arg:4>Clock(<arg
antiredstoneclockremastered.command.display.clock.title=<arg:0> <gold>Here are all the clocks in the cache \:
antiredstoneclockremastered.command.display.clock.hover=<green>Click me to teleport
antiredstoneclockremastered.command.display.description=<gray>Shows you all active cached Cocks
antiredstoneclockremastered.command.feature.check.toggle.enabled=<arg:0> <yellow>The function is now: <green>Enabled
antiredstoneclockremastered.command.feature.check.toggle.disabled=<arg:0> <yellow>The function is now: <red>Disabled
antiredstoneclockremastered.command.feature.check.toggle.observer.description=<gray>Turn the detection function of obeservers on or off
antiredstoneclockremastered.command.feature.check.toggle.piston.description=<gray>Turn the detection function of pistons on or off
antiredstoneclockremastered.command.feature.check.toggle.comparator.description=<gray>Turn the detection function of comparators on or off
antiredstoneclockremastered.command.feature.check.toggle.sculk.description=<gray>Turn the detection function of sculks on or off
antiredstoneclockremastered.command.feature.check.toggle.redstone_and_repeater.description=<gray>Turn the detection function of redstone and repeaters on or off
antiredstoneclockremastered.command.feature.check.world.add=<arg:0> <green>The world '<arg:1>' has been added to the ignored worlds list
antiredstoneclockremastered.command.feature.check.world.remove=<arg:0> <red>The world '<arg:1>' has been removed from the ignored worlds list
antiredstoneclockremastered.command.feature.check.world.add.description=<gray>This command adds a world to the ignored worlds list
antiredstoneclockremastered.command.feature.check.world.remove.description=<gray>This command removes a world from the ignored worlds list
antiredstoneclockremastered.command.feature.check.region.add=<arg:0> <green>The region '<arg:1>' has been added to the ignored regions list
antiredstoneclockremastered.command.feature.check.region.remove=<arg:0> <red>The region '<arg:1>' has been removed from the ignored regions list
antiredstoneclockremastered.command.feature.check.region.add.description=<gray>This command adds a region to the ignored regions list
antiredstoneclockremastered.command.feature.check.region.remove.description=<gray>This command removes a region from the ignored regions list
antiredstoneclockremastered.command.feature.clock.set=<arg:0> <green>The value of this function is now: <arg:1>
antiredstoneclockremastered.command.feature.clock.toggle.autoBreak.description=<gray>Turn the function of auto break on or off
antiredstoneclockremastered.command.feature.clock.toggle.notifyAdmins.description=<gray>Turn the function of admin notifications on or off
antiredstoneclockremastered.command.feature.clock.toggle.notifyConsole.description=<gray>Turn the function of console notifications on or off
antiredstoneclockremastered.command.feature.clock.toggle.drop.description=<gray>Turn the function of drop items on or off
antiredstoneclockremastered.command.feature.clock.set.delay.description=<gray>Sets the desired value for the function
antiredstoneclockremastered.command.feature.clock.set.maxCount.description=<gray>Sets the desired value for the function

0 comments on commit 667c403

Please sign in to comment.