From 9fefded7e254e7b8cf71b943ae2dee4846f0330c Mon Sep 17 00:00:00 2001 From: MC_XiaoHei Date: Tue, 23 Sep 2025 18:45:52 +0800 Subject: [PATCH] refactor: refactor config and action --- .../leavesmc/leaves/bot/agent/ExtraData.java | 11 ++++++ .../bot/agent/actions/AbstractBotAction.java | 13 +++---- .../agent/actions/AbstractTimerBotAction.java | 3 +- .../agent/actions/AbstractUseBotAction.java | 3 +- .../bot/agent/actions/ServerMoveAction.java | 3 +- .../agent/actions/ServerRotationAction.java | 3 +- .../bot/agent/configs/AbstractBotConfig.java | 36 +++++++++---------- .../bot/agent/configs/SpawnPhantomConfig.java | 9 +++-- 8 files changed, 43 insertions(+), 38 deletions(-) create mode 100644 leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/ExtraData.java diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/ExtraData.java b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/ExtraData.java new file mode 100644 index 00000000..46c852ab --- /dev/null +++ b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/ExtraData.java @@ -0,0 +1,11 @@ +package org.leavesmc.leaves.bot.agent; + +import org.apache.commons.lang3.tuple.Pair; + +import java.util.List; + +public record ExtraData(List> raw) { + public void add(String key, String value) { + raw.add(Pair.of(key, value)); + } +} diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractBotAction.java b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractBotAction.java index af98d6e4..b59b0be5 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractBotAction.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractBotAction.java @@ -8,6 +8,7 @@ import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.NotNull; import org.leavesmc.leaves.LeavesLogger; import org.leavesmc.leaves.bot.ServerBot; +import org.leavesmc.leaves.bot.agent.ExtraData; import org.leavesmc.leaves.command.CommandContext; import org.leavesmc.leaves.command.WrappedArgument; import org.leavesmc.leaves.event.bot.BotActionExecuteEvent; @@ -60,11 +61,11 @@ public abstract class AbstractBotAction> { public abstract Object asCraft(); public String getActionDataString() { - return getActionDataString(new ActionData(new ArrayList<>())); + return getActionDataString(new ExtraData(new ArrayList<>())); } - public String getActionDataString(@NotNull ActionData data) { - return data.raw.stream() + public String getActionDataString(@NotNull ExtraData data) { + return data.raw().stream() .map(pair -> pair.getLeft() + "=" + pair.getRight()) .reduce((a, b) -> a + ", " + b) .orElse("No arguments"); @@ -247,10 +248,4 @@ public abstract class AbstractBotAction> { public void setOnStop(Consumer onStop) { this.onStop = onStop; } - - public record ActionData(List> raw) { - public void add(String key, String value) { - raw.add(Pair.of(key, value)); - } - } } diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractTimerBotAction.java b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractTimerBotAction.java index 632a08bf..817b5ec0 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractTimerBotAction.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractTimerBotAction.java @@ -2,6 +2,7 @@ package org.leavesmc.leaves.bot.agent.actions; import net.minecraft.network.chat.Component; import org.jetbrains.annotations.NotNull; +import org.leavesmc.leaves.bot.agent.ExtraData; import org.leavesmc.leaves.command.CommandContext; import java.util.function.Supplier; @@ -28,7 +29,7 @@ public abstract class AbstractTimerBotAction } @Override - public String getActionDataString(@NotNull ActionData data) { + public String getActionDataString(@NotNull ExtraData data) { data.add("delay", String.valueOf(this.getStartDelayTick())); data.add("interval", String.valueOf(this.getDoIntervalTick())); data.add("do_number", String.valueOf(this.getDoNumber())); diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractUseBotAction.java b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractUseBotAction.java index 787cec99..2d2fa41b 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractUseBotAction.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractUseBotAction.java @@ -5,6 +5,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionResult; import org.jetbrains.annotations.NotNull; import org.leavesmc.leaves.bot.ServerBot; +import org.leavesmc.leaves.bot.agent.ExtraData; import org.leavesmc.leaves.command.CommandContext; import org.leavesmc.leaves.event.bot.BotActionStopEvent; @@ -98,7 +99,7 @@ public abstract class AbstractUseBotAction> ex } @Override - public String getActionDataString(@NotNull ActionData data) { + public String getActionDataString(@NotNull ExtraData data) { data.add("use_timeout", String.valueOf(this.useTickTimeout)); data.add("already_used_tick", String.valueOf(this.alreadyUsedTick)); return super.getActionDataString(data); diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerMoveAction.java b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerMoveAction.java index d7de3f57..8da91cff 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerMoveAction.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerMoveAction.java @@ -4,6 +4,7 @@ import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.exceptions.CommandSyntaxException; import org.jetbrains.annotations.NotNull; import org.leavesmc.leaves.bot.ServerBot; +import org.leavesmc.leaves.bot.agent.ExtraData; import org.leavesmc.leaves.command.CommandContext; import org.leavesmc.leaves.entity.bot.action.MoveAction.MoveDirection; import org.leavesmc.leaves.entity.bot.actions.CraftMoveAction; @@ -61,7 +62,7 @@ public class ServerMoveAction extends AbstractStateBotAction { } @Override - public String getActionDataString(@NotNull ActionData data) { + public String getActionDataString(@NotNull ExtraData data) { data.add("direction", direction.name); return super.getActionDataString(data); } diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerRotationAction.java b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerRotationAction.java index 55af45a1..04dc0d6f 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerRotationAction.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerRotationAction.java @@ -6,6 +6,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import org.jetbrains.annotations.NotNull; import org.leavesmc.leaves.bot.ServerBot; +import org.leavesmc.leaves.bot.agent.ExtraData; import org.leavesmc.leaves.command.CommandContext; import org.leavesmc.leaves.entity.bot.actions.CraftRotationAction; @@ -57,7 +58,7 @@ public class ServerRotationAction extends AbstractBotAction> { private final String name; private final WrappedArgument argument; @@ -54,25 +52,23 @@ public abstract class AbstractBotConfig> getExtraData() { - return List.of(); - } - public String getName() { return name; } public Component getNameComponent() { - Component result = text(getName(), AQUA); - if (!getExtraData().isEmpty()) { - result = result.hoverEvent(showText( - getExtraData().stream() - .map(pair -> text(pair.getKey() + "=" + pair.getValue())) - .reduce((a, b) -> a.append(text(", ")).append(b)) - .orElseGet(() -> text("")) - )); - } - return result; + return Component.text(getName(), NamedTextColor.AQUA).hoverEvent(HoverEvent.showText(Component.text(getExtraDataString()))); + } + + public String getExtraDataString() { + return getExtraDataString(new ExtraData(new ArrayList<>())); + } + + public String getExtraDataString(@NotNull ExtraData data) { + return data.raw().stream() + .map(pair -> pair.getLeft() + "=" + pair.getRight()) + .reduce((a, b) -> a + ", " + b) + .orElse("No data"); } public WrappedArgument getArgument() { diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/configs/SpawnPhantomConfig.java b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/configs/SpawnPhantomConfig.java index 25ec048f..49257361 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/configs/SpawnPhantomConfig.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/configs/SpawnPhantomConfig.java @@ -2,13 +2,11 @@ package org.leavesmc.leaves.bot.agent.configs; import com.mojang.brigadier.arguments.BoolArgumentType; import net.minecraft.nbt.CompoundTag; -import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.NotNull; import org.leavesmc.leaves.LeavesConfig; +import org.leavesmc.leaves.bot.agent.ExtraData; import org.leavesmc.leaves.command.CommandContext; -import java.util.List; - public class SpawnPhantomConfig extends AbstractBotConfig { private boolean value; @@ -28,8 +26,9 @@ public class SpawnPhantomConfig extends AbstractBotConfig> getExtraData() { - return List.of(Pair.of("not_sleeping_ticks", String.valueOf(bot.notSleepTicks))); + public String getExtraDataString(@NotNull ExtraData data) { + data.add("not_sleeping_ticks", String.valueOf(bot.notSleepTicks)); + return super.getExtraDataString(data); } @Override