diff --git a/gradle.properties b/gradle.properties index b005df4..ddd0f95 100644 --- a/gradle.properties +++ b/gradle.properties @@ -59,7 +59,7 @@ mod_name=Super Lead Rope # The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default. mod_license=GPLv3 # The mod version. See https://semver.org/ -mod_version=0.0.0.4 +mod_version=0.0.0.5 # 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/top/r3944realms/superleadrope/CommonEventHandler.java b/src/main/java/top/r3944realms/superleadrope/CommonEventHandler.java index 43fad92..b540d2b 100644 --- a/src/main/java/top/r3944realms/superleadrope/CommonEventHandler.java +++ b/src/main/java/top/r3944realms/superleadrope/CommonEventHandler.java @@ -53,6 +53,8 @@ import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import org.jetbrains.annotations.NotNull; import top.r3944realms.superleadrope.api.SuperLeadRopeApi; import top.r3944realms.superleadrope.api.event.SuperLeadRopeEvent; +import top.r3944realms.superleadrope.api.type.capabilty.ILeashData; +import top.r3944realms.superleadrope.api.type.capabilty.ILeashState; import top.r3944realms.superleadrope.api.type.capabilty.LeashInfo; import top.r3944realms.superleadrope.config.LeashCommonConfig; import top.r3944realms.superleadrope.config.LeashConfigManager; @@ -60,8 +62,6 @@ import top.r3944realms.superleadrope.content.capability.CapabilityHandler; import top.r3944realms.superleadrope.content.capability.CapabilityRemainder; import top.r3944realms.superleadrope.content.capability.impi.LeashDataImpl; import top.r3944realms.superleadrope.content.capability.inter.IEternalPotato; -import top.r3944realms.superleadrope.api.type.capabilty.ILeashData; -import top.r3944realms.superleadrope.api.type.capabilty.ILeashState; import top.r3944realms.superleadrope.content.command.MotionCommand; import top.r3944realms.superleadrope.content.entity.SuperLeashKnotEntity; import top.r3944realms.superleadrope.content.gamerule.server.TeleportWithLeashedEntities; diff --git a/src/main/java/top/r3944realms/superleadrope/api/SuperLeadRopeApi.java b/src/main/java/top/r3944realms/superleadrope/api/SuperLeadRopeApi.java index 42bbd3e..0c8d18b 100644 --- a/src/main/java/top/r3944realms/superleadrope/api/SuperLeadRopeApi.java +++ b/src/main/java/top/r3944realms/superleadrope/api/SuperLeadRopeApi.java @@ -24,8 +24,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import top.r3944realms.superleadrope.api.type.util.ILeashHelper; import top.r3944realms.superleadrope.api.workspace.Services; -import top.r3944realms.superleadrope.content.entity.SuperLeashKnotEntity; -import top.r3944realms.superleadrope.util.capability.LeashDataInnerAPI; import java.util.List; import java.util.UUID; @@ -64,19 +62,19 @@ public class SuperLeadRopeApi { } public static boolean isLeashHolder(@NotNull Entity pEntity, Entity pTestHolder) { - return pTestHolder instanceof SuperLeashKnotEntity superLeashKnotEntity ? - isLeashHolder(pEntity, superLeashKnotEntity.getPos()) : + return Services.WORK_SPACE.isSuperLeadKnot(pTestHolder) ? + isLeashHolder(pEntity, Services.WORK_SPACE.getSuperLeadPos(pTestHolder)) : isLeashHolder(pEntity, pTestHolder.getUUID()); } public static boolean isLeashHolder(@NotNull Entity pEntity, UUID pHolderUUID) { - return LeashDataInnerAPI.getLeashData(pEntity) + return Services.WORK_SPACE.getLeashData(pEntity) .map(leashData -> leashData.isLeashedBy(pHolderUUID)) .orElse(false); } public static boolean isLeashHolder(@NotNull Entity pEntity, BlockPos pKnotPos) { - return LeashDataInnerAPI.getLeashData(pEntity) + return Services.WORK_SPACE.getLeashData(pEntity) .map(leashData -> leashData.isLeashedBy(pKnotPos)) .orElse(false); } diff --git a/src/main/java/top/r3944realms/superleadrope/api/event/SuperLeadRopeEvent.java b/src/main/java/top/r3944realms/superleadrope/api/event/SuperLeadRopeEvent.java index 30ea34b..53a26a7 100644 --- a/src/main/java/top/r3944realms/superleadrope/api/event/SuperLeadRopeEvent.java +++ b/src/main/java/top/r3944realms/superleadrope/api/event/SuperLeadRopeEvent.java @@ -25,7 +25,6 @@ import net.minecraftforge.fml.event.IModBusEvent; import org.jetbrains.annotations.Nullable; import top.r3944realms.superleadrope.api.type.capabilty.LeashHolder; import top.r3944realms.superleadrope.api.type.capabilty.LeashInfo; -import top.r3944realms.superleadrope.util.capability.LeashDataInnerAPI; import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/top/r3944realms/superleadrope/api/type/capabilty/ILeashData.java b/src/main/java/top/r3944realms/superleadrope/api/type/capabilty/ILeashData.java index 8729fd7..78fc785 100644 --- a/src/main/java/top/r3944realms/superleadrope/api/type/capabilty/ILeashData.java +++ b/src/main/java/top/r3944realms/superleadrope/api/type/capabilty/ILeashData.java @@ -21,7 +21,9 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraftforge.common.util.INBTSerializable; -import java.util.*; +import java.util.Collection; +import java.util.Optional; +import java.util.UUID; /** * Capability interface for managing leash data of entities and knots. diff --git a/src/main/java/top/r3944realms/superleadrope/api/workspace/IWorkSpaceHelper.java b/src/main/java/top/r3944realms/superleadrope/api/workspace/IWorkSpaceHelper.java index decee96..7d33f8c 100644 --- a/src/main/java/top/r3944realms/superleadrope/api/workspace/IWorkSpaceHelper.java +++ b/src/main/java/top/r3944realms/superleadrope/api/workspace/IWorkSpaceHelper.java @@ -20,9 +20,12 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; import org.jetbrains.annotations.NotNull; +import top.r3944realms.superleadrope.api.type.capabilty.ILeashData; +import top.r3944realms.superleadrope.api.type.capabilty.ILeashState; import top.r3944realms.superleadrope.api.type.util.ILeashHelper; import java.util.List; +import java.util.Optional; import java.util.function.Predicate; public interface IWorkSpaceHelper { @@ -31,4 +34,6 @@ public interface IWorkSpaceHelper { boolean isSuperLeadKnot(Entity pEntity); BlockPos getSuperLeadPos(Entity pEntity) throws IllegalArgumentException; boolean isLeashable(@NotNull Entity pEntity); + Optional getLeashData(@NotNull Entity pEntity); + Optional getLeashState(@NotNull Entity pEntity); } diff --git a/src/main/java/top/r3944realms/superleadrope/client/renderer/resolver/SuperLeashStateResolver.java b/src/main/java/top/r3944realms/superleadrope/client/renderer/resolver/SuperLeashStateResolver.java index 83a9f66..4bbfad9 100644 --- a/src/main/java/top/r3944realms/superleadrope/client/renderer/resolver/SuperLeashStateResolver.java +++ b/src/main/java/top/r3944realms/superleadrope/client/renderer/resolver/SuperLeashStateResolver.java @@ -23,9 +23,9 @@ import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.entity.player.Player; import net.minecraft.world.phys.Vec3; import org.jetbrains.annotations.NotNull; +import top.r3944realms.superleadrope.api.type.capabilty.ILeashState; import top.r3944realms.superleadrope.api.type.capabilty.LeashInfo; import top.r3944realms.superleadrope.client.renderer.state.SuperLeashRenderState; -import top.r3944realms.superleadrope.api.type.capabilty.ILeashState; import top.r3944realms.superleadrope.content.entity.SuperLeashKnotEntity; import top.r3944realms.superleadrope.util.capability.LeashStateInnerAPI; diff --git a/src/main/java/top/r3944realms/superleadrope/content/capability/CapabilityHandler.java b/src/main/java/top/r3944realms/superleadrope/content/capability/CapabilityHandler.java index b00ee38..76c04e8 100644 --- a/src/main/java/top/r3944realms/superleadrope/content/capability/CapabilityHandler.java +++ b/src/main/java/top/r3944realms/superleadrope/content/capability/CapabilityHandler.java @@ -23,10 +23,10 @@ import net.minecraftforge.common.capabilities.CapabilityToken; import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent; import net.minecraftforge.event.AttachCapabilitiesEvent; import org.jetbrains.annotations.NotNull; -import top.r3944realms.superleadrope.content.capability.impi.LeashDataImpl; -import top.r3944realms.superleadrope.content.capability.inter.IEternalPotato; import top.r3944realms.superleadrope.api.type.capabilty.ILeashData; import top.r3944realms.superleadrope.api.type.capabilty.ILeashState; +import top.r3944realms.superleadrope.content.capability.impi.LeashDataImpl; +import top.r3944realms.superleadrope.content.capability.inter.IEternalPotato; import top.r3944realms.superleadrope.content.capability.provider.EternalPotatoProvider; import top.r3944realms.superleadrope.content.capability.provider.LeashDataProvider; import top.r3944realms.superleadrope.content.capability.provider.LeashStateProvider; diff --git a/src/main/java/top/r3944realms/superleadrope/content/capability/impi/LeashDataImpl.java b/src/main/java/top/r3944realms/superleadrope/content/capability/impi/LeashDataImpl.java index 212f4f1..8ab230f 100644 --- a/src/main/java/top/r3944realms/superleadrope/content/capability/impi/LeashDataImpl.java +++ b/src/main/java/top/r3944realms/superleadrope/content/capability/impi/LeashDataImpl.java @@ -42,9 +42,9 @@ import org.jetbrains.annotations.Nullable; import top.r3944realms.superleadrope.CommonEventHandler; import top.r3944realms.superleadrope.SuperLeadRope; import top.r3944realms.superleadrope.api.event.SuperLeadRopeEvent; +import top.r3944realms.superleadrope.api.type.capabilty.ILeashData; import top.r3944realms.superleadrope.api.type.capabilty.LeashInfo; import top.r3944realms.superleadrope.compat.CurtainCompat; -import top.r3944realms.superleadrope.api.type.capabilty.ILeashData; import top.r3944realms.superleadrope.config.LeashConfigManager; import top.r3944realms.superleadrope.content.entity.SuperLeashKnotEntity; import top.r3944realms.superleadrope.core.register.SLPSoundEvents; diff --git a/src/main/java/top/r3944realms/superleadrope/content/capability/provider/LeashDataProvider.java b/src/main/java/top/r3944realms/superleadrope/content/capability/provider/LeashDataProvider.java index 8448a62..2c3995e 100644 --- a/src/main/java/top/r3944realms/superleadrope/content/capability/provider/LeashDataProvider.java +++ b/src/main/java/top/r3944realms/superleadrope/content/capability/provider/LeashDataProvider.java @@ -26,8 +26,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import top.r3944realms.superleadrope.SuperLeadRope; import top.r3944realms.superleadrope.api.SLPCapability; -import top.r3944realms.superleadrope.content.capability.impi.LeashDataImpl; import top.r3944realms.superleadrope.api.type.capabilty.ILeashData; +import top.r3944realms.superleadrope.content.capability.impi.LeashDataImpl; public class LeashDataProvider implements ICapabilitySerializable { public static final ResourceLocation LEASH_DATA_REL = new ResourceLocation(SuperLeadRope.MOD_ID, "leash_data"); diff --git a/src/main/java/top/r3944realms/superleadrope/content/capability/provider/LeashStateProvider.java b/src/main/java/top/r3944realms/superleadrope/content/capability/provider/LeashStateProvider.java index 760ee6f..ccdd2c9 100644 --- a/src/main/java/top/r3944realms/superleadrope/content/capability/provider/LeashStateProvider.java +++ b/src/main/java/top/r3944realms/superleadrope/content/capability/provider/LeashStateProvider.java @@ -27,8 +27,8 @@ import org.jetbrains.annotations.Nullable; import top.r3944realms.superleadrope.CommonEventHandler; import top.r3944realms.superleadrope.SuperLeadRope; import top.r3944realms.superleadrope.api.SLPCapability; -import top.r3944realms.superleadrope.content.capability.impi.LeashStateImpl; import top.r3944realms.superleadrope.api.type.capabilty.ILeashState; +import top.r3944realms.superleadrope.content.capability.impi.LeashStateImpl; public class LeashStateProvider implements ICapabilitySerializable { public static final ResourceLocation LEASH_STATE_REL = new ResourceLocation(SuperLeadRope.MOD_ID, "leash_state"); diff --git a/src/main/java/top/r3944realms/superleadrope/content/item/SuperLeadRopeItem.java b/src/main/java/top/r3944realms/superleadrope/content/item/SuperLeadRopeItem.java index e30f8d4..883d4d9 100644 --- a/src/main/java/top/r3944realms/superleadrope/content/item/SuperLeadRopeItem.java +++ b/src/main/java/top/r3944realms/superleadrope/content/item/SuperLeadRopeItem.java @@ -31,8 +31,8 @@ import net.minecraft.world.level.gameevent.GameEvent; import net.minecraftforge.common.extensions.IForgeItem; import org.jetbrains.annotations.NotNull; import top.r3944realms.superleadrope.api.SuperLeadRopeApi; -import top.r3944realms.superleadrope.content.SLPToolTier; import top.r3944realms.superleadrope.api.type.capabilty.ILeashData; +import top.r3944realms.superleadrope.content.SLPToolTier; import top.r3944realms.superleadrope.content.entity.SuperLeashKnotEntity; import top.r3944realms.superleadrope.core.register.SLPSoundEvents; import top.r3944realms.superleadrope.util.capability.LeashDataInnerAPI; diff --git a/src/main/java/top/r3944realms/superleadrope/core/leash/LeashInteractHandler.java b/src/main/java/top/r3944realms/superleadrope/core/leash/LeashInteractHandler.java index d73e250..9321f31 100644 --- a/src/main/java/top/r3944realms/superleadrope/core/leash/LeashInteractHandler.java +++ b/src/main/java/top/r3944realms/superleadrope/core/leash/LeashInteractHandler.java @@ -28,8 +28,8 @@ import net.minecraft.world.level.gameevent.GameEvent; import net.minecraftforge.event.entity.player.AttackEntityEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import top.r3944realms.superleadrope.api.SuperLeadRopeApi; -import top.r3944realms.superleadrope.content.capability.impi.LeashDataImpl; import top.r3944realms.superleadrope.api.type.capabilty.ILeashData; +import top.r3944realms.superleadrope.content.capability.impi.LeashDataImpl; import top.r3944realms.superleadrope.content.item.SuperLeadRopeItem; import top.r3944realms.superleadrope.core.register.SLPItems; import top.r3944realms.superleadrope.core.register.SLPSoundEvents; diff --git a/src/main/java/top/r3944realms/superleadrope/util/capability/LeashDataInnerAPI.java b/src/main/java/top/r3944realms/superleadrope/util/capability/LeashDataInnerAPI.java index bae4cce..c23241d 100644 --- a/src/main/java/top/r3944realms/superleadrope/util/capability/LeashDataInnerAPI.java +++ b/src/main/java/top/r3944realms/superleadrope/util/capability/LeashDataInnerAPI.java @@ -21,8 +21,8 @@ import net.minecraft.world.entity.player.Player; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import top.r3944realms.superleadrope.api.SLPCapability; -import top.r3944realms.superleadrope.api.type.capabilty.LeashInfo; import top.r3944realms.superleadrope.api.type.capabilty.ILeashData; +import top.r3944realms.superleadrope.api.type.capabilty.LeashInfo; import java.util.*; diff --git a/src/main/java/top/r3944realms/superleadrope/workspace/WorkSpaceHelper.java b/src/main/java/top/r3944realms/superleadrope/workspace/WorkSpaceHelper.java index 59a24d8..629e0cd 100644 --- a/src/main/java/top/r3944realms/superleadrope/workspace/WorkSpaceHelper.java +++ b/src/main/java/top/r3944realms/superleadrope/workspace/WorkSpaceHelper.java @@ -21,12 +21,17 @@ import net.minecraft.world.level.Level; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import org.jetbrains.annotations.NotNull; +import top.r3944realms.superleadrope.api.type.capabilty.ILeashData; +import top.r3944realms.superleadrope.api.type.capabilty.ILeashState; import top.r3944realms.superleadrope.api.type.util.ILeashHelper; import top.r3944realms.superleadrope.api.workspace.IWorkSpaceHelper; import top.r3944realms.superleadrope.content.capability.impi.LeashDataImpl; import top.r3944realms.superleadrope.content.entity.SuperLeashKnotEntity; +import top.r3944realms.superleadrope.util.capability.LeashDataInnerAPI; +import top.r3944realms.superleadrope.util.capability.LeashStateInnerAPI; import java.util.List; +import java.util.Optional; import java.util.function.Predicate; public class WorkSpaceHelper implements IWorkSpaceHelper { @@ -59,4 +64,14 @@ public class WorkSpaceHelper implements IWorkSpaceHelper { return LeashDataImpl.isLeashable(pEntity); } + @Override + public Optional getLeashData(@NotNull Entity pEntity) { + return LeashDataInnerAPI.getLeashData(pEntity); + } + + @Override + public Optional getLeashState(@NotNull Entity pEntity) { + return LeashStateInnerAPI.getLeashState(pEntity); + } + }