From d6028ab37512dbe54e4e1638e18ee5f1d6bb809d Mon Sep 17 00:00:00 2001 From: xypp <2952795729@qq.com> Date: Fri, 2 May 2025 01:18:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- .../fantasyit/maid_useful_task/Config.java | 8 +++++ .../menu/MaidReviveConfigGui.java | 2 +- .../network/MaidAllowHandleVehicle.java | 5 +++ .../maid_useful_task/task/MaidLocateTask.java | 36 +++++++++++++++++++ .../assets/maid_useful_task/lang/en_us.json | 6 ++-- .../assets/maid_useful_task/lang/zh_cn.json | 8 ++--- 7 files changed, 58 insertions(+), 9 deletions(-) diff --git a/gradle.properties b/gradle.properties index 588f5db..58b9a50 100644 --- a/gradle.properties +++ b/gradle.properties @@ -38,7 +38,7 @@ mod_name=maid useful task # The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default. mod_license=MIT # The mod version. See https://semver.org/ -mod_version=1.3.0 +mod_version=1.3.1 # The group ID for the mod. It is only important when publishing as an artifact to a Maven repository. # This should match the base package used for the mod sources. # See https://maven.apache.org/guides/mini/guide-naming-conventions.html diff --git a/src/main/java/studio/fantasyit/maid_useful_task/Config.java b/src/main/java/studio/fantasyit/maid_useful_task/Config.java index 06cc4b4..c298b62 100644 --- a/src/main/java/studio/fantasyit/maid_useful_task/Config.java +++ b/src/main/java/studio/fantasyit/maid_useful_task/Config.java @@ -25,6 +25,10 @@ public class Config { private static final ForgeConfigSpec.BooleanValue ENABLE_REVIVE_TOTEM = BUILDER .define("revive.totem", true); + private static final ForgeConfigSpec.BooleanValue ENABLE_VEHICLE_CONTROL_FULL = BUILDER + .define("vehicle_control.full", true); + private static final ForgeConfigSpec.BooleanValue ENABLE_VEHICLE_CONTROL_ROTATE = BUILDER + .define("vehicle_control.rotate", true); static final ForgeConfigSpec SPEC = BUILDER.build(); @@ -35,6 +39,8 @@ public class Config { public static boolean enableReviveAggro = false; public static boolean enableReviveTotem = false; + public static boolean enableVehicleControlFull = false; + public static boolean enableVehicleControlRotate = false; @SubscribeEvent static void onLoad(final ModConfigEvent event) { enableLoggingTask = ENABLE_LOGGING.get(); @@ -42,5 +48,7 @@ public class Config { enableLocateTask = ENABLE_LOCATE.get(); enableReviveAggro = ENABLE_REVIVE_AGGRO.get(); enableReviveTotem = ENABLE_REVIVE_TOTEM.get(); + enableVehicleControlFull = ENABLE_VEHICLE_CONTROL_FULL.get(); + enableVehicleControlRotate = ENABLE_VEHICLE_CONTROL_ROTATE.get(); } } diff --git a/src/main/java/studio/fantasyit/maid_useful_task/menu/MaidReviveConfigGui.java b/src/main/java/studio/fantasyit/maid_useful_task/menu/MaidReviveConfigGui.java index 40b1f87..7c97a46 100644 --- a/src/main/java/studio/fantasyit/maid_useful_task/menu/MaidReviveConfigGui.java +++ b/src/main/java/studio/fantasyit/maid_useful_task/menu/MaidReviveConfigGui.java @@ -20,7 +20,7 @@ public class MaidReviveConfigGui extends MaidTaskConfigGui Component.translatable("maid_useful_task.allow_handle_vehicle.none"); diff --git a/src/main/java/studio/fantasyit/maid_useful_task/task/MaidLocateTask.java b/src/main/java/studio/fantasyit/maid_useful_task/task/MaidLocateTask.java index 2cc9420..2135cc2 100644 --- a/src/main/java/studio/fantasyit/maid_useful_task/task/MaidLocateTask.java +++ b/src/main/java/studio/fantasyit/maid_useful_task/task/MaidLocateTask.java @@ -4,6 +4,8 @@ import com.github.tartaricacid.touhoulittlemaid.api.task.IMaidTask; import com.github.tartaricacid.touhoulittlemaid.entity.passive.EntityMaid; import com.mojang.datafixers.util.Pair; import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvent; @@ -12,6 +14,9 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.behavior.BehaviorControl; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; +import net.minecraft.world.item.MapItem; +import net.minecraft.world.level.saveddata.maps.MapDecoration; +import net.minecraft.world.level.saveddata.maps.MapItemSavedData; import org.jetbrains.annotations.Nullable; import studio.fantasyit.maid_useful_task.Config; import studio.fantasyit.maid_useful_task.MaidUsefulTask; @@ -53,10 +58,12 @@ public class MaidLocateTask implements IMaidTask, IMaidFindTargetTask { public boolean enableLookAndRandomWalk(EntityMaid maid) { return false; } + @Override public boolean isEnable(EntityMaid maid) { return Config.enableLocateTask; } + @Override public @Nullable BlockPos findTarget(ServerLevel level, EntityMaid maid) { BlockPos target = null; @@ -83,6 +90,35 @@ public class MaidLocateTask implements IMaidTask, IMaidFindTargetTask { target = owner.getSleepingPos().orElse(maid.level().getSharedSpawnPos()); } } + } else if (maid.getMainHandItem().is(Items.FILLED_MAP)) { + target = MemoryUtil.getCommonBlockCache(maid); + if (target == null) { + MapItemSavedData savedData = MapItem.getSavedData(itemStack, maid.level()); + if (savedData != null) { + BlockPos.MutableBlockPos tmpTarget = new BlockPos.MutableBlockPos(savedData.centerX, level.getSeaLevel(), savedData.centerZ); + + CompoundTag tag = itemStack.getOrCreateTag(); + savedData.getBanners() + .stream() + .findFirst() + .ifPresent(t -> { + tmpTarget.set(t.getPos().immutable()); + }); + tag.getList("Decorations", Tag.TAG_COMPOUND) + .stream() + .filter(t -> ((CompoundTag) t).getByte("type") == 26) + .findFirst() + .ifPresent(t -> { + CompoundTag decoration = (CompoundTag) t; + tmpTarget.setX(decoration.getInt("x")); + tmpTarget.setZ(decoration.getInt("z")); + }); + + + target = tmpTarget.immutable(); + MemoryUtil.setCommonBlockCache(maid, target); + } + } } else { MemoryUtil.clearCommonBlockCache(maid); } diff --git a/src/main/resources/assets/maid_useful_task/lang/en_us.json b/src/main/resources/assets/maid_useful_task/lang/en_us.json index 9eb8630..c5e6b10 100644 --- a/src/main/resources/assets/maid_useful_task/lang/en_us.json +++ b/src/main/resources/assets/maid_useful_task/lang/en_us.json @@ -1,10 +1,10 @@ { "task.maid_useful_task.maid_tree": "Logging", - "task.maid_useful_task.maid_tree.description": "The maid will cut down the logs around her and plant saplings.", + "task.maid_useful_task.maid_tree.desc": "The maid will cut down the logs around her and plant saplings.", "task.maid_useful_task.locate": "Locate", - "task.maid_useful_task.locate.description": "The maid can locate the some structure or your home with specific items.", + "task.maid_useful_task.locate.desc": "The maid can locate the some structure or your home with specific items.", "task.maid_useful_task.revive_player": "Revive Player", - "task.maid_useful_task.revive_player.description": "The maid will revive nearby bleeding player.", + "task.maid_useful_task.revive_player.desc": "The maid will revive nearby bleeding player.", "key.maid_useful_tasks.switch_vehicle_control": "Switch Vehicle Control Mode", "maid_useful_task.allow_handle_vehicle.none": "Not allowing maid control vehicle", "maid_useful_task.allow_handle_vehicle.rot_only": "Allow maid control rotation only", diff --git a/src/main/resources/assets/maid_useful_task/lang/zh_cn.json b/src/main/resources/assets/maid_useful_task/lang/zh_cn.json index 9e8a059..fcd3a5d 100644 --- a/src/main/resources/assets/maid_useful_task/lang/zh_cn.json +++ b/src/main/resources/assets/maid_useful_task/lang/zh_cn.json @@ -1,7 +1,7 @@ { "gui.maid_useful_task.logging.plant": "种植树苗", "gui.maid_useful_task.no": "否", - "gui.maid_useful_task.revive.ownerOnly": "Only revive owner", + "gui.maid_useful_task.revive.ownerOnly": "只救援主人", "gui.maid_useful_task.yes": "是", "key.maid_useful_tasks.categories.main": "女仆实用任务", "key.maid_useful_tasks.switch_vehicle_control": "切换载具控制模式", @@ -9,9 +9,9 @@ "maid_useful_task.allow_handle_vehicle.none": "不允许女仆控制载具", "maid_useful_task.allow_handle_vehicle.rot_only": "只允许女仆控制旋转", "task.maid_useful_task.locate": "定位", - "task.maid_useful_task.locate.description": "女仆会根据手持物品定位指定的结构或你的出生点", + "task.maid_useful_task.locate.desc": "女仆会根据手持物品定位指定的结构或你的出生点", "task.maid_useful_task.maid_tree": "伐木", - "task.maid_useful_task.maid_tree.description": "女仆会砍伐身边的原木并种下树苗", + "task.maid_useful_task.maid_tree.desc": "女仆会砍伐身边的原木并种下树苗", "task.maid_useful_task.revive_player": "救援玩家", - "task.maid_useful_task.revive_player.description": "女仆会救援附近倒地的玩家" + "task.maid_useful_task.revive_player.desc": "女仆会救援附近倒地的玩家" } \ No newline at end of file