diff --git a/patches/api/0003-Add-fakeplayer-api.patch b/patches/api/0003-Add-fakeplayer-api.patch index b9d40cab..a843538e 100644 --- a/patches/api/0003-Add-fakeplayer-api.patch +++ b/patches/api/0003-Add-fakeplayer-api.patch @@ -308,10 +308,10 @@ index 0000000000000000000000000000000000000000..0b1648013d5f03d064c0719c23198108 +} diff --git a/src/main/java/org/leavesmc/leaves/entity/botaction/LeavesBotAction.java b/src/main/java/org/leavesmc/leaves/entity/botaction/LeavesBotAction.java new file mode 100644 -index 0000000000000000000000000000000000000000..28e66099463d83e0c09d0ad61d8456e2245c431b +index 0000000000000000000000000000000000000000..a6fdf8c77318172621494af94a0efb2bd34ca651 --- /dev/null +++ b/src/main/java/org/leavesmc/leaves/entity/botaction/LeavesBotAction.java -@@ -0,0 +1,38 @@ +@@ -0,0 +1,36 @@ +package org.leavesmc.leaves.entity.botaction; + +/** @@ -336,9 +336,7 @@ index 0000000000000000000000000000000000000000..28e66099463d83e0c09d0ad61d8456e2 + USE_TO("use_to"), + USE_OFFHAND("use_offhand"), + USE_ON_OFFHAND("use_on_offhand"), -+ USE_TO_OFFHAND("use_to_offhand"), -+ CONSUME("consume"), -+ CONSUME_OFFHAND("consume_offhand"); ++ USE_TO_OFFHAND("use_to_offhand"); + + private final String name; + diff --git a/patches/server/0010-Fakeplayer-support.patch b/patches/server/0010-Fakeplayer-support.patch index eda26dbd..6aabba9a 100644 --- a/patches/server/0010-Fakeplayer-support.patch +++ b/patches/server/0010-Fakeplayer-support.patch @@ -2487,10 +2487,10 @@ index 0000000000000000000000000000000000000000..d626ac47af400d01993c358fa5a93671 +} diff --git a/src/main/java/org/leavesmc/leaves/bot/agent/Actions.java b/src/main/java/org/leavesmc/leaves/bot/agent/Actions.java new file mode 100644 -index 0000000000000000000000000000000000000000..f24e403a7398fa8fcd978073286f9fc54aae0427 +index 0000000000000000000000000000000000000000..15cbf363f587a27d55f4bc7ec897787158a7d534 --- /dev/null +++ b/src/main/java/org/leavesmc/leaves/bot/agent/Actions.java -@@ -0,0 +1,68 @@ +@@ -0,0 +1,66 @@ +package org.leavesmc.leaves.bot.agent; + +import org.jetbrains.annotations.Contract; @@ -2524,8 +2524,6 @@ index 0000000000000000000000000000000000000000..f24e403a7398fa8fcd978073286f9fc5 + register(new UseItemOnOffhandAction()); + register(new UseItemToOffhandAction()); + register(new RotationAction()); -+ register(new ConsumeAction()); -+ register(new ConsumeOffhandAction()); + } + + public static boolean register(@NotNull BotAction action) { @@ -2811,124 +2809,6 @@ index 0000000000000000000000000000000000000000..adcce8f8c39b0a1e445f5552ce744360 + return f; + } +} -diff --git a/src/main/java/org/leavesmc/leaves/bot/agent/actions/ConsumeAction.java b/src/main/java/org/leavesmc/leaves/bot/agent/actions/ConsumeAction.java -new file mode 100644 -index 0000000000000000000000000000000000000000..7abc21ef62b84bf6e51ab4381555f29ef54c45b4 ---- /dev/null -+++ b/src/main/java/org/leavesmc/leaves/bot/agent/actions/ConsumeAction.java -@@ -0,0 +1,53 @@ -+package org.leavesmc.leaves.bot.agent.actions; -+ -+import net.minecraft.core.component.DataComponents; -+import net.minecraft.server.level.ServerPlayer; -+import net.minecraft.world.InteractionHand; -+import net.minecraft.world.item.ItemStack; -+import org.bukkit.Bukkit; -+import org.bukkit.craftbukkit.scheduler.CraftScheduler; -+import org.jetbrains.annotations.NotNull; -+import org.leavesmc.leaves.bot.ServerBot; -+import org.leavesmc.leaves.bot.agent.BotAction; -+import org.leavesmc.leaves.command.CommandArgument; -+import org.leavesmc.leaves.command.CommandArgumentResult; -+import org.leavesmc.leaves.command.CommandArgumentType; -+ -+import java.util.List; -+import java.util.concurrent.atomic.AtomicInteger; -+ -+public class ConsumeAction extends BotAction { -+ -+ public ConsumeAction() { -+ super("consume", new CommandArgument(CommandArgumentType.INTEGER, CommandArgumentType.INTEGER)); -+ setTabComplete(0, List.of("[TickDelay]")); -+ setTabComplete(1, List.of("[DoNumber]")); -+ } -+ -+ @Override -+ public BotAction getNew(@NotNull ServerPlayer player, @NotNull CommandArgumentResult result) { -+ return new ConsumeAction().setTickDelay(result.readInt(20)).setNumber(result.readInt(-1)); -+ } -+ -+ @Override -+ public boolean doTick(@NotNull ServerBot bot) { -+ ItemStack itemStack = bot.getItemInHand(InteractionHand.MAIN_HAND); -+ if (itemStack.get(DataComponents.FOOD) == null && itemStack.get(DataComponents.POTION_CONTENTS) == null) { -+ return false; -+ } -+ if (bot.getEatStartTime() > 0) { -+ return false; -+ } -+ int consumeTick = itemStack.getUseDuration(bot); -+ bot.startUsingItem(InteractionHand.MAIN_HAND); -+ AtomicInteger count = new AtomicInteger(0); -+ Bukkit.getScheduler().runTaskTimer(CraftScheduler.MINECRAFT, task -> { -+ if (count.getAndIncrement() > consumeTick) { -+ bot.completeUsingItem(); -+ task.cancel(); -+ } -+ bot.updateItemInHand(InteractionHand.MAIN_HAND); -+ }, 0, 1); -+ return true; -+ } -+} -diff --git a/src/main/java/org/leavesmc/leaves/bot/agent/actions/ConsumeOffhandAction.java b/src/main/java/org/leavesmc/leaves/bot/agent/actions/ConsumeOffhandAction.java -new file mode 100644 -index 0000000000000000000000000000000000000000..18f8032056a59b9e4d144e5ff5c3aa1fdf2fec05 ---- /dev/null -+++ b/src/main/java/org/leavesmc/leaves/bot/agent/actions/ConsumeOffhandAction.java -@@ -0,0 +1,53 @@ -+package org.leavesmc.leaves.bot.agent.actions; -+ -+import net.minecraft.core.component.DataComponents; -+import net.minecraft.server.level.ServerPlayer; -+import net.minecraft.world.InteractionHand; -+import net.minecraft.world.item.ItemStack; -+import org.bukkit.Bukkit; -+import org.bukkit.craftbukkit.scheduler.CraftScheduler; -+import org.jetbrains.annotations.NotNull; -+import org.leavesmc.leaves.bot.ServerBot; -+import org.leavesmc.leaves.bot.agent.BotAction; -+import org.leavesmc.leaves.command.CommandArgument; -+import org.leavesmc.leaves.command.CommandArgumentResult; -+import org.leavesmc.leaves.command.CommandArgumentType; -+ -+import java.util.List; -+import java.util.concurrent.atomic.AtomicInteger; -+ -+public class ConsumeOffhandAction extends BotAction { -+ -+ public ConsumeOffhandAction() { -+ super("consume_offhand", new CommandArgument(CommandArgumentType.INTEGER, CommandArgumentType.INTEGER)); -+ setTabComplete(0, List.of("[TickDelay]")); -+ setTabComplete(1, List.of("[DoNumber]")); -+ } -+ -+ @Override -+ public BotAction getNew(@NotNull ServerPlayer player, @NotNull CommandArgumentResult result) { -+ return new ConsumeOffhandAction().setTickDelay(result.readInt(20)).setNumber(result.readInt(-1)); -+ } -+ -+ @Override -+ public boolean doTick(@NotNull ServerBot bot) { -+ ItemStack itemStack = bot.getItemInHand(InteractionHand.OFF_HAND); -+ if (itemStack.get(DataComponents.FOOD) == null && itemStack.get(DataComponents.POTION_CONTENTS) == null) { -+ return false; -+ } -+ if (bot.getEatStartTime() > 0) { -+ return false; -+ } -+ int consumeTick = itemStack.getUseDuration(bot); -+ bot.startUsingItem(InteractionHand.OFF_HAND); -+ AtomicInteger count = new AtomicInteger(0); -+ Bukkit.getScheduler().runTaskTimer(CraftScheduler.MINECRAFT, task -> { -+ if (count.getAndIncrement() > consumeTick) { -+ bot.completeUsingItem(); -+ task.cancel(); -+ } -+ bot.updateItemInHand(InteractionHand.OFF_HAND); -+ }, 0, 1); -+ return true; -+ } -+} diff --git a/src/main/java/org/leavesmc/leaves/bot/agent/actions/CraftCustomBotAction.java b/src/main/java/org/leavesmc/leaves/bot/agent/actions/CraftCustomBotAction.java new file mode 100644 index 0000000000000000000000000000000000000000..f9b48f38a9b530125849f30eeab497895da77a21