From 7ad04d37dcc17e934a3494951c2f2d757ea482f5 Mon Sep 17 00:00:00 2001 From: Gregory Mitchell <54124162+gmitch215@users.noreply.github.com> Date: Mon, 27 May 2024 00:37:52 -0500 Subject: [PATCH 1/5] Update Version to v1.10.1 --- build.gradle.kts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 902656d1d..bcaa76855 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,3 @@ -@file:Suppress("UnstableApiUsage") - import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar plugins { @@ -14,7 +12,7 @@ plugins { } val pGroup = "me.gamercoder215" -val pVersion = "1.10.0-SNAPSHOT" +val pVersion = "1.10.1-SNAPSHOT" val pAuthor = "gmitch215" val github = "$pAuthor/MobChip" From 49805eb95a677e46a2262f915fa533aa9b2e5975 Mon Sep 17 00:00:00 2001 From: Gregory Mitchell <54124162+gmitch215@users.noreply.github.com> Date: Mon, 27 May 2024 00:38:14 -0500 Subject: [PATCH 2/5] Fix Typos --- CONTRIBUTING.md | 2 +- README.md | 2 +- .../kotlin/me/gamercoder215/mobchip/ai/memories/extensions.kt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1d40e747a..5e1abba5d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,7 @@ # Contributing Contributing guidelines for the MobChip Project. We appreciate your help in helping us to improve the project. -## Pull Requeset Process +## Pull Request Process 1. Ensure that the pull request is at the correct branch you want to merge in. 2. Ensure that your new code has been tested on a Maven Compiler, your specified Minecraft Version(s) and JDK 8. 3. Confirm that the code is ready to be merged along with any documentation you intend to include. diff --git a/README.md b/README.md index 4345cd09e..819209985 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ AI into your own plugins for simple use. ## ❓ Why? - **Simple**: MobChip has documentation, API usage, and other utilities to help ease the experience of working with Entity AI. -- **Flexible**: MobChip uses Reflection and Abstraction to help create flexibility, in order to ensure modern functionality on older versions. We also providing an easy-to-read API and JavaDocs to access important fields and methods. +- **Flexible**: MobChip uses Reflection and Abstraction to help create flexibility, in order to ensure modern functionality on older versions. We also provide an easy-to-read API and JavaDocs to access important fields and methods. - **Compatibility**: MobChip uses Abstraction to create compatibility on multiple versions of Minecraft. We also provide a version checker to ensure that your plugin is running on a compatible version. - **Transparent**: MobChip is completely open source. diff --git a/bukkit/src/main/kotlin/me/gamercoder215/mobchip/ai/memories/extensions.kt b/bukkit/src/main/kotlin/me/gamercoder215/mobchip/ai/memories/extensions.kt index e6f3f7426..820d5aacd 100644 --- a/bukkit/src/main/kotlin/me/gamercoder215/mobchip/ai/memories/extensions.kt +++ b/bukkit/src/main/kotlin/me/gamercoder215/mobchip/ai/memories/extensions.kt @@ -1,7 +1,7 @@ package me.gamercoder215.mobchip.ai.memories /** - * Registeres this [Memory] to the Memory Registry. + * Registers this [Memory] to the Memory Registry. * @throws IllegalStateException if this [Memory] is already registered. */ @Throws(IllegalStateException::class) From 8694c25fea1cf23bbb50eb28fed769289ddf09a1 Mon Sep 17 00:00:00 2001 From: Gregory Mitchell <54124162+gmitch215@users.noreply.github.com> Date: Mon, 27 May 2024 00:39:19 -0500 Subject: [PATCH 3/5] Fix Broken `AnimalPanic` Behavior Class --- .../abstraction/v1_14_R1/AnimalPanic1_14_R1.java | 10 +++------- .../abstraction/v1_15_R1/AnimalPanic1_15_R1.java | 10 +++------- .../abstraction/v1_16_R1/AnimalPanic1_16_R1.java | 10 +++------- .../abstraction/v1_16_R2/AnimalPanic1_16_R2.java | 10 +++------- .../abstraction/v1_16_R3/AnimalPanic1_16_R3.java | 8 +++----- 5 files changed, 15 insertions(+), 33 deletions(-) diff --git a/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/AnimalPanic1_14_R1.java b/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/AnimalPanic1_14_R1.java index 218a30bae..2aba82a8b 100644 --- a/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/AnimalPanic1_14_R1.java +++ b/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/AnimalPanic1_14_R1.java @@ -21,17 +21,13 @@ public AnimalPanic1_14_R1(float speedMod) { this.speedMultiplier = speedMod; } - protected boolean canStillUse(WorldServer var0, EntityCreature var1, long var2) { return true; } + protected boolean g(WorldServer var0, EntityCreature var1, long var2) { return true; } - protected void start(WorldServer w, EntityCreature c, long var2) { + protected void a(WorldServer w, EntityCreature c, long var2) { c.getBehaviorController().removeMemory(MemoryModuleType.WALK_TARGET); } - protected void stop(WorldServer w, EntityCreature c, long var2) { - // Do nothing - } - - protected void tick(WorldServer w, EntityCreature c, long var2) { + protected void d(WorldServer w, EntityCreature c, long var2) { if (c.getNavigation().n()) { Vec3D var4 = this.getPanicPos(c, w); if (var4 != null) { diff --git a/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/AnimalPanic1_15_R1.java b/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/AnimalPanic1_15_R1.java index ddefe4593..280b8a60d 100644 --- a/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/AnimalPanic1_15_R1.java +++ b/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/AnimalPanic1_15_R1.java @@ -21,17 +21,13 @@ public AnimalPanic1_15_R1(float speedMod) { this.speedMultiplier = speedMod; } - protected boolean canStillUse(WorldServer var0, EntityCreature var1, long var2) { return true; } + protected boolean g(WorldServer var0, EntityCreature var1, long var2) { return true; } - protected void start(WorldServer w, EntityCreature c, long var2) { + protected void a(WorldServer w, EntityCreature c, long var2) { c.getBehaviorController().removeMemory(MemoryModuleType.WALK_TARGET); } - protected void stop(WorldServer w, EntityCreature c, long var2) { - // Do nothing - } - - protected void tick(WorldServer w, EntityCreature c, long var2) { + protected void d(WorldServer w, EntityCreature c, long var2) { if (c.getNavigation().m()) { Vec3D var4 = this.getPanicPos(c, w); if (var4 != null) { diff --git a/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/AnimalPanic1_16_R1.java b/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/AnimalPanic1_16_R1.java index c9df5f77c..43549b1cc 100644 --- a/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/AnimalPanic1_16_R1.java +++ b/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/AnimalPanic1_16_R1.java @@ -19,17 +19,13 @@ public AnimalPanic1_16_R1(float speedMod) { this.speedMultiplier = speedMod; } - protected boolean canStillUse(WorldServer var0, EntityCreature var1, long var2) { return true; } + protected boolean b(WorldServer var0, EntityCreature var1, long var2) { return true; } - protected void start(WorldServer w, EntityCreature c, long var2) { + protected void a(WorldServer w, EntityCreature c, long var2) { c.getBehaviorController().removeMemory(MemoryModuleType.WALK_TARGET); } - protected void stop(WorldServer w, EntityCreature c, long var2) { - // Do nothing - } - - protected void tick(WorldServer w, EntityCreature c, long var2) { + protected void d(WorldServer w, EntityCreature c, long var2) { if (c.getNavigation().m()) { Vec3D var4 = this.getPanicPos(c, w); if (var4 != null) { diff --git a/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/AnimalPanic1_16_R2.java b/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/AnimalPanic1_16_R2.java index b4e361a97..ccb3219cc 100644 --- a/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/AnimalPanic1_16_R2.java +++ b/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/AnimalPanic1_16_R2.java @@ -19,17 +19,13 @@ public AnimalPanic1_16_R2(float speedMod) { this.speedMultiplier = speedMod; } - protected boolean canStillUse(WorldServer var0, EntityCreature var1, long var2) { return true; } + protected boolean b(WorldServer var0, EntityCreature var1, long var2) { return true; } - protected void start(WorldServer w, EntityCreature c, long var2) { + protected void a(WorldServer w, EntityCreature c, long var2) { c.getBehaviorController().removeMemory(MemoryModuleType.WALK_TARGET); } - protected void stop(WorldServer w, EntityCreature c, long var2) { - // Do nothing - } - - protected void tick(WorldServer w, EntityCreature c, long var2) { + protected void d(WorldServer w, EntityCreature c, long var2) { if (c.getNavigation().m()) { Vec3D var4 = this.getPanicPos(c, w); if (var4 != null) { diff --git a/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/AnimalPanic1_16_R3.java b/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/AnimalPanic1_16_R3.java index 3bc1fae65..3e4a046f3 100644 --- a/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/AnimalPanic1_16_R3.java +++ b/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/AnimalPanic1_16_R3.java @@ -19,15 +19,13 @@ public AnimalPanic1_16_R3(float speedMod) { this.speedMultiplier = speedMod; } - protected boolean canStillUse(WorldServer var0, EntityCreature var1, long var2) { return true; } + protected boolean b(WorldServer var0, EntityCreature var1, long var2) { return true; } - protected void start(WorldServer w, EntityCreature c, long var2) { + protected void a(WorldServer w, EntityCreature c, long var2) { c.getBehaviorController().removeMemory(MemoryModuleType.WALK_TARGET); } - protected void stop(WorldServer w, EntityCreature c, long var2) {} - - protected void tick(WorldServer w, EntityCreature c, long var2) { + protected void d(WorldServer w, EntityCreature c, long var2) { if (c.getNavigation().m()) { Vec3D var4 = this.getPanicPos(c, w); if (var4 != null) { From 3ececb0ac933686d7e6581ab51dc30b56b273307 Mon Sep 17 00:00:00 2001 From: Gregory Mitchell <54124162+gmitch215@users.noreply.github.com> Date: Mon, 27 May 2024 00:52:31 -0500 Subject: [PATCH 4/5] Massive Code Cleanup - Add Missing `@NotNull` / `@Nullable` annotations - Utilize JDK 21 Features on `1_20_R4` - Change Visibility when Necessary - Purge Unused Fields/Methods - Other Various Code-cleanup Tactics --- .../mobchip/bukkit/BukkitEntityBehavior.java | 2 +- .../gamercoder215/mobchip/VillagerBrain.java | 1 + .../mobchip/ai/enderdragon/CustomPhase.java | 8 +- .../mobchip/ai/goal/CustomPathfinder.java | 3 +- .../ai/goal/PathfinderAvoidEntity.java | 2 +- .../mobchip/ai/goal/PathfinderBeg.java | 4 +- .../mobchip/ai/goal/PathfinderBreathAir.java | 2 +- .../mobchip/ai/goal/PathfinderBreed.java | 2 +- .../mobchip/ai/goal/PathfinderInfo.java | 3 + .../mobchip/ai/memories/EntityMemory.java | 1 + .../mobchip/ai/memories/MemoryStatus.java | 2 +- .../mobchip/ai/sensing/CustomSensor.java | 2 +- .../me/gamercoder215/mobchip/bosses/Boss.java | 1 - .../gamercoder215/mobchip/bosses/Minion.java | 4 +- .../gamercoder215/mobchip/nbt/NBTSection.java | 11 +- .../mobchip/util/Registration.java | 2 +- .../mobchip/ai/attribute/EntityAttribute.java | 1 - .../mobchip/bukkit/BukkitAI.java | 10 +- .../mobchip/bukkit/BukkitVillagerBrain.java | 4 +- .../abstraction/v1_13_R1/ChipUtil1_13_R1.java | 5 + .../v1_13_R1/EntityNBT1_13_R1.java | 7 +- .../v1_13_R1/NBTSection1_13_R1.java | 2 +- .../v1_13_R1/NavigationPath1_13_R1.java | 14 ++ .../abstraction/v1_13_R2/ChipUtil1_13_R2.java | 5 + .../v1_13_R2/EntityNBT1_13_R2.java | 7 +- .../v1_13_R2/NBTSection1_13_R2.java | 2 +- .../v1_13_R2/NavigationPath1_13_R2.java | 14 ++ .../abstraction/v1_14_R1/ChipUtil1_14_R1.java | 6 + .../v1_14_R1/EntityNBT1_14_R1.java | 7 +- .../EntityScheduleManager1_14_R1.java | 1 + .../v1_14_R1/NBTSection1_14_R1.java | 2 +- .../v1_14_R1/NavigationPath1_14_R1.java | 7 + .../mobchip/ai/goal/PathfinderCatOnBed.java | 2 +- .../mobchip/ai/goal/PathfinderCatOnBlock.java | 2 +- .../OptimizedSmallEnumSet1_14_R1.java | 2 - .../abstraction/v1_15_R1/ChipUtil1_15_R1.java | 5 + .../v1_15_R1/EntityNBT1_15_R1.java | 7 +- .../EntityScheduleManager1_15_R1.java | 1 + .../v1_15_R1/NBTSection1_15_R1.java | 2 +- .../v1_15_R1/NavigationPath1_15_R1.java | 4 + .../OptimizedSmallEnumSet1_15_R1.java | 2 - .../abstraction/v1_16_R1/ChipUtil1_16_R1.java | 5 + .../v1_16_R1/EntityNBT1_16_R1.java | 7 +- .../EntityScheduleManager1_16_R1.java | 1 + .../v1_16_R1/NBTSection1_16_R1.java | 2 +- .../v1_16_R1/NavigationPath1_16_R1.java | 4 + .../OptimizedSmallEnumSet1_16_R1.java | 2 - .../abstraction/v1_16_R2/ChipUtil1_16_R2.java | 5 + .../v1_16_R2/EntityNBT1_16_R2.java | 7 +- .../EntityScheduleManager1_16_R2.java | 1 + .../v1_16_R2/NBTSection1_16_R2.java | 2 +- .../v1_16_R2/NavigationPath1_16_R2.java | 16 ++ .../OptimizedSmallEnumSet1_16_R2.java | 2 - .../abstraction/v1_16_R3/ChipUtil1_16_R3.java | 5 + .../v1_16_R3/EntityNBT1_16_R3.java | 7 +- .../EntityScheduleManager1_16_R3.java | 1 + .../v1_16_R3/NBTSection1_16_R3.java | 2 +- .../v1_16_R3/NavigationPath1_16_R3.java | 16 ++ .../OptimizedSmallEnumSet1_16_R3.java | 2 - .../abstraction/v1_17_R1/ChipUtil1_17_R1.java | 6 + .../v1_17_R1/EntityNBT1_17_R1.java | 7 +- .../EntityScheduleManager1_17_R1.java | 1 + .../v1_17_R1/NBTSection1_17_R1.java | 2 +- .../v1_17_R1/NavigationPath1_17_R1.java | 16 ++ .../OptimizedSmallEnumSet1_17_R1.java | 2 - .../abstraction/v1_18_R1/ChipUtil1_18_R1.java | 6 + .../v1_18_R1/DragonPhase1_18_R1.java | 2 +- .../v1_18_R1/EntityNBT1_18_R1.java | 7 +- .../v1_18_R1/NBTSection1_18_R1.java | 2 +- .../v1_18_R1/NavigationPath1_18_R1.java | 16 ++ .../OptimizedSmallEnumSet1_18_R1.java | 2 - .../abstraction/v1_18_R2/ChipUtil1_18_R2.java | 5 + .../v1_18_R2/EntityNBT1_18_R2.java | 7 +- .../v1_18_R2/NBTSection1_18_R2.java | 2 +- .../v1_18_R2/NavigationPath1_18_R2.java | 16 ++ .../OptimizedSmallEnumSet1_18_R2.java | 2 - .../abstraction/v1_19_R1/ChipUtil1_19_R1.java | 5 + .../v1_19_R1/EntityNBT1_19_R1.java | 7 +- .../v1_19_R1/NBTSection1_19_R1.java | 2 +- .../v1_19_R1/NavigationPath1_19_R1.java | 16 ++ .../OptimizedSmallEnumSet1_19_R1.java | 2 - .../abstraction/v1_19_R2/ChipUtil1_19_R2.java | 5 + .../v1_19_R2/EntityNBT1_19_R2.java | 7 +- .../v1_19_R2/NBTSection1_19_R2.java | 2 +- .../v1_19_R2/NavigationPath1_19_R2.java | 16 ++ .../OptimizedSmallEnumSet1_19_R2.java | 2 - .../abstraction/v1_19_R3/ChipUtil1_19_R3.java | 11 +- .../v1_19_R3/EntityNBT1_19_R3.java | 7 +- .../v1_19_R3/NBTSection1_19_R3.java | 2 +- .../v1_19_R3/NavigationPath1_19_R3.java | 16 ++ .../OptimizedSmallEnumSet1_19_R3.java | 2 - .../abstraction/v1_20_R1/ChipUtil1_20_R1.java | 11 +- .../v1_20_R1/EntityNBT1_20_R1.java | 7 +- .../v1_20_R1/NBTSection1_20_R1.java | 2 +- .../v1_20_R1/NavigationPath1_20_R1.java | 16 ++ .../OptimizedSmallEnumSet1_20_R1.java | 2 - .../abstraction/v1_20_R2/ChipUtil1_20_R2.java | 13 +- .../v1_20_R2/EntityNBT1_20_R2.java | 7 +- .../v1_20_R2/NBTSection1_20_R2.java | 2 +- .../v1_20_R2/NavigationPath1_20_R2.java | 16 ++ .../OptimizedSmallEnumSet1_20_R2.java | 2 - .../abstraction/v1_20_R3/ChipUtil1_20_R3.java | 13 +- .../v1_20_R3/EntityNBT1_20_R3.java | 7 +- .../v1_20_R3/NBTSection1_20_R3.java | 2 +- .../v1_20_R3/NavigationPath1_20_R3.java | 16 ++ .../OptimizedSmallEnumSet1_20_R3.java | 2 - .../abstraction/v1_20_R4/ChipUtil1_20_R4.java | 147 ++++++++---------- .../v1_20_R4/EntityNBT1_20_R4.java | 7 +- .../v1_20_R4/NBTSection1_20_R4.java | 46 +++--- .../v1_20_R4/NavigationPath1_20_R4.java | 16 ++ .../OptimizedSmallEnumSet1_20_R4.java | 2 - 111 files changed, 507 insertions(+), 290 deletions(-) diff --git a/abstraction/src/main/java/me/gamercoder215/mobchip/bukkit/BukkitEntityBehavior.java b/abstraction/src/main/java/me/gamercoder215/mobchip/bukkit/BukkitEntityBehavior.java index e1095ea04..00e0e604a 100644 --- a/abstraction/src/main/java/me/gamercoder215/mobchip/bukkit/BukkitEntityBehavior.java +++ b/abstraction/src/main/java/me/gamercoder215/mobchip/bukkit/BukkitEntityBehavior.java @@ -30,7 +30,7 @@ BehaviorResult run(String behaviorName, Object... args) { } @Override - public BehaviorResult backupIfClose(int min, float speedMod) { + public @NotNull BehaviorResult backupIfClose(int min, float speedMod) { return run("BehaviorRetreat", min, speedMod); } diff --git a/base/src/main/java/me/gamercoder215/mobchip/VillagerBrain.java b/base/src/main/java/me/gamercoder215/mobchip/VillagerBrain.java index ced33a76f..f0779aa0c 100644 --- a/base/src/main/java/me/gamercoder215/mobchip/VillagerBrain.java +++ b/base/src/main/java/me/gamercoder215/mobchip/VillagerBrain.java @@ -17,6 +17,7 @@ public interface VillagerBrain extends EntityBrain { EntityGossipContainer getGossipContainer(); @Override + @NotNull Villager getEntity(); } diff --git a/base/src/main/java/me/gamercoder215/mobchip/ai/enderdragon/CustomPhase.java b/base/src/main/java/me/gamercoder215/mobchip/ai/enderdragon/CustomPhase.java index 7c4b613cb..9d3533daa 100644 --- a/base/src/main/java/me/gamercoder215/mobchip/ai/enderdragon/CustomPhase.java +++ b/base/src/main/java/me/gamercoder215/mobchip/ai/enderdragon/CustomPhase.java @@ -58,9 +58,13 @@ public void serverTick() {} public void clientTick() {} - public void onCrystalDestroyed(EnderCrystal c, EntityDamageEvent.DamageCause cause, @Nullable Player p) {} + public void onCrystalDestroyed(EnderCrystal c, EntityDamageEvent.DamageCause cause, @Nullable Player p) { + DragonPhase.super.onCrystalDestroyed(c, cause, p); + } - public float onDamage(EntityDamageEvent.DamageCause cause, float amount) { return amount; } + public float onDamage(EntityDamageEvent.DamageCause cause, float amount) { + return DragonPhase.super.onDamage(cause, amount); + } public boolean isSitting() { return false; diff --git a/base/src/main/java/me/gamercoder215/mobchip/ai/goal/CustomPathfinder.java b/base/src/main/java/me/gamercoder215/mobchip/ai/goal/CustomPathfinder.java index d665991da..a97c351dc 100644 --- a/base/src/main/java/me/gamercoder215/mobchip/ai/goal/CustomPathfinder.java +++ b/base/src/main/java/me/gamercoder215/mobchip/ai/goal/CustomPathfinder.java @@ -1,6 +1,7 @@ package me.gamercoder215.mobchip.ai.goal; import org.bukkit.entity.Mob; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; /** @@ -111,7 +112,7 @@ public void stop() {} /** * @deprecated Internal Use only */ - @Deprecated + @ApiStatus.Internal public String getInternalName() { return "CustomPathfinder"; } diff --git a/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderAvoidEntity.java b/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderAvoidEntity.java index 6e6fa80c6..043fd4674 100644 --- a/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderAvoidEntity.java +++ b/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderAvoidEntity.java @@ -182,7 +182,7 @@ public void setFilter(@NotNull Class clazz) { } @Override - public Creature getEntity() { return (Creature) entity; } + public @NotNull Creature getEntity() { return (Creature) entity; } @Override public @NotNull PathfinderFlag[] getFlags() { diff --git a/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderBeg.java b/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderBeg.java index ea4ea67f0..dbff164f5 100644 --- a/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderBeg.java +++ b/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderBeg.java @@ -8,7 +8,7 @@ */ public final class PathfinderBeg extends Pathfinder implements Ranged { - private float lookRange = DEFAULT_LOOK_RANGE; + private float lookRange; /** * Constructs a PathfinderBeg with the default look range. @@ -29,7 +29,7 @@ public PathfinderBeg(@NotNull Wolf w, float lookRange) { } @Override - public Wolf getEntity() { return (Wolf) entity; } + public @NotNull Wolf getEntity() { return (Wolf) entity; } /** * Get the look range of this PathfinderBeg. diff --git a/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderBreathAir.java b/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderBreathAir.java index b43fe026a..332293082 100644 --- a/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderBreathAir.java +++ b/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderBreathAir.java @@ -17,7 +17,7 @@ public PathfinderBreathAir(@NotNull Creature c) { } @Override - public Creature getEntity() { return (Creature) entity; } + public @NotNull Creature getEntity() { return (Creature) entity; } @Override public @NotNull PathfinderFlag[] getFlags() { diff --git a/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderBreed.java b/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderBreed.java index 858ae4160..15ad4064c 100644 --- a/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderBreed.java +++ b/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderBreed.java @@ -30,7 +30,7 @@ public PathfinderBreed(@NotNull Animals m, double speedMod) { } @Override - public Animals getEntity() { return (Animals) entity; } + public @NotNull Animals getEntity() { return (Animals) entity; } @Override public double getSpeedModifier() { diff --git a/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderInfo.java b/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderInfo.java index 8b6c40068..ebe77118e 100644 --- a/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderInfo.java +++ b/base/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderInfo.java @@ -1,5 +1,7 @@ package me.gamercoder215.mobchip.ai.goal; +import org.jetbrains.annotations.ApiStatus; + /** * Represents information about a Pathfinder */ @@ -17,6 +19,7 @@ default String getName() { * Returns the NMS Internal Name. * @return Internal Name */ + @ApiStatus.Internal String getInternalName(); } diff --git a/base/src/main/java/me/gamercoder215/mobchip/ai/memories/EntityMemory.java b/base/src/main/java/me/gamercoder215/mobchip/ai/memories/EntityMemory.java index 7a5fed19b..cac3251c8 100644 --- a/base/src/main/java/me/gamercoder215/mobchip/ai/memories/EntityMemory.java +++ b/base/src/main/java/me/gamercoder215/mobchip/ai/memories/EntityMemory.java @@ -441,6 +441,7 @@ private EntityMemory(Class bukkit, String key) { * @return Bukkit Class */ @Override + @NotNull public Class getBukkitClass() { return this.bukkit; } diff --git a/base/src/main/java/me/gamercoder215/mobchip/ai/memories/MemoryStatus.java b/base/src/main/java/me/gamercoder215/mobchip/ai/memories/MemoryStatus.java index ae3eb360c..613387905 100644 --- a/base/src/main/java/me/gamercoder215/mobchip/ai/memories/MemoryStatus.java +++ b/base/src/main/java/me/gamercoder215/mobchip/ai/memories/MemoryStatus.java @@ -19,7 +19,7 @@ *

* A Memory being registered means that the memory is present in the Minecraft Registry, and is supported by the mob type. All native memories, such as the ones listed in this class, are all * registered in the Minecraft Registry by default, but can be unregistered at any time. However, custom memories are not registered in the Minecraft Registry, and thus, would not be able to be present in the brain. - * + *

* Additionally, not all mobs support the same memory, making them unregistered when applicable. Passive Mobs do not have {@link EntityMemory#ANGRY_AT} registered in their Brain, and Wardens are the only ones with {@link EntityMemory#DISTURBANCE_LOCATION} registered. *

*/ diff --git a/base/src/main/java/me/gamercoder215/mobchip/ai/sensing/CustomSensor.java b/base/src/main/java/me/gamercoder215/mobchip/ai/sensing/CustomSensor.java index 534d55696..90840b022 100644 --- a/base/src/main/java/me/gamercoder215/mobchip/ai/sensing/CustomSensor.java +++ b/base/src/main/java/me/gamercoder215/mobchip/ai/sensing/CustomSensor.java @@ -43,7 +43,7 @@ public final int getScanRate() { } @Override - public final Class getEntityClass() { + public final @NotNull Class getEntityClass() { return entityClass; } diff --git a/base/src/main/java/me/gamercoder215/mobchip/bosses/Boss.java b/base/src/main/java/me/gamercoder215/mobchip/bosses/Boss.java index ee087dde2..756c275ba 100644 --- a/base/src/main/java/me/gamercoder215/mobchip/bosses/Boss.java +++ b/base/src/main/java/me/gamercoder215/mobchip/bosses/Boss.java @@ -277,7 +277,6 @@ public final Sound getSpawnSound() { * Sets the Death Sound. * @param s New Death Sound, or Null to reset */ - @NotNull public final void setSpawnSound(@Nullable Sound s) { if (s == null) this.spawnSound = s; else this.spawnSound = Sound.ENTITY_WITHER_SPAWN; } diff --git a/base/src/main/java/me/gamercoder215/mobchip/bosses/Minion.java b/base/src/main/java/me/gamercoder215/mobchip/bosses/Minion.java index 8d44a1fca..29aaee87a 100644 --- a/base/src/main/java/me/gamercoder215/mobchip/bosses/Minion.java +++ b/base/src/main/java/me/gamercoder215/mobchip/bosses/Minion.java @@ -23,9 +23,9 @@ public final class Minion { private final Class entityClazz; private double health; - private Map equipment; + private final Map equipment; - private Map attributes; + private final Map attributes; /** * Creates a Minion. diff --git a/base/src/main/java/me/gamercoder215/mobchip/nbt/NBTSection.java b/base/src/main/java/me/gamercoder215/mobchip/nbt/NBTSection.java index 5039d4045..18f7b4597 100644 --- a/base/src/main/java/me/gamercoder215/mobchip/nbt/NBTSection.java +++ b/base/src/main/java/me/gamercoder215/mobchip/nbt/NBTSection.java @@ -1,6 +1,9 @@ package me.gamercoder215.mobchip.nbt; -import org.bukkit.*; +import org.bukkit.Color; +import org.bukkit.Location; +import org.bukkit.NamespacedKey; +import org.bukkit.OfflinePlayer; import org.bukkit.configuration.serialization.ConfigurationSerializable; import org.bukkit.inventory.ItemStack; import org.bukkit.util.EulerAngle; @@ -552,7 +555,7 @@ default List getStringList(@Nullable String key) { */ @Nullable default List getStringList(@Nullable String key, @Nullable List def) { - if (getList(key) == null) return def; + if (getList(key).isEmpty()) return def; return getStringList(key); } @@ -563,7 +566,7 @@ default List getStringList(@Nullable String key, @Nullable List */ @NotNull default List getIntegerList(@Nullable String key) { - if (getList(key) == null) return null; + if (getList(key).isEmpty()) return null; return getList(key).stream().map(Object::toString).map(s -> { try { return Integer.parseInt(s); } catch (NumberFormatException e) { return null; } }).filter(Objects::nonNull).collect(Collectors.toList()); } @@ -575,7 +578,7 @@ default List getIntegerList(@Nullable String key) { */ @Nullable default List getIntegerList(@Nullable String key, @Nullable List def) { - if (getList(key) == null) return def; + if (getList(key).isEmpty()) return def; return getIntegerList(key); } diff --git a/base/src/main/java/me/gamercoder215/mobchip/util/Registration.java b/base/src/main/java/me/gamercoder215/mobchip/util/Registration.java index 95aa90ed7..9bcb114bd 100644 --- a/base/src/main/java/me/gamercoder215/mobchip/util/Registration.java +++ b/base/src/main/java/me/gamercoder215/mobchip/util/Registration.java @@ -6,7 +6,7 @@ /** * Represents registration under a specific context. *

- * Minecraft 1.20.5 introduced new changes to how registering new items (e.g. attributes, sensors, etc) work. + * Minecraft 1.20.5 introduced new changes to how registering new items (e.g. attributes, sensors, etc.) work. * You are now required to pass a namespace, key, and version, as opposed to just a namespace and key. * There is no functional difference if this is not provided, so MobChip will default to "unknown" for the version. * You can provide custom parameters here for improved native interoperability with the registry. diff --git a/bukkit/src/main/java/me/gamercoder215/mobchip/ai/attribute/EntityAttribute.java b/bukkit/src/main/java/me/gamercoder215/mobchip/ai/attribute/EntityAttribute.java index ac03d4fc6..5f7442c99 100644 --- a/bukkit/src/main/java/me/gamercoder215/mobchip/ai/attribute/EntityAttribute.java +++ b/bukkit/src/main/java/me/gamercoder215/mobchip/ai/attribute/EntityAttribute.java @@ -190,7 +190,6 @@ public static EntityAttribute getAttribute(@Nullable NamespacedKey key) { * @param key Key of the Attribute * @return true if attribute exists, else false */ - @Nullable public static boolean exists(@Nullable NamespacedKey key) { return getAttribute(key) != null; } diff --git a/bukkit/src/main/java/me/gamercoder215/mobchip/bukkit/BukkitAI.java b/bukkit/src/main/java/me/gamercoder215/mobchip/bukkit/BukkitAI.java index 0aea4a4d1..d55ee922f 100644 --- a/bukkit/src/main/java/me/gamercoder215/mobchip/bukkit/BukkitAI.java +++ b/bukkit/src/main/java/me/gamercoder215/mobchip/bukkit/BukkitAI.java @@ -25,7 +25,7 @@ final class BukkitAI implements EntityAI { private final Mob m; - protected BukkitAI(Mob m, boolean target) { + BukkitAI(Mob m, boolean target) { this.target = target; this.m = m; updateMap(); @@ -66,7 +66,7 @@ public boolean contains(Object o) { } @Override - public boolean contains(Pathfinder value) { + public boolean contains(@NotNull Pathfinder value) { return wrapper.getGoals(m, target).stream().map(WrappedPathfinder::getPathfinder).collect(Collectors.toList()).contains(value); } @@ -88,7 +88,7 @@ public boolean remove(@NotNull Pathfinder p) { } @Override - public boolean isRunning(Pathfinder p) { + public boolean isRunning(@NotNull Pathfinder p) { return wrapper.getRunningGoals(m, target).stream().map(WrappedPathfinder::getPathfinder).collect(Collectors.toList()).contains(p); } @@ -100,12 +100,12 @@ public Iterator iterator() { @NotNull @Override - public WrappedPathfinder[] toArray() { + public WrappedPathfinder @NotNull [] toArray() { return goals.toArray(new WrappedPathfinder[0]); } @Override - public T[] toArray(@NotNull T[] a) { + public T @NotNull [] toArray(@NotNull T @NotNull [] a) { return a; } diff --git a/bukkit/src/main/java/me/gamercoder215/mobchip/bukkit/BukkitVillagerBrain.java b/bukkit/src/main/java/me/gamercoder215/mobchip/bukkit/BukkitVillagerBrain.java index d6fe7ea8f..f392580da 100644 --- a/bukkit/src/main/java/me/gamercoder215/mobchip/bukkit/BukkitVillagerBrain.java +++ b/bukkit/src/main/java/me/gamercoder215/mobchip/bukkit/BukkitVillagerBrain.java @@ -15,12 +15,12 @@ class BukkitVillagerBrain extends BukkitBrain implements VillagerBrain { } @Override - public EntityGossipContainer getGossipContainer() { + public @NotNull EntityGossipContainer getGossipContainer() { return w.getGossipContainer(v); } @Override - public Villager getEntity() { + public @NotNull Villager getEntity() { return v; } } diff --git a/nms/1_13_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R1/ChipUtil1_13_R1.java b/nms/1_13_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R1/ChipUtil1_13_R1.java index 6703bddd1..d52533015 100644 --- a/nms/1_13_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R1/ChipUtil1_13_R1.java +++ b/nms/1_13_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R1/ChipUtil1_13_R1.java @@ -21,6 +21,7 @@ import me.gamercoder215.mobchip.combat.CombatLocation; import me.gamercoder215.mobchip.combat.EntityCombatTracker; import me.gamercoder215.mobchip.nbt.EntityNBT; +import me.gamercoder215.mobchip.util.Position; import net.minecraft.server.v1_13_R1.*; import org.bukkit.World; import org.bukkit.*; @@ -1154,4 +1155,8 @@ public EnderCrystal getNearestCrystal(EnderDragon d) { if (nms.currentEnderCrystal == null) return null; return (EnderCrystal) nms.currentEnderCrystal.getBukkitEntity(); } + + public static Position fromNMS(PathPoint point) { + return new Position(point.a, point.b, point.c); + } } diff --git a/nms/1_13_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R1/EntityNBT1_13_R1.java b/nms/1_13_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R1/EntityNBT1_13_R1.java index 2bcebb468..a4c423339 100644 --- a/nms/1_13_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R1/EntityNBT1_13_R1.java +++ b/nms/1_13_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R1/EntityNBT1_13_R1.java @@ -9,15 +9,12 @@ final class EntityNBT1_13_R1 extends NBTSection1_13_R1 implements EntityNBT { private final Mob mob; - private final EntityInsentient handle; - - private final NBTTagCompound root; public EntityNBT1_13_R1(Mob m) { super(m); this.mob = m; - this.handle = ChipUtil1_13_R1.toNMS(m); - this.root = new NBTTagCompound(); + EntityInsentient handle = ChipUtil1_13_R1.toNMS(m); + NBTTagCompound root = new NBTTagCompound(); handle.d(root); } diff --git a/nms/1_13_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R1/NBTSection1_13_R1.java b/nms/1_13_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R1/NBTSection1_13_R1.java index 89bbec2c7..2aa4e67f9 100644 --- a/nms/1_13_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R1/NBTSection1_13_R1.java +++ b/nms/1_13_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R1/NBTSection1_13_R1.java @@ -329,7 +329,7 @@ public void set(@Nullable String key, @Nullable Object value) { @Override public boolean isSet(@Nullable String key) { - return false; + return tag.hasKey(key); } @Override diff --git a/nms/1_13_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R1/NavigationPath1_13_R1.java b/nms/1_13_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R1/NavigationPath1_13_R1.java index 452f609be..cf0d4e8ba 100644 --- a/nms/1_13_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R1/NavigationPath1_13_R1.java +++ b/nms/1_13_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R1/NavigationPath1_13_R1.java @@ -11,8 +11,10 @@ import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.Arrays; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; final class NavigationPath1_13_R1 implements NavigationPath { private String name; @@ -25,6 +27,18 @@ public NavigationPath1_13_R1(@NotNull PathEntity nms, @NotNull Mob m, double spe this.name = "bukkitpath"; this.handle = nms; this.speedMod = speedMod; + + try { + Field points = this.handle.getClass().getDeclaredField("a"); + points.setAccessible(true); + PathPoint[] pathPoints = (PathPoint[]) points.get(this.handle); + + nodes.addAll(Arrays.stream(pathPoints) + .map(ChipUtil1_13_R1::fromNMS) + .collect(Collectors.toSet())); + } catch (ReflectiveOperationException e) { + ChipUtil.printStackTrace(e); + } } private final List nodes = new ArrayList<>(); diff --git a/nms/1_13_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R2/ChipUtil1_13_R2.java b/nms/1_13_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R2/ChipUtil1_13_R2.java index 2703e3630..7965468dd 100644 --- a/nms/1_13_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R2/ChipUtil1_13_R2.java +++ b/nms/1_13_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R2/ChipUtil1_13_R2.java @@ -21,6 +21,7 @@ import me.gamercoder215.mobchip.combat.CombatLocation; import me.gamercoder215.mobchip.combat.EntityCombatTracker; import me.gamercoder215.mobchip.nbt.EntityNBT; +import me.gamercoder215.mobchip.util.Position; import net.minecraft.server.v1_13_R2.*; import org.bukkit.World; import org.bukkit.*; @@ -1157,4 +1158,8 @@ public EnderCrystal getNearestCrystal(EnderDragon d) { return (EnderCrystal) nms.currentEnderCrystal.getBukkitEntity(); } + public static Position fromNMS(PathPoint point) { + return new Position(point.a, point.b, point.c); + } + } diff --git a/nms/1_13_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R2/EntityNBT1_13_R2.java b/nms/1_13_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R2/EntityNBT1_13_R2.java index 659041564..c0c845a20 100644 --- a/nms/1_13_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R2/EntityNBT1_13_R2.java +++ b/nms/1_13_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R2/EntityNBT1_13_R2.java @@ -9,15 +9,12 @@ final class EntityNBT1_13_R2 extends NBTSection1_13_R2 implements EntityNBT { private final Mob mob; - private final EntityInsentient handle; - - private final NBTTagCompound root; public EntityNBT1_13_R2(Mob m) { super(m); this.mob = m; - this.handle = ChipUtil1_13_R2.toNMS(m); - this.root = new NBTTagCompound(); + EntityInsentient handle = ChipUtil1_13_R2.toNMS(m); + NBTTagCompound root = new NBTTagCompound(); handle.d(root); } diff --git a/nms/1_13_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R2/NBTSection1_13_R2.java b/nms/1_13_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R2/NBTSection1_13_R2.java index a1d10b824..390ae2a4d 100644 --- a/nms/1_13_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R2/NBTSection1_13_R2.java +++ b/nms/1_13_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R2/NBTSection1_13_R2.java @@ -329,7 +329,7 @@ public void set(@Nullable String key, @Nullable Object value) { @Override public boolean isSet(@Nullable String key) { - return false; + return tag.hasKey(key); } @Override diff --git a/nms/1_13_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R2/NavigationPath1_13_R2.java b/nms/1_13_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R2/NavigationPath1_13_R2.java index 45890d079..c69469987 100644 --- a/nms/1_13_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R2/NavigationPath1_13_R2.java +++ b/nms/1_13_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_13_R2/NavigationPath1_13_R2.java @@ -11,8 +11,10 @@ import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.Arrays; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; final class NavigationPath1_13_R2 implements NavigationPath { private String name; @@ -25,6 +27,18 @@ public NavigationPath1_13_R2(@NotNull PathEntity nms, @NotNull Mob m, double spe this.name = "bukkitpath"; this.handle = nms; this.speedMod = speedMod; + + try { + Field points = this.handle.getClass().getDeclaredField("a"); + points.setAccessible(true); + PathPoint[] pathPoints = (PathPoint[]) points.get(this.handle); + + nodes.addAll(Arrays.stream(pathPoints) + .map(ChipUtil1_13_R2::fromNMS) + .collect(Collectors.toSet())); + } catch (ReflectiveOperationException e) { + ChipUtil.printStackTrace(e); + } } private final List nodes = new ArrayList<>(); diff --git a/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/ChipUtil1_14_R1.java b/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/ChipUtil1_14_R1.java index 0674a92c3..6b18d6c25 100644 --- a/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/ChipUtil1_14_R1.java +++ b/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/ChipUtil1_14_R1.java @@ -22,6 +22,7 @@ import me.gamercoder215.mobchip.combat.CombatLocation; import me.gamercoder215.mobchip.combat.EntityCombatTracker; import me.gamercoder215.mobchip.nbt.EntityNBT; +import me.gamercoder215.mobchip.util.Position; import net.minecraft.server.v1_14_R1.*; import org.bukkit.World; import org.bukkit.*; @@ -1542,4 +1543,9 @@ public EnderCrystal getNearestCrystal(EnderDragon d) { if (nms.currentEnderCrystal == null) return null; return (EnderCrystal) nms.currentEnderCrystal.getBukkitEntity(); } + + public static Position fromNMS(PathPoint point) { + return new Position(point.a, point.b, point.c); + } + } diff --git a/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/EntityNBT1_14_R1.java b/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/EntityNBT1_14_R1.java index b5e617858..fa6068374 100644 --- a/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/EntityNBT1_14_R1.java +++ b/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/EntityNBT1_14_R1.java @@ -9,15 +9,12 @@ final class EntityNBT1_14_R1 extends NBTSection1_14_R1 implements EntityNBT { private final Mob mob; - private final EntityInsentient handle; - - private final NBTTagCompound root; public EntityNBT1_14_R1(Mob m) { super(m); this.mob = m; - this.handle = ChipUtil1_14_R1.toNMS(m); - this.root = new NBTTagCompound(); + EntityInsentient handle = ChipUtil1_14_R1.toNMS(m); + NBTTagCompound root = new NBTTagCompound(); handle.d(root); } diff --git a/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/EntityScheduleManager1_14_R1.java b/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/EntityScheduleManager1_14_R1.java index 235d80b2b..f9bcd9a02 100644 --- a/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/EntityScheduleManager1_14_R1.java +++ b/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/EntityScheduleManager1_14_R1.java @@ -12,6 +12,7 @@ import java.util.Set; import java.util.function.Consumer; +@SuppressWarnings("deprecation") final class EntityScheduleManager1_14_R1 implements EntityScheduleManager { private final EntityInsentient nmsMob; diff --git a/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/NBTSection1_14_R1.java b/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/NBTSection1_14_R1.java index 506c4d374..0d16be862 100644 --- a/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/NBTSection1_14_R1.java +++ b/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/NBTSection1_14_R1.java @@ -329,7 +329,7 @@ public void set(@Nullable String key, @Nullable Object value) { @Override public boolean isSet(@Nullable String key) { - return false; + return tag.hasKey(key); } @Override diff --git a/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/NavigationPath1_14_R1.java b/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/NavigationPath1_14_R1.java index 5feb8797a..c73ecb735 100644 --- a/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/NavigationPath1_14_R1.java +++ b/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/NavigationPath1_14_R1.java @@ -1,5 +1,6 @@ package me.gamercoder215.mobchip.abstraction.v1_14_R1; +import me.gamercoder215.mobchip.abstraction.ChipUtil; import me.gamercoder215.mobchip.ai.navigation.NavigationPath; import me.gamercoder215.mobchip.util.Position; import net.minecraft.server.v1_14_R1.PathEntity; @@ -8,9 +9,12 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.Arrays; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; final class NavigationPath1_14_R1 implements NavigationPath { private String name; @@ -23,6 +27,9 @@ public NavigationPath1_14_R1(@NotNull PathEntity nms, @NotNull Mob m, double spe this.name = "bukkitpath"; this.handle = nms; this.speedMod = speedMod; + this.nodes.addAll(handle.d().stream() + .map(ChipUtil1_14_R1::fromNMS) + .collect(Collectors.toSet())); } private final List nodes = new ArrayList<>(); diff --git a/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderCatOnBed.java b/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderCatOnBed.java index daae25d48..5798391e0 100644 --- a/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderCatOnBed.java +++ b/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderCatOnBed.java @@ -35,7 +35,7 @@ public PathfinderCatOnBed(@NotNull Cat cat, double speedMod, int range) { } @Override - public Cat getEntity() { return (Cat) entity; } + public @NotNull Cat getEntity() { return (Cat) entity; } @Override public float getRange() { diff --git a/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderCatOnBlock.java b/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderCatOnBlock.java index a3f587e99..737a2aab8 100644 --- a/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderCatOnBlock.java +++ b/nms/1_14_R1/src/main/java/me/gamercoder215/mobchip/ai/goal/PathfinderCatOnBlock.java @@ -38,7 +38,7 @@ public void setSpeedModifier(double mod) { } @Override - public Cat getEntity() { return (Cat) entity; } + public @NotNull Cat getEntity() { return (Cat) entity; } @Override public String getInternalName() { return "PathfinderGoalJumpOnBlock"; } diff --git a/nms/1_14_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/OptimizedSmallEnumSet1_14_R1.java b/nms/1_14_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/OptimizedSmallEnumSet1_14_R1.java index 7b7c4b116..7dc375b62 100644 --- a/nms/1_14_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/OptimizedSmallEnumSet1_14_R1.java +++ b/nms/1_14_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_14_R1/OptimizedSmallEnumSet1_14_R1.java @@ -4,7 +4,6 @@ // Used for Testing Purposes public final class OptimizedSmallEnumSet1_14_R1> { - private final Class enumClass; private long backingSet; public OptimizedSmallEnumSet1_14_R1(Class clazz) { @@ -13,7 +12,6 @@ public OptimizedSmallEnumSet1_14_R1(Class clazz) { } else if (!clazz.isEnum()) { throw new IllegalArgumentException("Class must be enum, not " + clazz.getCanonicalName()); } else { - this.enumClass = clazz; } } diff --git a/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/ChipUtil1_15_R1.java b/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/ChipUtil1_15_R1.java index d74d790c7..d49fbe0db 100644 --- a/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/ChipUtil1_15_R1.java +++ b/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/ChipUtil1_15_R1.java @@ -22,6 +22,7 @@ import me.gamercoder215.mobchip.combat.CombatLocation; import me.gamercoder215.mobchip.combat.EntityCombatTracker; import me.gamercoder215.mobchip.nbt.EntityNBT; +import me.gamercoder215.mobchip.util.Position; import net.minecraft.server.v1_15_R1.*; import org.bukkit.World; import org.bukkit.*; @@ -1544,4 +1545,8 @@ public EnderCrystal getNearestCrystal(EnderDragon d) { return (EnderCrystal) nms.currentEnderCrystal.getBukkitEntity(); } + public static Position fromNMS(PathPoint point) { + return new Position(point.a, point.b, point.c); + } + } diff --git a/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/EntityNBT1_15_R1.java b/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/EntityNBT1_15_R1.java index 27ee59d0f..f74ecb8d9 100644 --- a/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/EntityNBT1_15_R1.java +++ b/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/EntityNBT1_15_R1.java @@ -9,15 +9,12 @@ final class EntityNBT1_15_R1 extends NBTSection1_15_R1 implements EntityNBT { private final Mob mob; - private final EntityInsentient handle; - - private final NBTTagCompound root; public EntityNBT1_15_R1(Mob m) { super(m); this.mob = m; - this.handle = ChipUtil1_15_R1.toNMS(m); - this.root = new NBTTagCompound(); + EntityInsentient handle = ChipUtil1_15_R1.toNMS(m); + NBTTagCompound root = new NBTTagCompound(); handle.d(root); } diff --git a/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/EntityScheduleManager1_15_R1.java b/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/EntityScheduleManager1_15_R1.java index 17caf6bf2..6ab0fefad 100644 --- a/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/EntityScheduleManager1_15_R1.java +++ b/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/EntityScheduleManager1_15_R1.java @@ -12,6 +12,7 @@ import java.util.Set; import java.util.function.Consumer; +@SuppressWarnings("deprecation") final class EntityScheduleManager1_15_R1 implements EntityScheduleManager { private final EntityInsentient nmsMob; diff --git a/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/NBTSection1_15_R1.java b/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/NBTSection1_15_R1.java index ecc9cb48b..6ae2214b0 100644 --- a/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/NBTSection1_15_R1.java +++ b/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/NBTSection1_15_R1.java @@ -329,7 +329,7 @@ public void set(@Nullable String key, @Nullable Object value) { @Override public boolean isSet(@Nullable String key) { - return false; + return tag.hasKey(key); } @Override diff --git a/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/NavigationPath1_15_R1.java b/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/NavigationPath1_15_R1.java index 02500a12e..d3069042e 100644 --- a/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/NavigationPath1_15_R1.java +++ b/nms/1_15_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/NavigationPath1_15_R1.java @@ -11,6 +11,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; final class NavigationPath1_15_R1 implements NavigationPath { private String name; @@ -23,6 +24,9 @@ public NavigationPath1_15_R1(@NotNull PathEntity nms, @NotNull Mob m, double spe this.name = "bukkitpath"; this.handle = nms; this.speedMod = speedMod; + this.nodes.addAll(handle.d().stream() + .map(ChipUtil1_15_R1::fromNMS) + .collect(Collectors.toSet())); } private final List nodes = new ArrayList<>(); diff --git a/nms/1_15_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/OptimizedSmallEnumSet1_15_R1.java b/nms/1_15_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/OptimizedSmallEnumSet1_15_R1.java index f79ff5659..29e0c8716 100644 --- a/nms/1_15_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/OptimizedSmallEnumSet1_15_R1.java +++ b/nms/1_15_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_15_R1/OptimizedSmallEnumSet1_15_R1.java @@ -4,7 +4,6 @@ // Used for Testing Purposes public final class OptimizedSmallEnumSet1_15_R1> { - private final Class enumClass; private long backingSet; public OptimizedSmallEnumSet1_15_R1(Class clazz) { @@ -13,7 +12,6 @@ public OptimizedSmallEnumSet1_15_R1(Class clazz) { } else if (!clazz.isEnum()) { throw new IllegalArgumentException("Class must be enum, not " + clazz.getCanonicalName()); } else { - this.enumClass = clazz; } } diff --git a/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/ChipUtil1_16_R1.java b/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/ChipUtil1_16_R1.java index 2f7a7b4a6..66a1a29f4 100644 --- a/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/ChipUtil1_16_R1.java +++ b/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/ChipUtil1_16_R1.java @@ -22,6 +22,7 @@ import me.gamercoder215.mobchip.combat.CombatLocation; import me.gamercoder215.mobchip.combat.EntityCombatTracker; import me.gamercoder215.mobchip.nbt.EntityNBT; +import me.gamercoder215.mobchip.util.Position; import net.minecraft.server.v1_16_R1.*; import org.bukkit.World; import org.bukkit.*; @@ -1584,4 +1585,8 @@ public EnderCrystal getNearestCrystal(EnderDragon d) { return (EnderCrystal) nms.currentEnderCrystal.getBukkitEntity(); } + public static Position fromNMS(PathPoint point) { + return new Position(point.a, point.b, point.c); + } + } diff --git a/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/EntityNBT1_16_R1.java b/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/EntityNBT1_16_R1.java index 6ca0c21f1..7e304e00f 100644 --- a/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/EntityNBT1_16_R1.java +++ b/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/EntityNBT1_16_R1.java @@ -9,15 +9,12 @@ final class EntityNBT1_16_R1 extends NBTSection1_16_R1 implements EntityNBT { private final Mob mob; - private final EntityInsentient handle; - - private final NBTTagCompound root; public EntityNBT1_16_R1(Mob m) { super(m); this.mob = m; - this.handle = ChipUtil1_16_R1.toNMS(m); - this.root = new NBTTagCompound(); + EntityInsentient handle = ChipUtil1_16_R1.toNMS(m); + NBTTagCompound root = new NBTTagCompound(); handle.d(root); } diff --git a/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/EntityScheduleManager1_16_R1.java b/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/EntityScheduleManager1_16_R1.java index 427b0a2f5..6703180ba 100644 --- a/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/EntityScheduleManager1_16_R1.java +++ b/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/EntityScheduleManager1_16_R1.java @@ -11,6 +11,7 @@ import java.util.Set; import java.util.function.Consumer; +@SuppressWarnings("deprecation") final class EntityScheduleManager1_16_R1 implements EntityScheduleManager { private final EntityInsentient nmsMob; diff --git a/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/NBTSection1_16_R1.java b/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/NBTSection1_16_R1.java index b43889889..f8fd6c0ad 100644 --- a/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/NBTSection1_16_R1.java +++ b/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/NBTSection1_16_R1.java @@ -329,7 +329,7 @@ public void set(@Nullable String key, @Nullable Object value) { @Override public boolean isSet(@Nullable String key) { - return false; + return tag.hasKey(key); } @Override diff --git a/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/NavigationPath1_16_R1.java b/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/NavigationPath1_16_R1.java index 6f9314de4..96714e7a9 100644 --- a/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/NavigationPath1_16_R1.java +++ b/nms/1_16_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/NavigationPath1_16_R1.java @@ -11,6 +11,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; final class NavigationPath1_16_R1 implements NavigationPath { private String name; @@ -23,6 +24,9 @@ public NavigationPath1_16_R1(@NotNull PathEntity nms, @NotNull Mob m, double spe this.name = "bukkitpath"; this.handle = nms; this.speedMod = speedMod; + this.nodes.addAll(handle.d().stream() + .map(ChipUtil1_16_R1::fromNMS) + .collect(Collectors.toSet())); } private final List nodes = new ArrayList<>(); diff --git a/nms/1_16_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/OptimizedSmallEnumSet1_16_R1.java b/nms/1_16_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/OptimizedSmallEnumSet1_16_R1.java index 06648eae6..083f136de 100644 --- a/nms/1_16_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/OptimizedSmallEnumSet1_16_R1.java +++ b/nms/1_16_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_16_R1/OptimizedSmallEnumSet1_16_R1.java @@ -4,7 +4,6 @@ // Used for Testing Purposes public final class OptimizedSmallEnumSet1_16_R1> { - private final Class enumClass; private long backingSet; public OptimizedSmallEnumSet1_16_R1(Class clazz) { @@ -13,7 +12,6 @@ public OptimizedSmallEnumSet1_16_R1(Class clazz) { } else if (!clazz.isEnum()) { throw new IllegalArgumentException("Class must be enum, not " + clazz.getCanonicalName()); } else { - this.enumClass = clazz; } } diff --git a/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/ChipUtil1_16_R2.java b/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/ChipUtil1_16_R2.java index adc70d565..cb1a8f5b3 100644 --- a/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/ChipUtil1_16_R2.java +++ b/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/ChipUtil1_16_R2.java @@ -23,6 +23,7 @@ import me.gamercoder215.mobchip.combat.CombatLocation; import me.gamercoder215.mobchip.combat.EntityCombatTracker; import me.gamercoder215.mobchip.nbt.EntityNBT; +import me.gamercoder215.mobchip.util.Position; import net.minecraft.server.v1_16_R2.*; import org.bukkit.World; import org.bukkit.*; @@ -1580,4 +1581,8 @@ public EnderCrystal getNearestCrystal(EnderDragon d) { return (EnderCrystal) nms.currentEnderCrystal.getBukkitEntity(); } + public static Position fromNMS(PathPoint point) { + return new Position(point.a, point.b, point.c); + } + } diff --git a/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/EntityNBT1_16_R2.java b/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/EntityNBT1_16_R2.java index 4c9094b1f..eaf6e40bb 100644 --- a/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/EntityNBT1_16_R2.java +++ b/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/EntityNBT1_16_R2.java @@ -9,15 +9,12 @@ final class EntityNBT1_16_R2 extends NBTSection1_16_R2 implements EntityNBT { private final Mob mob; - private final EntityInsentient handle; - - private final NBTTagCompound root; public EntityNBT1_16_R2(Mob m) { super(m); this.mob = m; - this.handle = ChipUtil1_16_R2.toNMS(m); - this.root = new NBTTagCompound(); + EntityInsentient handle = ChipUtil1_16_R2.toNMS(m); + NBTTagCompound root = new NBTTagCompound(); handle.d(root); } diff --git a/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/EntityScheduleManager1_16_R2.java b/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/EntityScheduleManager1_16_R2.java index a8a347c94..2d4d83a97 100644 --- a/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/EntityScheduleManager1_16_R2.java +++ b/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/EntityScheduleManager1_16_R2.java @@ -11,6 +11,7 @@ import java.util.Set; import java.util.function.Consumer; +@SuppressWarnings("deprecation") final class EntityScheduleManager1_16_R2 implements EntityScheduleManager { private final EntityInsentient nmsMob; diff --git a/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/NBTSection1_16_R2.java b/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/NBTSection1_16_R2.java index 26c9bf01a..c35f92fe1 100644 --- a/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/NBTSection1_16_R2.java +++ b/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/NBTSection1_16_R2.java @@ -329,7 +329,7 @@ public void set(@Nullable String key, @Nullable Object value) { @Override public boolean isSet(@Nullable String key) { - return false; + return tag.hasKey(key); } @Override diff --git a/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/NavigationPath1_16_R2.java b/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/NavigationPath1_16_R2.java index fb0172945..e2427ac02 100644 --- a/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/NavigationPath1_16_R2.java +++ b/nms/1_16_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/NavigationPath1_16_R2.java @@ -1,5 +1,6 @@ package me.gamercoder215.mobchip.abstraction.v1_16_R2; +import me.gamercoder215.mobchip.abstraction.ChipUtil; import me.gamercoder215.mobchip.ai.navigation.NavigationPath; import me.gamercoder215.mobchip.util.Position; import net.minecraft.server.v1_16_R2.PathEntity; @@ -8,10 +9,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; +@SuppressWarnings("unchecked") final class NavigationPath1_16_R2 implements NavigationPath { private String name; private final Mob m; @@ -23,6 +27,18 @@ public NavigationPath1_16_R2(@NotNull PathEntity nms, @NotNull Mob m, double spe this.name = "bukkitpath"; this.handle = nms; this.speedMod = speedMod; + + try { + Field points = this.handle.getClass().getDeclaredField("a"); + points.setAccessible(true); + List pathPoints = (List) points.get(this.handle); + + nodes.addAll(pathPoints.stream() + .map(ChipUtil1_16_R2::fromNMS) + .collect(Collectors.toSet())); + } catch (ReflectiveOperationException e) { + ChipUtil.printStackTrace(e); + } } private final List nodes = new ArrayList<>(); diff --git a/nms/1_16_R2/src/test/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/OptimizedSmallEnumSet1_16_R2.java b/nms/1_16_R2/src/test/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/OptimizedSmallEnumSet1_16_R2.java index 2856d5ebf..5c48e769c 100644 --- a/nms/1_16_R2/src/test/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/OptimizedSmallEnumSet1_16_R2.java +++ b/nms/1_16_R2/src/test/java/me/gamercoder215/mobchip/abstraction/v1_16_R2/OptimizedSmallEnumSet1_16_R2.java @@ -4,7 +4,6 @@ // Used for Testing Purposes public final class OptimizedSmallEnumSet1_16_R2> { - private final Class enumClass; private long backingSet; public OptimizedSmallEnumSet1_16_R2(Class clazz) { @@ -13,7 +12,6 @@ public OptimizedSmallEnumSet1_16_R2(Class clazz) { } else if (!clazz.isEnum()) { throw new IllegalArgumentException("Class must be enum, not " + clazz.getCanonicalName()); } else { - this.enumClass = clazz; } } diff --git a/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/ChipUtil1_16_R3.java b/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/ChipUtil1_16_R3.java index 06ca9c150..1d548805a 100644 --- a/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/ChipUtil1_16_R3.java +++ b/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/ChipUtil1_16_R3.java @@ -25,6 +25,7 @@ import me.gamercoder215.mobchip.combat.CombatLocation; import me.gamercoder215.mobchip.combat.EntityCombatTracker; import me.gamercoder215.mobchip.nbt.EntityNBT; +import me.gamercoder215.mobchip.util.Position; import net.minecraft.server.v1_16_R3.*; import org.bukkit.World; import org.bukkit.*; @@ -1559,4 +1560,8 @@ public EnderCrystal getNearestCrystal(EnderDragon d) { return (EnderCrystal) nms.currentEnderCrystal.getBukkitEntity(); } + public static Position fromNMS(PathPoint point) { + return new Position(point.a, point.b, point.c); + } + } diff --git a/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/EntityNBT1_16_R3.java b/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/EntityNBT1_16_R3.java index c4c173541..3d9f0aea0 100644 --- a/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/EntityNBT1_16_R3.java +++ b/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/EntityNBT1_16_R3.java @@ -9,15 +9,12 @@ final class EntityNBT1_16_R3 extends NBTSection1_16_R3 implements EntityNBT { private final Mob mob; - private final EntityInsentient handle; - - private final NBTTagCompound root; public EntityNBT1_16_R3(Mob m) { super(m); this.mob = m; - this.handle = ChipUtil1_16_R3.toNMS(m); - this.root = new NBTTagCompound(); + EntityInsentient handle = ChipUtil1_16_R3.toNMS(m); + NBTTagCompound root = new NBTTagCompound(); handle.d(root); } diff --git a/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/EntityScheduleManager1_16_R3.java b/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/EntityScheduleManager1_16_R3.java index 4588b61d4..75bd75374 100644 --- a/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/EntityScheduleManager1_16_R3.java +++ b/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/EntityScheduleManager1_16_R3.java @@ -11,6 +11,7 @@ import java.util.Set; import java.util.function.Consumer; +@SuppressWarnings("deprecation") final class EntityScheduleManager1_16_R3 implements EntityScheduleManager { private final EntityInsentient nmsMob; diff --git a/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/NBTSection1_16_R3.java b/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/NBTSection1_16_R3.java index 3330d34b1..5ef0f75ab 100644 --- a/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/NBTSection1_16_R3.java +++ b/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/NBTSection1_16_R3.java @@ -329,7 +329,7 @@ public void set(@Nullable String key, @Nullable Object value) { @Override public boolean isSet(@Nullable String key) { - return false; + return tag.hasKey(key); } @Override diff --git a/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/NavigationPath1_16_R3.java b/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/NavigationPath1_16_R3.java index 629dd16b0..e193acd00 100644 --- a/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/NavigationPath1_16_R3.java +++ b/nms/1_16_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/NavigationPath1_16_R3.java @@ -1,5 +1,6 @@ package me.gamercoder215.mobchip.abstraction.v1_16_R3; +import me.gamercoder215.mobchip.abstraction.ChipUtil; import me.gamercoder215.mobchip.ai.navigation.NavigationPath; import me.gamercoder215.mobchip.util.Position; import net.minecraft.server.v1_16_R3.PathEntity; @@ -8,10 +9,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; +@SuppressWarnings("unchecked") final class NavigationPath1_16_R3 implements NavigationPath { private String name; private final Mob m; @@ -23,6 +27,18 @@ public NavigationPath1_16_R3(@NotNull PathEntity nms, @NotNull Mob m, double spe this.name = "bukkitpath"; this.handle = nms; this.speedMod = speedMod; + + try { + Field points = this.handle.getClass().getDeclaredField("a"); + points.setAccessible(true); + List pathPoints = (List) points.get(this.handle); + + nodes.addAll(pathPoints.stream() + .map(ChipUtil1_16_R3::fromNMS) + .collect(Collectors.toSet())); + } catch (ReflectiveOperationException e) { + ChipUtil.printStackTrace(e); + } } private final List nodes = new ArrayList<>(); diff --git a/nms/1_16_R3/src/test/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/OptimizedSmallEnumSet1_16_R3.java b/nms/1_16_R3/src/test/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/OptimizedSmallEnumSet1_16_R3.java index 9345ac283..51f162359 100644 --- a/nms/1_16_R3/src/test/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/OptimizedSmallEnumSet1_16_R3.java +++ b/nms/1_16_R3/src/test/java/me/gamercoder215/mobchip/abstraction/v1_16_R3/OptimizedSmallEnumSet1_16_R3.java @@ -4,7 +4,6 @@ // Used for Testing Purposes public final class OptimizedSmallEnumSet1_16_R3> { - private final Class enumClass; private long backingSet; public OptimizedSmallEnumSet1_16_R3(Class clazz) { @@ -13,7 +12,6 @@ public OptimizedSmallEnumSet1_16_R3(Class clazz) { } else if (!clazz.isEnum()) { throw new IllegalArgumentException("Class must be enum, not " + clazz.getCanonicalName()); } else { - this.enumClass = clazz; } } diff --git a/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/ChipUtil1_17_R1.java b/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/ChipUtil1_17_R1.java index 1276d73cc..997d5ba79 100644 --- a/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/ChipUtil1_17_R1.java +++ b/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/ChipUtil1_17_R1.java @@ -28,6 +28,7 @@ import me.gamercoder215.mobchip.combat.CombatLocation; import me.gamercoder215.mobchip.combat.EntityCombatTracker; import me.gamercoder215.mobchip.nbt.EntityNBT; +import me.gamercoder215.mobchip.util.Position; import net.minecraft.core.*; import net.minecraft.resources.MinecraftKey; import net.minecraft.resources.ResourceKey; @@ -74,6 +75,7 @@ import net.minecraft.world.item.crafting.RecipeItemStack; import net.minecraft.world.level.IBlockAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.pathfinder.PathPoint; import net.minecraft.world.phys.Vec3D; import org.bukkit.*; import org.bukkit.craftbukkit.v1_17_R1.CraftServer; @@ -1630,4 +1632,8 @@ public EnderCrystal getNearestCrystal(EnderDragon d) { return (EnderCrystal) nms.bY.getBukkitEntity(); } + public static Position fromNMS(PathPoint point) { + return new Position(point.a, point.b, point.c); + } + } diff --git a/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/EntityNBT1_17_R1.java b/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/EntityNBT1_17_R1.java index 4afd80b4d..aafe4acb2 100644 --- a/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/EntityNBT1_17_R1.java +++ b/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/EntityNBT1_17_R1.java @@ -9,15 +9,12 @@ final class EntityNBT1_17_R1 extends NBTSection1_17_R1 implements EntityNBT { private final Mob mob; - private final EntityInsentient handle; - - private final NBTTagCompound root; public EntityNBT1_17_R1(Mob m) { super(m); this.mob = m; - this.handle = ChipUtil1_17_R1.toNMS(m); - this.root = new NBTTagCompound(); + EntityInsentient handle = ChipUtil1_17_R1.toNMS(m); + NBTTagCompound root = new NBTTagCompound(); handle.d(root); } diff --git a/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/EntityScheduleManager1_17_R1.java b/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/EntityScheduleManager1_17_R1.java index fd01d76bc..d5713dc43 100644 --- a/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/EntityScheduleManager1_17_R1.java +++ b/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/EntityScheduleManager1_17_R1.java @@ -13,6 +13,7 @@ import java.util.function.Consumer; import java.util.stream.Collectors; +@SuppressWarnings("deprecation") final class EntityScheduleManager1_17_R1 implements EntityScheduleManager { private final EntityInsentient nmsMob; diff --git a/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/NBTSection1_17_R1.java b/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/NBTSection1_17_R1.java index 6bb483f79..80694acd0 100644 --- a/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/NBTSection1_17_R1.java +++ b/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/NBTSection1_17_R1.java @@ -324,7 +324,7 @@ public void set(@Nullable String key, @Nullable Object value) { @Override public boolean isSet(@Nullable String key) { - return false; + return tag.hasKey(key); } @Override diff --git a/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/NavigationPath1_17_R1.java b/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/NavigationPath1_17_R1.java index f1b5576d8..79a96dab0 100644 --- a/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/NavigationPath1_17_R1.java +++ b/nms/1_17_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/NavigationPath1_17_R1.java @@ -1,5 +1,6 @@ package me.gamercoder215.mobchip.abstraction.v1_17_R1; +import me.gamercoder215.mobchip.abstraction.ChipUtil; import me.gamercoder215.mobchip.ai.navigation.NavigationPath; import me.gamercoder215.mobchip.util.Position; import net.minecraft.world.level.pathfinder.PathEntity; @@ -8,10 +9,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; +@SuppressWarnings("unchecked") final class NavigationPath1_17_R1 implements NavigationPath { private String name; private final Mob m; @@ -23,6 +27,18 @@ public NavigationPath1_17_R1(@NotNull PathEntity nms, @NotNull Mob m, double spe this.name = "bukkitpath"; this.handle = nms; this.speedMod = speedMod; + + try { + Field points = this.handle.getClass().getDeclaredField("a"); + points.setAccessible(true); + List pathPoints = (List) points.get(this.handle); + + nodes.addAll(pathPoints.stream() + .map(ChipUtil1_17_R1::fromNMS) + .collect(Collectors.toSet())); + } catch (ReflectiveOperationException e) { + ChipUtil.printStackTrace(e); + } } private final List nodes = new ArrayList<>(); diff --git a/nms/1_17_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/OptimizedSmallEnumSet1_17_R1.java b/nms/1_17_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/OptimizedSmallEnumSet1_17_R1.java index df029f12a..ed03f8ec6 100644 --- a/nms/1_17_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/OptimizedSmallEnumSet1_17_R1.java +++ b/nms/1_17_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_17_R1/OptimizedSmallEnumSet1_17_R1.java @@ -4,7 +4,6 @@ // Used for Testing Purposes public final class OptimizedSmallEnumSet1_17_R1> { - private final Class enumClass; private long backingSet; public OptimizedSmallEnumSet1_17_R1(Class clazz) { @@ -13,7 +12,6 @@ public OptimizedSmallEnumSet1_17_R1(Class clazz) { } else if (!clazz.isEnum()) { throw new IllegalArgumentException("Class must be enum, not " + clazz.getCanonicalName()); } else { - this.enumClass = clazz; } } diff --git a/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/ChipUtil1_18_R1.java b/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/ChipUtil1_18_R1.java index 20ff7d05b..189d812c3 100644 --- a/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/ChipUtil1_18_R1.java +++ b/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/ChipUtil1_18_R1.java @@ -28,6 +28,7 @@ import me.gamercoder215.mobchip.combat.CombatLocation; import me.gamercoder215.mobchip.combat.EntityCombatTracker; import me.gamercoder215.mobchip.nbt.EntityNBT; +import me.gamercoder215.mobchip.util.Position; import net.minecraft.core.BlockPos; import net.minecraft.core.GlobalPos; import net.minecraft.core.Registry; @@ -69,6 +70,7 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.pathfinder.Node; import net.minecraft.world.phys.Vec3; import org.bukkit.*; import org.bukkit.craftbukkit.v1_18_R1.CraftServer; @@ -1624,4 +1626,8 @@ public EnderCrystal getNearestCrystal(EnderDragon d) { if (nms.nearestCrystal == null) return null; return (EnderCrystal) nms.nearestCrystal.getBukkitEntity(); } + + public static Position fromNMS(Node point) { + return new Position(point.x, point.y, point.z); + } } diff --git a/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/DragonPhase1_18_R1.java b/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/DragonPhase1_18_R1.java index 20f0c52f8..fa33b8b0c 100644 --- a/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/DragonPhase1_18_R1.java +++ b/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/DragonPhase1_18_R1.java @@ -58,7 +58,7 @@ public float getFlyingSpeed() { } @Override - public NamespacedKey getKey() { + public @NotNull NamespacedKey getKey() { return NamespacedKey.minecraft(handle.toString().split(" ")[0].toLowerCase()); } } diff --git a/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/EntityNBT1_18_R1.java b/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/EntityNBT1_18_R1.java index fbdf7990c..39ff953c3 100644 --- a/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/EntityNBT1_18_R1.java +++ b/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/EntityNBT1_18_R1.java @@ -8,15 +8,12 @@ final class EntityNBT1_18_R1 extends NBTSection1_18_R1 implements EntityNBT { private final Mob mob; - private final net.minecraft.world.entity.Mob handle; - - private final CompoundTag root; public EntityNBT1_18_R1(Mob m) { super(m); this.mob = m; - this.handle = ChipUtil1_18_R1.toNMS(m); - this.root = new CompoundTag(); + net.minecraft.world.entity.Mob handle = ChipUtil1_18_R1.toNMS(m); + CompoundTag root = new CompoundTag(); handle.saveWithoutId(root); } diff --git a/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/NBTSection1_18_R1.java b/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/NBTSection1_18_R1.java index c52bf2f25..22aa5f951 100644 --- a/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/NBTSection1_18_R1.java +++ b/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/NBTSection1_18_R1.java @@ -325,7 +325,7 @@ public void set(@Nullable String key, @Nullable Object value) { @Override public boolean isSet(@Nullable String key) { - return false; + return tag.contains(key); } @Override diff --git a/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/NavigationPath1_18_R1.java b/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/NavigationPath1_18_R1.java index e5c7b3a1b..ebfb67c97 100644 --- a/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/NavigationPath1_18_R1.java +++ b/nms/1_18_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/NavigationPath1_18_R1.java @@ -1,5 +1,6 @@ package me.gamercoder215.mobchip.abstraction.v1_18_R1; +import me.gamercoder215.mobchip.abstraction.ChipUtil; import me.gamercoder215.mobchip.ai.navigation.NavigationPath; import me.gamercoder215.mobchip.util.Position; import net.minecraft.world.level.pathfinder.Node; @@ -8,10 +9,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; +@SuppressWarnings("unchecked") final class NavigationPath1_18_R1 implements NavigationPath { private String name; private final Mob m; @@ -23,6 +27,18 @@ public NavigationPath1_18_R1(@NotNull Path nms, @NotNull Mob m, double speedMod) this.name = "bukkitpath"; this.handle = nms; this.speedMod = speedMod; + + try { + Field points = this.handle.getClass().getDeclaredField("a"); + points.setAccessible(true); + List pathPoints = (List) points.get(this.handle); + + nodes.addAll(pathPoints.stream() + .map(ChipUtil1_18_R1::fromNMS) + .collect(Collectors.toSet())); + } catch (ReflectiveOperationException e) { + ChipUtil.printStackTrace(e); + } } private final List nodes = new ArrayList<>(); diff --git a/nms/1_18_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/OptimizedSmallEnumSet1_18_R1.java b/nms/1_18_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/OptimizedSmallEnumSet1_18_R1.java index 4005f53d9..b474da00e 100644 --- a/nms/1_18_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/OptimizedSmallEnumSet1_18_R1.java +++ b/nms/1_18_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_18_R1/OptimizedSmallEnumSet1_18_R1.java @@ -4,7 +4,6 @@ // Used for Testing Purposes public final class OptimizedSmallEnumSet1_18_R1> { - private final Class enumClass; private long backingSet; public OptimizedSmallEnumSet1_18_R1(Class clazz) { @@ -13,7 +12,6 @@ public OptimizedSmallEnumSet1_18_R1(Class clazz) { } else if (!clazz.isEnum()) { throw new IllegalArgumentException("Class must be enum, not " + clazz.getCanonicalName()); } else { - this.enumClass = clazz; } } diff --git a/nms/1_18_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/ChipUtil1_18_R2.java b/nms/1_18_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/ChipUtil1_18_R2.java index d0284f4fa..a590af958 100644 --- a/nms/1_18_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/ChipUtil1_18_R2.java +++ b/nms/1_18_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/ChipUtil1_18_R2.java @@ -67,6 +67,7 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.pathfinder.Node; import net.minecraft.world.phys.Vec3; import org.bukkit.*; import org.bukkit.craftbukkit.v1_18_R2.CraftServer; @@ -1645,4 +1646,8 @@ public EnderCrystal getNearestCrystal(EnderDragon d) { if (nms.nearestCrystal == null) return null; return (EnderCrystal) nms.nearestCrystal.getBukkitEntity(); } + + public static me.gamercoder215.mobchip.util.Position fromNMS(Node point) { + return new me.gamercoder215.mobchip.util.Position(point.x, point.y, point.z); + } } diff --git a/nms/1_18_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/EntityNBT1_18_R2.java b/nms/1_18_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/EntityNBT1_18_R2.java index 13437e7b0..9361ffc4d 100644 --- a/nms/1_18_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/EntityNBT1_18_R2.java +++ b/nms/1_18_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/EntityNBT1_18_R2.java @@ -8,15 +8,12 @@ final class EntityNBT1_18_R2 extends NBTSection1_18_R2 implements EntityNBT { private final Mob mob; - private final net.minecraft.world.entity.Mob handle; - - private final CompoundTag root; public EntityNBT1_18_R2(Mob m) { super(m); this.mob = m; - this.handle = ChipUtil1_18_R2.toNMS(m); - this.root = new CompoundTag(); + net.minecraft.world.entity.Mob handle = ChipUtil1_18_R2.toNMS(m); + CompoundTag root = new CompoundTag(); handle.saveWithoutId(root); } diff --git a/nms/1_18_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/NBTSection1_18_R2.java b/nms/1_18_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/NBTSection1_18_R2.java index 09ab481ef..e01657dcb 100644 --- a/nms/1_18_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/NBTSection1_18_R2.java +++ b/nms/1_18_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/NBTSection1_18_R2.java @@ -325,7 +325,7 @@ public void set(@Nullable String key, @Nullable Object value) { @Override public boolean isSet(@Nullable String key) { - return false; + return tag.contains(key); } @Override diff --git a/nms/1_18_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/NavigationPath1_18_R2.java b/nms/1_18_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/NavigationPath1_18_R2.java index 4823c6502..3e9b0308b 100644 --- a/nms/1_18_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/NavigationPath1_18_R2.java +++ b/nms/1_18_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/NavigationPath1_18_R2.java @@ -1,5 +1,6 @@ package me.gamercoder215.mobchip.abstraction.v1_18_R2; +import me.gamercoder215.mobchip.abstraction.ChipUtil; import me.gamercoder215.mobchip.ai.navigation.NavigationPath; import me.gamercoder215.mobchip.util.Position; import net.minecraft.world.level.pathfinder.Node; @@ -8,10 +9,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; +@SuppressWarnings("unchecked") final class NavigationPath1_18_R2 implements NavigationPath { private String name; private final Mob m; @@ -23,6 +27,18 @@ public NavigationPath1_18_R2(@NotNull Path nms, @NotNull Mob m, double speedMod) this.name = "bukkitpath"; this.handle = nms; this.speedMod = speedMod; + + try { + Field points = this.handle.getClass().getDeclaredField("a"); + points.setAccessible(true); + List pathPoints = (List) points.get(this.handle); + + nodes.addAll(pathPoints.stream() + .map(ChipUtil1_18_R2::fromNMS) + .collect(Collectors.toSet())); + } catch (ReflectiveOperationException e) { + ChipUtil.printStackTrace(e); + } } private final List nodes = new ArrayList<>(); diff --git a/nms/1_18_R2/src/test/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/OptimizedSmallEnumSet1_18_R2.java b/nms/1_18_R2/src/test/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/OptimizedSmallEnumSet1_18_R2.java index 2be8d907c..9765e1714 100644 --- a/nms/1_18_R2/src/test/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/OptimizedSmallEnumSet1_18_R2.java +++ b/nms/1_18_R2/src/test/java/me/gamercoder215/mobchip/abstraction/v1_18_R2/OptimizedSmallEnumSet1_18_R2.java @@ -4,7 +4,6 @@ // Used for Testing Purposes public final class OptimizedSmallEnumSet1_18_R2> { - private final Class enumClass; private long backingSet; public OptimizedSmallEnumSet1_18_R2(Class clazz) { @@ -13,7 +12,6 @@ public OptimizedSmallEnumSet1_18_R2(Class clazz) { } else if (!clazz.isEnum()) { throw new IllegalArgumentException("Class must be enum, not " + clazz.getCanonicalName()); } else { - this.enumClass = clazz; } } diff --git a/nms/1_19_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/ChipUtil1_19_R1.java b/nms/1_19_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/ChipUtil1_19_R1.java index 6d495ad22..7b63f2449 100644 --- a/nms/1_19_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/ChipUtil1_19_R1.java +++ b/nms/1_19_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/ChipUtil1_19_R1.java @@ -71,6 +71,7 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.pathfinder.Node; import net.minecraft.world.phys.Vec3; import org.bukkit.*; import org.bukkit.craftbukkit.v1_19_R1.CraftServer; @@ -1680,4 +1681,8 @@ public EnderCrystal getNearestCrystal(EnderDragon d) { return (EnderCrystal) nms.nearestCrystal.getBukkitEntity(); } + public static me.gamercoder215.mobchip.util.Position fromNMS(Node point) { + return new me.gamercoder215.mobchip.util.Position(point.x, point.y, point.z); + } + } \ No newline at end of file diff --git a/nms/1_19_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/EntityNBT1_19_R1.java b/nms/1_19_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/EntityNBT1_19_R1.java index ee6b7a839..c402cc32b 100644 --- a/nms/1_19_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/EntityNBT1_19_R1.java +++ b/nms/1_19_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/EntityNBT1_19_R1.java @@ -8,15 +8,12 @@ final class EntityNBT1_19_R1 extends NBTSection1_19_R1 implements EntityNBT { private final Mob mob; - private final net.minecraft.world.entity.Mob handle; - - private final CompoundTag root; public EntityNBT1_19_R1(Mob m) { super(m); this.mob = m; - this.handle = ChipUtil1_19_R1.toNMS(m); - this.root = new CompoundTag(); + net.minecraft.world.entity.Mob handle = ChipUtil1_19_R1.toNMS(m); + CompoundTag root = new CompoundTag(); handle.saveWithoutId(root); } diff --git a/nms/1_19_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/NBTSection1_19_R1.java b/nms/1_19_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/NBTSection1_19_R1.java index d52a4a61a..352dcd564 100644 --- a/nms/1_19_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/NBTSection1_19_R1.java +++ b/nms/1_19_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/NBTSection1_19_R1.java @@ -325,7 +325,7 @@ public void set(@Nullable String key, @Nullable Object value) { @Override public boolean isSet(@Nullable String key) { - return false; + return tag.contains(key); } @Override diff --git a/nms/1_19_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/NavigationPath1_19_R1.java b/nms/1_19_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/NavigationPath1_19_R1.java index 193034617..48405c2d7 100644 --- a/nms/1_19_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/NavigationPath1_19_R1.java +++ b/nms/1_19_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/NavigationPath1_19_R1.java @@ -1,5 +1,6 @@ package me.gamercoder215.mobchip.abstraction.v1_19_R1; +import me.gamercoder215.mobchip.abstraction.ChipUtil; import me.gamercoder215.mobchip.ai.navigation.NavigationPath; import me.gamercoder215.mobchip.util.Position; import net.minecraft.world.level.pathfinder.Node; @@ -8,10 +9,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; +@SuppressWarnings("unchecked") final class NavigationPath1_19_R1 implements NavigationPath { private String name; private final Mob m; @@ -23,6 +27,18 @@ final class NavigationPath1_19_R1 implements NavigationPath { this.name = "bukkitpath"; this.handle = nms; this.speedMod = speedMod; + + try { + Field points = this.handle.getClass().getDeclaredField("a"); + points.setAccessible(true); + List pathPoints = (List) points.get(this.handle); + + nodes.addAll(pathPoints.stream() + .map(ChipUtil1_19_R1::fromNMS) + .collect(Collectors.toSet())); + } catch (ReflectiveOperationException e) { + ChipUtil.printStackTrace(e); + } } private final List nodes = new ArrayList<>(); diff --git a/nms/1_19_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/OptimizedSmallEnumSet1_19_R1.java b/nms/1_19_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/OptimizedSmallEnumSet1_19_R1.java index c7e503351..3b5d46516 100644 --- a/nms/1_19_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/OptimizedSmallEnumSet1_19_R1.java +++ b/nms/1_19_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_19_R1/OptimizedSmallEnumSet1_19_R1.java @@ -4,7 +4,6 @@ // Used for Testing Purposes public final class OptimizedSmallEnumSet1_19_R1> { - private final Class enumClass; private long backingSet; public OptimizedSmallEnumSet1_19_R1(Class clazz) { @@ -13,7 +12,6 @@ public OptimizedSmallEnumSet1_19_R1(Class clazz) { } else if (!clazz.isEnum()) { throw new IllegalArgumentException("Class must be enum, not " + clazz.getCanonicalName()); } else { - this.enumClass = clazz; } } diff --git a/nms/1_19_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/ChipUtil1_19_R2.java b/nms/1_19_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/ChipUtil1_19_R2.java index 26fb24c35..8bc5f4e08 100644 --- a/nms/1_19_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/ChipUtil1_19_R2.java +++ b/nms/1_19_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/ChipUtil1_19_R2.java @@ -74,6 +74,7 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.pathfinder.Node; import net.minecraft.world.phys.Vec3; import org.bukkit.*; import org.bukkit.craftbukkit.v1_19_R2.CraftServer; @@ -1716,4 +1717,8 @@ public EnderCrystal getNearestCrystal(EnderDragon d) { return (EnderCrystal) nms.nearestCrystal.getBukkitEntity(); } + public static me.gamercoder215.mobchip.util.Position fromNMS(Node point) { + return new me.gamercoder215.mobchip.util.Position(point.x, point.y, point.z); + } + } \ No newline at end of file diff --git a/nms/1_19_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/EntityNBT1_19_R2.java b/nms/1_19_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/EntityNBT1_19_R2.java index eb134beb2..20e3cd529 100644 --- a/nms/1_19_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/EntityNBT1_19_R2.java +++ b/nms/1_19_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/EntityNBT1_19_R2.java @@ -8,15 +8,12 @@ final class EntityNBT1_19_R2 extends NBTSection1_19_R2 implements EntityNBT { private final Mob mob; - private final net.minecraft.world.entity.Mob handle; - - private final CompoundTag root; public EntityNBT1_19_R2(Mob m) { super(m); this.mob = m; - this.handle = ChipUtil1_19_R2.toNMS(m); - this.root = new CompoundTag(); + net.minecraft.world.entity.Mob handle = ChipUtil1_19_R2.toNMS(m); + CompoundTag root = new CompoundTag(); handle.saveWithoutId(root); } diff --git a/nms/1_19_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/NBTSection1_19_R2.java b/nms/1_19_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/NBTSection1_19_R2.java index ed8e32555..7fbdf521d 100644 --- a/nms/1_19_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/NBTSection1_19_R2.java +++ b/nms/1_19_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/NBTSection1_19_R2.java @@ -325,7 +325,7 @@ public void set(@Nullable String key, @Nullable Object value) { @Override public boolean isSet(@Nullable String key) { - return false; + return tag.contains(key); } @Override diff --git a/nms/1_19_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/NavigationPath1_19_R2.java b/nms/1_19_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/NavigationPath1_19_R2.java index 4d043cbaa..6e3cc4acb 100644 --- a/nms/1_19_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/NavigationPath1_19_R2.java +++ b/nms/1_19_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/NavigationPath1_19_R2.java @@ -1,5 +1,6 @@ package me.gamercoder215.mobchip.abstraction.v1_19_R2; +import me.gamercoder215.mobchip.abstraction.ChipUtil; import me.gamercoder215.mobchip.ai.navigation.NavigationPath; import me.gamercoder215.mobchip.util.Position; import net.minecraft.world.level.pathfinder.Node; @@ -8,10 +9,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; +@SuppressWarnings("unchecked") final class NavigationPath1_19_R2 implements NavigationPath { private String name; private final Mob m; @@ -23,6 +27,18 @@ final class NavigationPath1_19_R2 implements NavigationPath { this.name = "bukkitpath"; this.handle = nms; this.speedMod = speedMod; + + try { + Field points = this.handle.getClass().getDeclaredField("a"); + points.setAccessible(true); + List pathPoints = (List) points.get(this.handle); + + nodes.addAll(pathPoints.stream() + .map(ChipUtil1_19_R2::fromNMS) + .collect(Collectors.toSet())); + } catch (ReflectiveOperationException e) { + ChipUtil.printStackTrace(e); + } } private final List nodes = new ArrayList<>(); diff --git a/nms/1_19_R2/src/test/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/OptimizedSmallEnumSet1_19_R2.java b/nms/1_19_R2/src/test/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/OptimizedSmallEnumSet1_19_R2.java index 3f6b2966b..8bacc9d3f 100644 --- a/nms/1_19_R2/src/test/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/OptimizedSmallEnumSet1_19_R2.java +++ b/nms/1_19_R2/src/test/java/me/gamercoder215/mobchip/abstraction/v1_19_R2/OptimizedSmallEnumSet1_19_R2.java @@ -4,7 +4,6 @@ // Used for Testing Purposes public final class OptimizedSmallEnumSet1_19_R2> { - private final Class enumClass; private long backingSet; public OptimizedSmallEnumSet1_19_R2(Class clazz) { @@ -13,7 +12,6 @@ public OptimizedSmallEnumSet1_19_R2(Class clazz) { } else if (!clazz.isEnum()) { throw new IllegalArgumentException("Class must be enum, not " + clazz.getCanonicalName()); } else { - this.enumClass = clazz; } } diff --git a/nms/1_19_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/ChipUtil1_19_R3.java b/nms/1_19_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/ChipUtil1_19_R3.java index ce2388001..23dd6f747 100644 --- a/nms/1_19_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/ChipUtil1_19_R3.java +++ b/nms/1_19_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/ChipUtil1_19_R3.java @@ -77,6 +77,7 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.pathfinder.Node; import net.minecraft.world.phys.Vec3; import org.bukkit.*; import org.bukkit.craftbukkit.v1_19_R3.CraftServer; @@ -744,13 +745,9 @@ private static DamageSource fromType(ResourceKey key) { } private static DamageSource fromType(ResourceKey key, net.minecraft.world.entity.Entity cause) { - return fromType(key, cause, null); - } - - private static DamageSource fromType(ResourceKey key, net.minecraft.world.entity.Entity cause, net.minecraft.world.entity.Entity target) { Frozen access = ((CraftServer) Bukkit.getServer()).getHandle().getServer().registries().compositeAccess(); - return new DamageSource(access.registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(key), cause, target); + return new DamageSource(access.registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(key), cause, null); } public static DamageSource toNMS(EntityDamageEvent.DamageCause c, Entity en) { @@ -1742,4 +1739,8 @@ public EnderCrystal getNearestCrystal(EnderDragon d) { return (EnderCrystal) nms.nearestCrystal.getBukkitEntity(); } + public static me.gamercoder215.mobchip.util.Position fromNMS(Node point) { + return new me.gamercoder215.mobchip.util.Position(point.x, point.y, point.z); + } + } \ No newline at end of file diff --git a/nms/1_19_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/EntityNBT1_19_R3.java b/nms/1_19_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/EntityNBT1_19_R3.java index 543f92397..95f1f013c 100644 --- a/nms/1_19_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/EntityNBT1_19_R3.java +++ b/nms/1_19_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/EntityNBT1_19_R3.java @@ -8,15 +8,12 @@ final class EntityNBT1_19_R3 extends NBTSection1_19_R3 implements EntityNBT { private final Mob mob; - private final net.minecraft.world.entity.Mob handle; - - private final CompoundTag root; public EntityNBT1_19_R3(Mob m) { super(m); this.mob = m; - this.handle = ChipUtil1_19_R3.toNMS(m); - this.root = new CompoundTag(); + net.minecraft.world.entity.Mob handle = ChipUtil1_19_R3.toNMS(m); + CompoundTag root = new CompoundTag(); handle.saveWithoutId(root); } diff --git a/nms/1_19_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/NBTSection1_19_R3.java b/nms/1_19_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/NBTSection1_19_R3.java index 70dbc6a52..662630097 100644 --- a/nms/1_19_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/NBTSection1_19_R3.java +++ b/nms/1_19_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/NBTSection1_19_R3.java @@ -325,7 +325,7 @@ public void set(@Nullable String key, @Nullable Object value) { @Override public boolean isSet(@Nullable String key) { - return false; + return tag.contains(key); } @Override diff --git a/nms/1_19_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/NavigationPath1_19_R3.java b/nms/1_19_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/NavigationPath1_19_R3.java index 9c3012a67..0c7ce1a23 100644 --- a/nms/1_19_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/NavigationPath1_19_R3.java +++ b/nms/1_19_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/NavigationPath1_19_R3.java @@ -1,5 +1,6 @@ package me.gamercoder215.mobchip.abstraction.v1_19_R3; +import me.gamercoder215.mobchip.abstraction.ChipUtil; import me.gamercoder215.mobchip.ai.navigation.NavigationPath; import me.gamercoder215.mobchip.util.Position; import net.minecraft.world.level.pathfinder.Node; @@ -8,10 +9,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; +@SuppressWarnings("unchecked") final class NavigationPath1_19_R3 implements NavigationPath { private String name; private final Mob m; @@ -23,6 +27,18 @@ final class NavigationPath1_19_R3 implements NavigationPath { this.name = "bukkitpath"; this.handle = nms; this.speedMod = speedMod; + + try { + Field points = this.handle.getClass().getDeclaredField("a"); + points.setAccessible(true); + List pathPoints = (List) points.get(this.handle); + + nodes.addAll(pathPoints.stream() + .map(ChipUtil1_19_R3::fromNMS) + .collect(Collectors.toSet())); + } catch (ReflectiveOperationException e) { + ChipUtil.printStackTrace(e); + } } private final List nodes = new ArrayList<>(); diff --git a/nms/1_19_R3/src/test/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/OptimizedSmallEnumSet1_19_R3.java b/nms/1_19_R3/src/test/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/OptimizedSmallEnumSet1_19_R3.java index 00bf3f145..e69184575 100644 --- a/nms/1_19_R3/src/test/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/OptimizedSmallEnumSet1_19_R3.java +++ b/nms/1_19_R3/src/test/java/me/gamercoder215/mobchip/abstraction/v1_19_R3/OptimizedSmallEnumSet1_19_R3.java @@ -4,7 +4,6 @@ // Used for Testing Purposes public final class OptimizedSmallEnumSet1_19_R3> { - private final Class enumClass; private long backingSet; public OptimizedSmallEnumSet1_19_R3(Class clazz) { @@ -13,7 +12,6 @@ public OptimizedSmallEnumSet1_19_R3(Class clazz) { } else if (!clazz.isEnum()) { throw new IllegalArgumentException("Class must be enum, not " + clazz.getCanonicalName()); } else { - this.enumClass = clazz; } } diff --git a/nms/1_20_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/ChipUtil1_20_R1.java b/nms/1_20_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/ChipUtil1_20_R1.java index 27e79507b..b979d061a 100644 --- a/nms/1_20_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/ChipUtil1_20_R1.java +++ b/nms/1_20_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/ChipUtil1_20_R1.java @@ -78,6 +78,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.pathfinder.Node; import net.minecraft.world.phys.Vec3; import org.bukkit.*; import org.bukkit.craftbukkit.v1_20_R1.CraftServer; @@ -744,13 +745,9 @@ private static DamageSource fromType(ResourceKey key) { } private static DamageSource fromType(ResourceKey key, net.minecraft.world.entity.Entity cause) { - return fromType(key, cause, null); - } - - private static DamageSource fromType(ResourceKey key, net.minecraft.world.entity.Entity cause, net.minecraft.world.entity.Entity target) { Frozen access = ((CraftServer) Bukkit.getServer()).getHandle().getServer().registries().compositeAccess(); - return new DamageSource(access.registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(key), cause, target); + return new DamageSource(access.registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(key), cause, null); } public static DamageSource toNMS(EntityDamageEvent.DamageCause c, Entity en) { @@ -1734,4 +1731,8 @@ public EnderCrystal getNearestCrystal(EnderDragon d) { return (EnderCrystal) nms.nearestCrystal.getBukkitEntity(); } + public static me.gamercoder215.mobchip.util.Position fromNMS(Node point) { + return new me.gamercoder215.mobchip.util.Position(point.x, point.y, point.z); + } + } \ No newline at end of file diff --git a/nms/1_20_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/EntityNBT1_20_R1.java b/nms/1_20_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/EntityNBT1_20_R1.java index 822b63386..69fd90a58 100644 --- a/nms/1_20_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/EntityNBT1_20_R1.java +++ b/nms/1_20_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/EntityNBT1_20_R1.java @@ -8,15 +8,12 @@ final class EntityNBT1_20_R1 extends NBTSection1_20_R1 implements EntityNBT { private final Mob mob; - private final net.minecraft.world.entity.Mob handle; - - private final CompoundTag root; public EntityNBT1_20_R1(Mob m) { super(m); this.mob = m; - this.handle = ChipUtil1_20_R1.toNMS(m); - this.root = new CompoundTag(); + net.minecraft.world.entity.Mob handle = ChipUtil1_20_R1.toNMS(m); + CompoundTag root = new CompoundTag(); handle.saveWithoutId(root); } diff --git a/nms/1_20_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/NBTSection1_20_R1.java b/nms/1_20_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/NBTSection1_20_R1.java index 6b645a108..c09e66e14 100644 --- a/nms/1_20_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/NBTSection1_20_R1.java +++ b/nms/1_20_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/NBTSection1_20_R1.java @@ -325,7 +325,7 @@ public void set(@Nullable String key, @Nullable Object value) { @Override public boolean isSet(@Nullable String key) { - return false; + return tag.contains(key); } @Override diff --git a/nms/1_20_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/NavigationPath1_20_R1.java b/nms/1_20_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/NavigationPath1_20_R1.java index c5e955bf8..1ada30001 100644 --- a/nms/1_20_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/NavigationPath1_20_R1.java +++ b/nms/1_20_R1/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/NavigationPath1_20_R1.java @@ -1,5 +1,6 @@ package me.gamercoder215.mobchip.abstraction.v1_20_R1; +import me.gamercoder215.mobchip.abstraction.ChipUtil; import me.gamercoder215.mobchip.ai.navigation.NavigationPath; import me.gamercoder215.mobchip.util.Position; import net.minecraft.world.level.pathfinder.Node; @@ -8,10 +9,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; +@SuppressWarnings("unchecked") final class NavigationPath1_20_R1 implements NavigationPath { private String name; private final Mob m; @@ -23,6 +27,18 @@ final class NavigationPath1_20_R1 implements NavigationPath { this.name = "bukkitpath"; this.handle = nms; this.speedMod = speedMod; + + try { + Field points = this.handle.getClass().getDeclaredField("a"); + points.setAccessible(true); + List pathPoints = (List) points.get(this.handle); + + nodes.addAll(pathPoints.stream() + .map(ChipUtil1_20_R1::fromNMS) + .collect(Collectors.toSet())); + } catch (ReflectiveOperationException e) { + ChipUtil.printStackTrace(e); + } } private final List nodes = new ArrayList<>(); diff --git a/nms/1_20_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/OptimizedSmallEnumSet1_20_R1.java b/nms/1_20_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/OptimizedSmallEnumSet1_20_R1.java index bfe381ac8..a5822edbc 100644 --- a/nms/1_20_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/OptimizedSmallEnumSet1_20_R1.java +++ b/nms/1_20_R1/src/test/java/me/gamercoder215/mobchip/abstraction/v1_20_R1/OptimizedSmallEnumSet1_20_R1.java @@ -4,7 +4,6 @@ // Used for Testing Purposes public final class OptimizedSmallEnumSet1_20_R1> { - private final Class enumClass; private long backingSet; public OptimizedSmallEnumSet1_20_R1(Class clazz) { @@ -13,7 +12,6 @@ public OptimizedSmallEnumSet1_20_R1(Class clazz) { } else if (!clazz.isEnum()) { throw new IllegalArgumentException("Class must be enum, not " + clazz.getCanonicalName()); } else { - this.enumClass = clazz; } } diff --git a/nms/1_20_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/ChipUtil1_20_R2.java b/nms/1_20_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/ChipUtil1_20_R2.java index f4a9ca170..1607c26e4 100644 --- a/nms/1_20_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/ChipUtil1_20_R2.java +++ b/nms/1_20_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/ChipUtil1_20_R2.java @@ -78,6 +78,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.pathfinder.Node; import net.minecraft.world.phys.Vec3; import org.bukkit.*; import org.bukkit.craftbukkit.v1_20_R2.CraftServer; @@ -744,13 +745,9 @@ private static DamageSource fromType(ResourceKey key) { } private static DamageSource fromType(ResourceKey key, net.minecraft.world.entity.Entity cause) { - return fromType(key, cause, null); - } - - private static DamageSource fromType(ResourceKey key, net.minecraft.world.entity.Entity cause, net.minecraft.world.entity.Entity target) { Frozen access = ((CraftServer) Bukkit.getServer()).getHandle().getServer().registries().compositeAccess(); - return new DamageSource(access.registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(key), cause, target); + return new DamageSource(access.registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(key), cause, null); } public static DamageSource toNMS(EntityDamageEvent.DamageCause c, Entity en) { @@ -785,7 +782,7 @@ public static DamageSource toNMS(EntityDamageEvent.DamageCause c, Entity en) { } public static ItemEntity toNMS(Item i) { - return (ItemEntity) ((CraftItem) i).getHandle(); + return ((CraftItem) i).getHandle(); } public static net.minecraft.world.entity.LivingEntity toNMS(LivingEntity en) { @@ -1734,4 +1731,8 @@ public EnderCrystal getNearestCrystal(EnderDragon d) { return (EnderCrystal) nms.nearestCrystal.getBukkitEntity(); } + public static me.gamercoder215.mobchip.util.Position fromNMS(Node point) { + return new me.gamercoder215.mobchip.util.Position(point.x, point.y, point.z); + } + } \ No newline at end of file diff --git a/nms/1_20_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/EntityNBT1_20_R2.java b/nms/1_20_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/EntityNBT1_20_R2.java index 1379dc3a9..0f6680e6d 100644 --- a/nms/1_20_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/EntityNBT1_20_R2.java +++ b/nms/1_20_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/EntityNBT1_20_R2.java @@ -8,15 +8,12 @@ final class EntityNBT1_20_R2 extends NBTSection1_20_R2 implements EntityNBT { private final Mob mob; - private final net.minecraft.world.entity.Mob handle; - - private final CompoundTag root; public EntityNBT1_20_R2(Mob m) { super(m); this.mob = m; - this.handle = ChipUtil1_20_R2.toNMS(m); - this.root = new CompoundTag(); + net.minecraft.world.entity.Mob handle = ChipUtil1_20_R2.toNMS(m); + CompoundTag root = new CompoundTag(); handle.saveWithoutId(root); } diff --git a/nms/1_20_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/NBTSection1_20_R2.java b/nms/1_20_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/NBTSection1_20_R2.java index a89b8e60a..2c6b85685 100644 --- a/nms/1_20_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/NBTSection1_20_R2.java +++ b/nms/1_20_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/NBTSection1_20_R2.java @@ -325,7 +325,7 @@ public void set(@Nullable String key, @Nullable Object value) { @Override public boolean isSet(@Nullable String key) { - return false; + return tag.contains(key); } @Override diff --git a/nms/1_20_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/NavigationPath1_20_R2.java b/nms/1_20_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/NavigationPath1_20_R2.java index 79bf06f5f..883e34286 100644 --- a/nms/1_20_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/NavigationPath1_20_R2.java +++ b/nms/1_20_R2/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/NavigationPath1_20_R2.java @@ -1,5 +1,6 @@ package me.gamercoder215.mobchip.abstraction.v1_20_R2; +import me.gamercoder215.mobchip.abstraction.ChipUtil; import me.gamercoder215.mobchip.ai.navigation.NavigationPath; import me.gamercoder215.mobchip.util.Position; import net.minecraft.world.level.pathfinder.Node; @@ -8,10 +9,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; +@SuppressWarnings("unchecked") final class NavigationPath1_20_R2 implements NavigationPath { private String name; private final Mob m; @@ -23,6 +27,18 @@ final class NavigationPath1_20_R2 implements NavigationPath { this.name = "bukkitpath"; this.handle = nms; this.speedMod = speedMod; + + try { + Field points = this.handle.getClass().getDeclaredField("a"); + points.setAccessible(true); + List pathPoints = (List) points.get(this.handle); + + nodes.addAll(pathPoints.stream() + .map(ChipUtil1_20_R2::fromNMS) + .collect(Collectors.toSet())); + } catch (ReflectiveOperationException e) { + ChipUtil.printStackTrace(e); + } } private final List nodes = new ArrayList<>(); diff --git a/nms/1_20_R2/src/test/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/OptimizedSmallEnumSet1_20_R2.java b/nms/1_20_R2/src/test/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/OptimizedSmallEnumSet1_20_R2.java index 41c03a7db..54e91201a 100644 --- a/nms/1_20_R2/src/test/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/OptimizedSmallEnumSet1_20_R2.java +++ b/nms/1_20_R2/src/test/java/me/gamercoder215/mobchip/abstraction/v1_20_R2/OptimizedSmallEnumSet1_20_R2.java @@ -4,7 +4,6 @@ // Used for Testing Purposes public final class OptimizedSmallEnumSet1_20_R2> { - private final Class enumClass; private long backingSet; public OptimizedSmallEnumSet1_20_R2(Class clazz) { @@ -13,7 +12,6 @@ public OptimizedSmallEnumSet1_20_R2(Class clazz) { } else if (!clazz.isEnum()) { throw new IllegalArgumentException("Class must be enum, not " + clazz.getCanonicalName()); } else { - this.enumClass = clazz; } } diff --git a/nms/1_20_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/ChipUtil1_20_R3.java b/nms/1_20_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/ChipUtil1_20_R3.java index 0d9ff581a..1c424be32 100644 --- a/nms/1_20_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/ChipUtil1_20_R3.java +++ b/nms/1_20_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/ChipUtil1_20_R3.java @@ -78,6 +78,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.pathfinder.Node; import net.minecraft.world.phys.Vec3; import org.bukkit.*; import org.bukkit.craftbukkit.v1_20_R3.CraftServer; @@ -745,13 +746,9 @@ private static DamageSource fromType(ResourceKey key) { } private static DamageSource fromType(ResourceKey key, net.minecraft.world.entity.Entity cause) { - return fromType(key, cause, null); - } - - private static DamageSource fromType(ResourceKey key, net.minecraft.world.entity.Entity cause, net.minecraft.world.entity.Entity target) { Frozen access = ((CraftServer) Bukkit.getServer()).getHandle().getServer().registries().compositeAccess(); - return new DamageSource(access.registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(key), cause, target); + return new DamageSource(access.registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(key), cause, null); } public static DamageSource toNMS(EntityDamageEvent.DamageCause c, Entity en) { @@ -786,7 +783,7 @@ public static DamageSource toNMS(EntityDamageEvent.DamageCause c, Entity en) { } public static ItemEntity toNMS(Item i) { - return (ItemEntity) ((CraftItem) i).getHandle(); + return ((CraftItem) i).getHandle(); } public static net.minecraft.world.entity.LivingEntity toNMS(LivingEntity en) { @@ -1735,4 +1732,8 @@ public EnderCrystal getNearestCrystal(EnderDragon d) { return (EnderCrystal) nms.nearestCrystal.getBukkitEntity(); } + public static me.gamercoder215.mobchip.util.Position fromNMS(Node point) { + return new me.gamercoder215.mobchip.util.Position(point.x, point.y, point.z); + } + } \ No newline at end of file diff --git a/nms/1_20_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/EntityNBT1_20_R3.java b/nms/1_20_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/EntityNBT1_20_R3.java index 4f79074e3..d387d9086 100644 --- a/nms/1_20_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/EntityNBT1_20_R3.java +++ b/nms/1_20_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/EntityNBT1_20_R3.java @@ -8,15 +8,12 @@ final class EntityNBT1_20_R3 extends NBTSection1_20_R3 implements EntityNBT { private final Mob mob; - private final net.minecraft.world.entity.Mob handle; - - private final CompoundTag root; public EntityNBT1_20_R3(Mob m) { super(m); this.mob = m; - this.handle = ChipUtil1_20_R3.toNMS(m); - this.root = new CompoundTag(); + net.minecraft.world.entity.Mob handle = ChipUtil1_20_R3.toNMS(m); + CompoundTag root = new CompoundTag(); handle.saveWithoutId(root); } diff --git a/nms/1_20_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/NBTSection1_20_R3.java b/nms/1_20_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/NBTSection1_20_R3.java index 3c3696df2..6f457199e 100644 --- a/nms/1_20_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/NBTSection1_20_R3.java +++ b/nms/1_20_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/NBTSection1_20_R3.java @@ -325,7 +325,7 @@ public void set(@Nullable String key, @Nullable Object value) { @Override public boolean isSet(@Nullable String key) { - return false; + return tag.contains(key); } @Override diff --git a/nms/1_20_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/NavigationPath1_20_R3.java b/nms/1_20_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/NavigationPath1_20_R3.java index 597ef03df..175ea49e0 100644 --- a/nms/1_20_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/NavigationPath1_20_R3.java +++ b/nms/1_20_R3/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/NavigationPath1_20_R3.java @@ -1,5 +1,6 @@ package me.gamercoder215.mobchip.abstraction.v1_20_R3; +import me.gamercoder215.mobchip.abstraction.ChipUtil; import me.gamercoder215.mobchip.ai.navigation.NavigationPath; import me.gamercoder215.mobchip.util.Position; import net.minecraft.world.level.pathfinder.Node; @@ -8,10 +9,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; +@SuppressWarnings("unchecked") final class NavigationPath1_20_R3 implements NavigationPath { private String name; private final Mob m; @@ -23,6 +27,18 @@ final class NavigationPath1_20_R3 implements NavigationPath { this.name = "bukkitpath"; this.handle = nms; this.speedMod = speedMod; + + try { + Field points = this.handle.getClass().getDeclaredField("a"); + points.setAccessible(true); + List pathPoints = (List) points.get(this.handle); + + nodes.addAll(pathPoints.stream() + .map(ChipUtil1_20_R3::fromNMS) + .collect(Collectors.toSet())); + } catch (ReflectiveOperationException e) { + ChipUtil.printStackTrace(e); + } } private final List nodes = new ArrayList<>(); diff --git a/nms/1_20_R3/src/test/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/OptimizedSmallEnumSet1_20_R3.java b/nms/1_20_R3/src/test/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/OptimizedSmallEnumSet1_20_R3.java index 849673b68..ed214c0a4 100644 --- a/nms/1_20_R3/src/test/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/OptimizedSmallEnumSet1_20_R3.java +++ b/nms/1_20_R3/src/test/java/me/gamercoder215/mobchip/abstraction/v1_20_R3/OptimizedSmallEnumSet1_20_R3.java @@ -4,7 +4,6 @@ // Used for Testing Purposes public final class OptimizedSmallEnumSet1_20_R3> { - private final Class enumClass; private long backingSet; public OptimizedSmallEnumSet1_20_R3(Class clazz) { @@ -13,7 +12,6 @@ public OptimizedSmallEnumSet1_20_R3(Class clazz) { } else if (!clazz.isEnum()) { throw new IllegalArgumentException("Class must be enum, not " + clazz.getCanonicalName()); } else { - this.enumClass = clazz; } } diff --git a/nms/1_20_R4/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/ChipUtil1_20_R4.java b/nms/1_20_R4/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/ChipUtil1_20_R4.java index e88fe7c42..af98545e7 100644 --- a/nms/1_20_R4/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/ChipUtil1_20_R4.java +++ b/nms/1_20_R4/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/ChipUtil1_20_R4.java @@ -80,6 +80,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.pathfinder.Node; import net.minecraft.world.phys.Vec3; import org.bukkit.*; import org.bukkit.craftbukkit.v1_20_R4.CraftServer; @@ -126,7 +127,7 @@ import static org.bukkit.event.entity.EntityDamageEvent.DamageCause.*; -@SuppressWarnings({"rawtypes", "unchecked", "deprecation"}) +@SuppressWarnings({"rawtypes", "unchecked", "deprecation", "UnstableApiUsage"}) final class ChipUtil1_20_R4 implements ChipUtil { @Override @@ -347,10 +348,7 @@ public static Goal toNMS(Pathfinder b) { PathfinderCatOnBed p = (PathfinderCatOnBed) b; yield new CatLieOnBedGoal((net.minecraft.world.entity.animal.Cat) m, p.getSpeedModifier(), Math.min((int) p.getRange(), 1)); } - case "ClimbOnTopOfPowderSnowGoal" -> { - PathfinderClimbPowderedSnow p = (PathfinderClimbPowderedSnow) b; - yield new ClimbOnTopOfPowderSnowGoal(m, toNMS(mob.getWorld())); - } + case "ClimbOnTopOfPowderSnowGoal" -> new ClimbOnTopOfPowderSnowGoal(m, toNMS(mob.getWorld())); case "CrossbowAttack" -> { PathfinderRangedCrossbowAttack p = (PathfinderRangedCrossbowAttack) b; yield new RangedCrossbowAttackGoal((net.minecraft.world.entity.monster.Monster) m, p.getSpeedModifier(), p.getRange()); @@ -360,10 +358,7 @@ public static Goal toNMS(Pathfinder b) { yield new OpenDoorGoal(m, p.mustClose()); } case "EatTile" -> new EatBlockGoal(m); - case "FishSchool" -> { - PathfinderFollowFishLeader p = (PathfinderFollowFishLeader) b; - yield new FollowFlockLeaderGoal((AbstractSchoolingFish) m); - } + case "FishSchool" -> new FollowFlockLeaderGoal((AbstractSchoolingFish) m); case "FleeSun" -> { PathfinderFleeSun p = (PathfinderFleeSun) b; yield new FleeSunGoal((PathfinderMob) m, p.getSpeedModifier()); @@ -398,10 +393,7 @@ public static Goal toNMS(Pathfinder b) { PathfinderLookAtEntity p = (PathfinderLookAtEntity) b; yield new LookAtPlayerGoal(m, toNMS(p.getFilter()), p.getRange(), p.getProbability(), p.isHorizontal()); } - case "LookAtTradingPlayer" -> { - PathfinderLookAtTradingPlayer p = (PathfinderLookAtTradingPlayer) b; - yield new LookAtTradingPlayerGoal((net.minecraft.world.entity.npc.AbstractVillager) m); - } + case "LookAtTradingPlayer" -> new LookAtTradingPlayerGoal((net.minecraft.world.entity.npc.AbstractVillager) m); case "MeleeAttack" -> { PathfinderMeleeAttack p = (PathfinderMeleeAttack) b; yield new MeleeAttackGoal((PathfinderMob) m, p.getSpeedModifier(), p.mustSee()); @@ -488,10 +480,7 @@ public static Goal toNMS(Pathfinder b) { PathfinderResetAnger p = (PathfinderResetAnger) b; yield new ResetUniversalAngerTargetGoal<>((net.minecraft.world.entity.Mob & NeutralMob) m, p.isAlertingOthers()); } - case "RandomStandGoal" -> { - PathfinderRandomStand p = (PathfinderRandomStand) b; - yield new RandomStandGoal((net.minecraft.world.entity.animal.horse.AbstractHorse) m); - } + case "RandomStandGoal" -> new RandomStandGoal((net.minecraft.world.entity.animal.horse.AbstractHorse) m); // Target @@ -750,13 +739,9 @@ private static DamageSource fromType(ResourceKey key) { } private static DamageSource fromType(ResourceKey key, net.minecraft.world.entity.Entity cause) { - return fromType(key, cause, null); - } + Frozen access = ((CraftServer) Bukkit.getServer()).getHandle().getServer().registries().compositeAccess(); - private static DamageSource fromType(ResourceKey key, net.minecraft.world.entity.Entity cause, net.minecraft.world.entity.Entity target) { - Frozen access = ((CraftServer) Bukkit.getServer()).getHandle().getServer().registries().compositeAccess(); - - return new DamageSource(access.registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(key), cause, target); + return new DamageSource(access.registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(key), cause, null); } public static DamageSource toNMS(EntityDamageEvent.DamageCause c, Entity en) { @@ -791,7 +776,7 @@ public static DamageSource toNMS(EntityDamageEvent.DamageCause c, Entity en) { } public static ItemEntity toNMS(Item i) { - return (ItemEntity) ((CraftItem) i).getHandle(); + return ((CraftItem) i).getHandle(); } public static net.minecraft.world.entity.LivingEntity toNMS(LivingEntity en) { @@ -801,60 +786,63 @@ public static net.minecraft.world.entity.LivingEntity toNMS(LivingEntity en) { public static Object toNMS(String key, Object value) { final Object nmsValue; - if (value instanceof Location l) { - nmsValue = switch (key) { - case "nearest_bed", "celebrate_location", "nearest_repellent", "disturbance_location", "breeze_jump_target" -> new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ()); - default -> GlobalPos.of(toNMS(l.getWorld()).dimension(), new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ())); + switch (value) { + case Location l -> nmsValue = switch (key) { + case "nearest_bed", "celebrate_location", "nearest_repellent", "disturbance_location", + "breeze_jump_target" -> new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ()); + default -> + GlobalPos.of(toNMS(l.getWorld()).dimension(), new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ())); }; - } - else if (value instanceof Location[] ls) { - List p = new ArrayList<>(); + case Location[] ls -> { + List p = new ArrayList<>(); - for (Location l : ls) { - p.add(GlobalPos.of(toNMS(l.getWorld()).dimension(), new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ()))); - } - - nmsValue = p; - } - else if (value instanceof Player p) { - if (key.equals("liked_player")) nmsValue = p.getUniqueId(); - else nmsValue = toNMS(p); - } - else if (value instanceof Memory.WalkingTarget t) nmsValue = new WalkTarget(toNMS(t.getLocation()), (float) t.getSpeedModifier(), t.getDistance()); - else if (value instanceof LivingEntity l) nmsValue = toNMS(l); - else if (value instanceof Entity e) { - if (key.equals("angry_at")) nmsValue = e.getUniqueId(); - else nmsValue = toNMS(e); - } - else if (value instanceof org.bukkit.block.Block[] b) { - final Collection s; - if (key.equals("doors_to_close")) s = new HashSet<>(); - else s = new ArrayList<>(); + for (Location l : ls) { + p.add(GlobalPos.of(toNMS(l.getWorld()).dimension(), new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ()))); + } - for (org.bukkit.block.Block bl : b) { - Location l = bl.getLocation(); - s.add(GlobalPos.of(toNMS(l.getWorld()).dimension(), new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ()))); + nmsValue = p; } - nmsValue = s; - } - else if (value instanceof Villager[] vs) { - List s = new ArrayList<>(); - for (Villager v : vs) s.add(toNMS(v)); - nmsValue = s; - } - else if (value instanceof Player[] ps) { - List s = new ArrayList<>(); - for (Player p : ps) s.add(toNMS(p)); - nmsValue = s; - } - else if (value instanceof LivingEntity[] ls) { - List s = new ArrayList<>(); - for (LivingEntity l : ls) s.add(toNMS(l)); - nmsValue = s; + case Player p -> { + if (key.equals("liked_player")) nmsValue = p.getUniqueId(); + else nmsValue = toNMS(p); + } + case Memory.WalkingTarget t -> + nmsValue = new WalkTarget(toNMS(t.getLocation()), (float) t.getSpeedModifier(), t.getDistance()); + case LivingEntity l -> nmsValue = toNMS(l); + case Entity e -> { + if (key.equals("angry_at")) nmsValue = e.getUniqueId(); + else nmsValue = toNMS(e); + } + case org.bukkit.block.Block[] b -> { + final Collection s; + if (key.equals("doors_to_close")) s = new HashSet<>(); + else s = new ArrayList<>(); + + for (org.bukkit.block.Block bl : b) { + Location l = bl.getLocation(); + s.add(GlobalPos.of(toNMS(l.getWorld()).dimension(), new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ()))); + } + nmsValue = s; + } + case Villager[] vs -> { + List s = new ArrayList<>(); + for (Villager v : vs) s.add(toNMS(v)); + nmsValue = s; + } + case Player[] ps -> { + List s = new ArrayList<>(); + for (Player p : ps) s.add(toNMS(p)); + nmsValue = s; + } + case LivingEntity[] ls -> { + List s = new ArrayList<>(); + for (LivingEntity l : ls) s.add(toNMS(l)); + nmsValue = s; + } + case EntityDamageEvent.DamageCause c -> nmsValue = toNMS(c, null); + case Unit ignored -> nmsValue = net.minecraft.util.Unit.INSTANCE; + case null, default -> nmsValue = value; } - else if (value instanceof EntityDamageEvent.DamageCause c) nmsValue = toNMS(c, null); - else if (value instanceof Unit) nmsValue = net.minecraft.util.Unit.INSTANCE; - else nmsValue = value; return nmsValue; } @@ -865,7 +853,7 @@ public static Object fromNMS(Mob m, String key, Object nmsValue) { if (nmsValue instanceof GlobalPos l) { BlockPos pos = l.pos(); World w = ((CraftServer) Bukkit.getServer()).getHandle().getServer().registries().compositeAccess().registryOrThrow(Registries.DIMENSION).get(l.dimension()).getWorld(); - if (w == null) w = Bukkit.getWorlds().get(0); + if (w == null) w = Bukkit.getWorlds().getFirst(); value = new Location(w, pos.getX(), pos.getY(), pos.getZ()); } else if (nmsValue instanceof BlockPos p) { @@ -1559,7 +1547,6 @@ private AttributeInstance1_20_R4 getOrCreateInstance(Mob m, Attribute a) { @Override public AttributeInstance getAttributeInstance(Mob m, Attribute a) { - net.minecraft.world.entity.ai.attributes.Attribute nmsAttribute = BuiltInRegistries.ATTRIBUTE.get(toNMS(a.getKey())); return getOrCreateInstance(m, a); } @@ -1679,7 +1666,7 @@ public static net.minecraft.world.entity.ai.sensing.Sensor toNMS(Sensor s) public static SensorType toNMSType(Sensor s) { try { - Constructor c = SensorType.class.getConstructor(Supplier.class); + Constructor c = SensorType.class.getDeclaredConstructor(Supplier.class); c.setAccessible(true); Supplier> sup = () -> toNMS(s); @@ -1706,10 +1693,6 @@ public static Memory fromNMS(MemoryModuleType memory) { return EntityMemory.getByKey(fromNMS(BuiltInRegistries.MEMORY_MODULE_TYPE.getKey(memory))); } - public static MemoryModuleType getMemory(NamespacedKey key) { - return BuiltInRegistries.MEMORY_MODULE_TYPE.get(new ResourceLocation(key.getNamespace(), key.getKey())); - } - @Override public void registerSensor(Sensor s) { changeRegistryLock(BuiltInRegistries.SENSOR_TYPE, false); @@ -1746,4 +1729,8 @@ public static RegistrationInfo registration(NamespacedKey key) { return new RegistrationInfo(Optional.of(new KnownPack(key.getNamespace(), key.getKey(), Registration.getVersion())), Lifecycle.stable()); } + public static me.gamercoder215.mobchip.util.Position fromNMS(Node point) { + return new me.gamercoder215.mobchip.util.Position(point.x, point.y, point.z); + } + } \ No newline at end of file diff --git a/nms/1_20_R4/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/EntityNBT1_20_R4.java b/nms/1_20_R4/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/EntityNBT1_20_R4.java index 395f866db..b5ddd52dc 100644 --- a/nms/1_20_R4/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/EntityNBT1_20_R4.java +++ b/nms/1_20_R4/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/EntityNBT1_20_R4.java @@ -8,15 +8,12 @@ final class EntityNBT1_20_R4 extends NBTSection1_20_R4 implements EntityNBT { private final Mob mob; - private final net.minecraft.world.entity.Mob handle; - - private final CompoundTag root; public EntityNBT1_20_R4(Mob m) { super(m); this.mob = m; - this.handle = ChipUtil1_20_R4.toNMS(m); - this.root = new CompoundTag(); + net.minecraft.world.entity.Mob handle = ChipUtil1_20_R4.toNMS(m); + CompoundTag root = new CompoundTag(); handle.saveWithoutId(root); } diff --git a/nms/1_20_R4/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/NBTSection1_20_R4.java b/nms/1_20_R4/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/NBTSection1_20_R4.java index 30a11d875..20e92ac88 100644 --- a/nms/1_20_R4/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/NBTSection1_20_R4.java +++ b/nms/1_20_R4/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/NBTSection1_20_R4.java @@ -96,49 +96,44 @@ static Tag serialize(Object v) { } } - return switch (v.getClass().getSimpleName().toLowerCase()) { - case "short" -> ShortTag.valueOf((short) v); - case "float" -> FloatTag.valueOf((float) v); - case "long" -> LongTag.valueOf((long) v); - case "byte" -> ByteTag.valueOf((byte) v); - case "integer", "int" -> IntTag.valueOf((int) v); - case "double" -> DoubleTag.valueOf((double) v); - case "uuid" -> { - UUID uid = (UUID) v; + return switch (v) { + case Short s -> ShortTag.valueOf(s); + case Float f -> FloatTag.valueOf(f); + case Long l -> LongTag.valueOf(l); + case Byte b -> ByteTag.valueOf(b); + case Integer i -> IntTag.valueOf(i); + case Double d -> DoubleTag.valueOf(d); + case UUID uid -> { CompoundTag uuid = new CompoundTag(); uuid.putString(ChipUtil.CLASS_TAG, uid.getClass().getName()); uuid.putLong("least", uid.getLeastSignificantBits()); uuid.putLong("most", uid.getMostSignificantBits()); yield uuid; } - case "namespacedkey" -> { - NamespacedKey key = (NamespacedKey) v; + case NamespacedKey key -> { CompoundTag nmsKey = new CompoundTag(); nmsKey.putString(ChipUtil.CLASS_TAG, key.getClass().getName()); nmsKey.putString("namespace", key.getNamespace()); nmsKey.putString("key", key.getKey()); yield nmsKey; } - case "itemstack" -> { - ItemStack item = (ItemStack) v; + case ItemStack item -> { CompoundTag stack = new CompoundTag(); stack.putString(ChipUtil.CLASS_TAG, item.getClass().getName()); stack.put("item", CraftItemStack.asNMSCopy(item).saveOptional(CraftRegistry.getMinecraftRegistry())); yield stack; } - case "offlineplayer" -> { - OfflinePlayer p = (OfflinePlayer) v; + case OfflinePlayer p -> { CompoundTag player = new CompoundTag(); player.putString(ChipUtil.CLASS_TAG, OfflinePlayer.class.getName()); player.putString("id", p.getUniqueId().toString()); yield player; } - case "location" -> { - Location l = (Location) v; + case Location l -> { CompoundTag loc = new CompoundTag(); - loc.putString(ChipUtil.CLASS_TAG, l.getClass().getName()); + loc.putString(ChipUtil.CLASS_TAG, Location.class.getName()); loc.putDouble("x", l.getX()); loc.putDouble("y", l.getY()); loc.putDouble("z", l.getZ()); @@ -147,24 +142,21 @@ static Tag serialize(Object v) { loc.putString("world", l.getWorld().getName()); yield loc; } - case "vector" -> { - Vector vec = (Vector) v; + case Vector vec -> { CompoundTag vector = new CompoundTag(); - vector.putString(ChipUtil.CLASS_TAG, vec.getClass().getName()); + vector.putString(ChipUtil.CLASS_TAG, Vector.class.getName()); vector.putDouble("x", vec.getX()); vector.putDouble("y", vec.getY()); vector.putDouble("z", vec.getZ()); yield vector; } - case "color" -> { - Color color = (Color) v; + case Color color -> { CompoundTag clr = new CompoundTag(); - clr.putString(ChipUtil.CLASS_TAG, color.getClass().getName()); + clr.putString(ChipUtil.CLASS_TAG, Color.class.getName()); clr.putInt("rgb", color.asRGB()); yield clr; } - case "eulerangle" -> { - EulerAngle angle = (EulerAngle) v; + case EulerAngle angle -> { CompoundTag euler = new CompoundTag(); euler.putString(ChipUtil.CLASS_TAG, angle.getClass().getName()); euler.putDouble("x", angle.getX()); @@ -329,7 +321,7 @@ public void set(@Nullable String key, @Nullable Object value) { @Override public boolean isSet(@Nullable String key) { - return false; + return tag.contains(key); } @Override diff --git a/nms/1_20_R4/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/NavigationPath1_20_R4.java b/nms/1_20_R4/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/NavigationPath1_20_R4.java index e25fef53c..5bb1fb199 100644 --- a/nms/1_20_R4/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/NavigationPath1_20_R4.java +++ b/nms/1_20_R4/src/main/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/NavigationPath1_20_R4.java @@ -1,5 +1,6 @@ package me.gamercoder215.mobchip.abstraction.v1_20_R4; +import me.gamercoder215.mobchip.abstraction.ChipUtil; import me.gamercoder215.mobchip.ai.navigation.NavigationPath; import me.gamercoder215.mobchip.util.Position; import net.minecraft.world.level.pathfinder.Node; @@ -8,10 +9,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; +@SuppressWarnings("unchecked") final class NavigationPath1_20_R4 implements NavigationPath { private String name; private final Mob m; @@ -23,6 +27,18 @@ final class NavigationPath1_20_R4 implements NavigationPath { this.name = "bukkitpath"; this.handle = nms; this.speedMod = speedMod; + + try { + Field points = this.handle.getClass().getDeclaredField("a"); + points.setAccessible(true); + List pathPoints = (List) points.get(this.handle); + + nodes.addAll(pathPoints.stream() + .map(ChipUtil1_20_R4::fromNMS) + .collect(Collectors.toSet())); + } catch (ReflectiveOperationException e) { + ChipUtil.printStackTrace(e); + } } private final List nodes = new ArrayList<>(); diff --git a/nms/1_20_R4/src/test/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/OptimizedSmallEnumSet1_20_R4.java b/nms/1_20_R4/src/test/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/OptimizedSmallEnumSet1_20_R4.java index fcb48e324..e08b28a68 100644 --- a/nms/1_20_R4/src/test/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/OptimizedSmallEnumSet1_20_R4.java +++ b/nms/1_20_R4/src/test/java/me/gamercoder215/mobchip/abstraction/v1_20_R4/OptimizedSmallEnumSet1_20_R4.java @@ -4,7 +4,6 @@ // Used for Testing Purposes public final class OptimizedSmallEnumSet1_20_R4> { - private final Class enumClass; private long backingSet; public OptimizedSmallEnumSet1_20_R4(Class clazz) { @@ -13,7 +12,6 @@ public OptimizedSmallEnumSet1_20_R4(Class clazz) { } else if (!clazz.isEnum()) { throw new IllegalArgumentException("Class must be enum, not " + clazz.getCanonicalName()); } else { - this.enumClass = clazz; } } From 51d53dc0ebd2999d1bd18d5a920d650744a06b28 Mon Sep 17 00:00:00 2001 From: Gregory Mitchell <54124162+gmitch215@users.noreply.github.com> Date: Mon, 27 May 2024 00:52:41 -0500 Subject: [PATCH 5/5] Use Kotlin v2 DSL --- build.gradle.kts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index bcaa76855..ee2439678 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,4 +1,5 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { id("org.sonarqube") version "4.0.0.2929" @@ -176,11 +177,13 @@ subprojects { options.encoding = "UTF-8" options.isDeprecation = false options.isWarnings = false - options.compilerArgs.addAll(listOf("-Xlint:all", "-Xlint:-processing")) + options.compilerArgs.addAll(listOf("-Xlint:all", "-Xlint:-processing", "-Xlint:-options")) } compileKotlin { - kotlinOptions.jvmTarget = jvmVersion.toString() + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + } } jacocoTestReport {