9
0
mirror of https://github.com/LeavesMC/Leaves.git synced 2025-12-29 11:59:17 +00:00

refactor: refactor config and action

This commit is contained in:
MC_XiaoHei
2025-09-23 18:45:52 +08:00
parent dd3af55495
commit 9fefded7e2
8 changed files with 43 additions and 38 deletions

View File

@@ -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<Pair<String, String>> raw) {
public void add(String key, String value) {
raw.add(Pair.of(key, value));
}
}

View File

@@ -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<E extends AbstractBotAction<E>> {
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<E extends AbstractBotAction<E>> {
public void setOnStop(Consumer<E> onStop) {
this.onStop = onStop;
}
public record ActionData(List<Pair<String, String>> raw) {
public void add(String key, String value) {
raw.add(Pair.of(key, value));
}
}
}

View File

@@ -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<E extends AbstractTimerBotAction<E>
}
@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()));

View File

@@ -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<T extends AbstractUseBotAction<T>> 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);

View File

@@ -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<ServerMoveAction> {
}
@Override
public String getActionDataString(@NotNull ActionData data) {
public String getActionDataString(@NotNull ExtraData data) {
data.add("direction", direction.name);
return super.getActionDataString(data);
}

View File

@@ -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<ServerRotationAction
}
@Override
public String getActionDataString(@NotNull ActionData data) {
public String getActionDataString(@NotNull ExtraData data) {
data.add("yaw", DF.format(this.yaw));
data.add("pitch", DF.format(this.pitch));
return super.getActionDataString(data);

View File

@@ -4,21 +4,19 @@ import com.mojang.brigadier.arguments.ArgumentType;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.mojang.brigadier.suggestion.SuggestionsBuilder;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.HoverEvent;
import net.kyori.adventure.text.format.NamedTextColor;
import net.minecraft.nbt.CompoundTag;
import org.apache.commons.lang3.tuple.Pair;
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.command.WrappedArgument;
import java.lang.reflect.Method;
import java.util.List;
import java.util.ArrayList;
import java.util.function.Supplier;
import static net.kyori.adventure.text.Component.text;
import static net.kyori.adventure.text.event.HoverEvent.showText;
import static net.kyori.adventure.text.format.NamedTextColor.AQUA;
public abstract class AbstractBotConfig<Value, Type, E extends AbstractBotConfig<Value, Type, E>> {
private final String name;
private final WrappedArgument<Type> argument;
@@ -54,25 +52,23 @@ public abstract class AbstractBotConfig<Value, Type, E extends AbstractBotConfig
public abstract Value loadFromCommand(@NotNull CommandContext context) throws CommandSyntaxException;
public List<Pair<String, String>> 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<Type> getArgument() {

View File

@@ -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<Boolean, Boolean, SpawnPhantomConfig> {
private boolean value;
@@ -28,8 +26,9 @@ public class SpawnPhantomConfig extends AbstractBotConfig<Boolean, Boolean, Spaw
}
@Override
public List<Pair<String, String>> 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