添加了新的API

This commit is contained in:
xypp
2025-09-15 00:51:23 +08:00
parent b269b12ea2
commit 99f5a85404
2 changed files with 35 additions and 1 deletions

View File

@@ -0,0 +1,29 @@
package studio.fantasyit.maid_useful_task.api;
import com.github.tartaricacid.touhoulittlemaid.entity.passive.EntityMaid;
import net.minecraft.core.BlockPos;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.eventbus.api.Cancelable;
import net.minecraftforge.eventbus.api.Event;
@Cancelable
public class ItemLocateEvent extends Event {
public final ItemStack itemStack;
public final EntityMaid maid;
public final BlockPos cache;
public BlockPos target = null;
public ItemLocateEvent(ItemStack itemStack, EntityMaid maid, BlockPos cache) {
this.itemStack = itemStack;
this.maid = maid;
this.cache = cache;
}
public BlockPos getTarget() {
return target;
}
public void setTarget(BlockPos target) {
this.target = target;
}
}

View File

@@ -22,9 +22,11 @@ import net.minecraft.world.item.component.LodestoneTracker;
import net.minecraft.world.item.component.MapDecorations;
import net.minecraft.world.level.saveddata.maps.MapDecorationTypes;
import net.minecraft.world.level.saveddata.maps.MapItemSavedData;
import net.minecraftforge.common.MinecraftForge;
import org.jetbrains.annotations.Nullable;
import studio.fantasyit.maid_useful_task.Config;
import studio.fantasyit.maid_useful_task.MaidUsefulTask;
import studio.fantasyit.maid_useful_task.api.ItemLocateEvent;
import studio.fantasyit.maid_useful_task.behavior.common.FindTargetMoveBehavior;
import studio.fantasyit.maid_useful_task.behavior.common.FindTargetWaitBehavior;
import studio.fantasyit.maid_useful_task.compat.CompatEntry;
@@ -79,7 +81,10 @@ public class MaidLocateTask implements IMaidTask, IMaidFindTargetTask {
MemoryUtil.setLocateItem(maid, itemStack);
MemoryUtil.clearCommonBlockCache(maid);
}
if (maid.getMainHandItem().is(Items.ENDER_EYE)) {
ItemLocateEvent event = new ItemLocateEvent(itemStack, maid, MemoryUtil.getCommonBlockCache(maid));
if (MinecraftForge.EVENT_BUS.post(event)) {
target = event.getTarget();
} else if (maid.getMainHandItem().is(Items.ENDER_EYE)) {
target = MemoryUtil.getCommonBlockCache(maid);
if (target == null) {
BlockPos blockpos = level.findNearestMapStructure(StructureTags.EYE_OF_ENDER_LOCATED, maid.blockPosition(), 100, false);