diff --git a/.gitignore b/.gitignore
index 35b299d..cf747cb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,5 @@
-out
-bin
-META-INF
+out/
+bin/
+META-INF/
.settings
-.idea
+.idea/
diff --git a/.idea/$PRODUCT_WORKSPACE_FILE$ b/.idea – kopija/$PRODUCT_WORKSPACE_FILE$
similarity index 100%
rename from .idea/$PRODUCT_WORKSPACE_FILE$
rename to .idea – kopija/$PRODUCT_WORKSPACE_FILE$
diff --git a/.idea – kopija/artifacts/SkStuff_jar.xml b/.idea – kopija/artifacts/SkStuff_jar.xml
new file mode 100644
index 0000000..6eff031
--- /dev/null
+++ b/.idea – kopija/artifacts/SkStuff_jar.xml
@@ -0,0 +1,10 @@
+
+
+ $PROJECT_DIR$/out/artifacts/SkStuff_jar
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/dictionaries/Govindas.xml b/.idea – kopija/dictionaries/Govindas.xml
similarity index 100%
rename from .idea/dictionaries/Govindas.xml
rename to .idea – kopija/dictionaries/Govindas.xml
diff --git a/.idea – kopija/discord.xml b/.idea – kopija/discord.xml
new file mode 100644
index 0000000..59b11d1
--- /dev/null
+++ b/.idea – kopija/discord.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea – kopija/misc.xml b/.idea – kopija/misc.xml
new file mode 100644
index 0000000..e208459
--- /dev/null
+++ b/.idea – kopija/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea – kopija/modules.xml b/.idea – kopija/modules.xml
new file mode 100644
index 0000000..a1beb97
--- /dev/null
+++ b/.idea – kopija/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea – kopija/uiDesigner.xml
similarity index 100%
rename from .idea/uiDesigner.xml
rename to .idea – kopija/uiDesigner.xml
diff --git a/.idea – kopija/workspace.xml b/.idea – kopija/workspace.xml
new file mode 100644
index 0000000..e9f575c
--- /dev/null
+++ b/.idea – kopija/workspace.xml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1573731941395
+
+
+ 1573731941395
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/artifacts/SkStuff_jar.xml b/.idea/artifacts/SkStuff_jar.xml
index 6eff031..15a3c1a 100644
--- a/.idea/artifacts/SkStuff_jar.xml
+++ b/.idea/artifacts/SkStuff_jar.xml
@@ -3,8 +3,7 @@
$PROJECT_DIR$/out/artifacts/SkStuff_jar
-
-
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index e9f575c..a686155 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -1,31 +1,38 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
-
-
@@ -46,30 +53,26 @@
-
- 1573731941395
+
+ 1578912360094
- 1573731941395
+ 1578912360094
-
+
-
-
+
+
-
-
+
+
-
-
-
-
-
+
\ No newline at end of file
diff --git a/SkStuff.iml b/SkStuff.iml
index 7443437..3e06e53 100644
--- a/SkStuff.iml
+++ b/SkStuff.iml
@@ -25,176 +25,47 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bin/me/TheBukor/SkStuff/effects/EffSetPathGoal.class b/bin/me/TheBukor/SkStuff/effects/EffSetPathGoal.class
index f2d9ac0..f840860 100644
Binary files a/bin/me/TheBukor/SkStuff/effects/EffSetPathGoal.class and b/bin/me/TheBukor/SkStuff/effects/EffSetPathGoal.class differ
diff --git a/src/META-INF/MANIFEST.MF b/src/META-INF/MANIFEST.MF
deleted file mode 100644
index b03825d..0000000
--- a/src/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-Main-Class: me.TheBukor.SkStuff.SkStuff
-
diff --git a/src/me/TheBukor/SkStuff/effects/EffSetPathGoal.java b/src/me/TheBukor/SkStuff/effects/EffSetPathGoal.java
index 4fdb55b..d20c928 100644
--- a/src/me/TheBukor/SkStuff/effects/EffSetPathGoal.java
+++ b/src/me/TheBukor/SkStuff/effects/EffSetPathGoal.java
@@ -43,7 +43,6 @@ import me.TheBukor.SkStuff.SkStuff;
import me.TheBukor.SkStuff.pathfinders.PathfinderGoalFollow_v1_13_R2;
import me.TheBukor.SkStuff.pathfinders.PathfinderGoalFollow_v1_14_R1;
import me.TheBukor.SkStuff.util.ReflectionUtils;
-import net.minecraft.server.v1_8_R3.EntityCreature;
public final class EffSetPathGoal extends Effect {
private Expression goalPriority;
diff --git a/src/me/TheBukor/SkStuff/pathfinders/PathfinderGoalFollow_v1_15_R1.java b/src/me/TheBukor/SkStuff/pathfinders/PathfinderGoalFollow_v1_15_R1.java
new file mode 100644
index 0000000..8cdc1af
--- /dev/null
+++ b/src/me/TheBukor/SkStuff/pathfinders/PathfinderGoalFollow_v1_15_R1.java
@@ -0,0 +1,79 @@
+package me.TheBukor.SkStuff.pathfinders;
+
+import net.minecraft.server.v1_15_R1.Entity;
+import net.minecraft.server.v1_15_R1.EntityCreature;
+import net.minecraft.server.v1_15_R1.EntityLiving;
+import net.minecraft.server.v1_15_R1.PathfinderGoal;
+
+import java.util.List;
+
+public class PathfinderGoalFollow_v1_15_R1 extends PathfinderGoal {
+ private EntityCreature follower;
+ private EntityLiving followed;
+ private Class> followedClass;
+ private float radius;
+ private double speed;
+ private boolean isByName;
+ private String customName;
+
+ public PathfinderGoalFollow_v1_15_R1(EntityCreature follower, Class> followedClass, float radius, double speed, boolean isByName, String customName) {
+ this.follower = follower;
+ this.followedClass = followedClass;
+ this.radius = radius;
+ this.speed = speed;
+ this.isByName = isByName;
+ this.customName = customName;
+ }
+
+ // a() is shouldExecute()
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean a() {
+ if (followed == null) {
+ List> list = follower.world.a((Class extends Entity>) followedClass, follower.getBoundingBox().grow(radius, 4.0D, radius));
+ if (list.isEmpty()) {
+ return false;
+ }
+ if (isByName) {
+ for (Object entity : list) {
+ if (((EntityLiving) entity).getCustomName().equals(customName)) {
+ followed = (EntityLiving) entity;
+ return true;
+ }
+ }
+ } else {
+ followed = (EntityLiving) list.get(0);
+ return true;
+ }
+ }
+ return true;
+ }
+
+ // b() is shouldContinueExecuting()
+ @Override
+ public boolean b() {
+ if (followed.dead) {
+ followed = null;
+ return false;
+ } else if (followed.h(follower) < 9.0D || followed.h(follower) > Math.pow(radius, 2)) { // h() = distanceSquaredFrom()
+ return false; // if 3 blocks away or not in radius, stop moving.
+ //Maybe I'll add a teleport feature later.
+ } else if (isByName) {
+ if (!followed.getCustomName().equals(customName)) {
+ followed = null;
+ return false;
+ }
+ }
+ //return follower.getNavigation().n(); // n() means hasNoPath()
+ return true;
+ // n() is now protected void and I'm not sure how to access it, so I'm just returning a boolean, this probably will cause some issues with this pathfinder goal, if you know a better solution, let me know. - Govindas.
+ }
+
+ // c() is execute()
+ @Override
+ public void c () {
+ follower.getNavigation().a(followed, speed); // a() means moveTo()
+ }
+
+
+ }