Rushed Skript 2.6 support on 1.12.2, breaks 1.16 a bit
This commit is contained in:
parent
d59856dad7
commit
686d555a47
12
SkStuff.iml
12
SkStuff.iml
|
@ -18,13 +18,22 @@
|
|||
<src_folder value="file://$MODULE_DIR$/src" expected_position="0" />
|
||||
</src_description>
|
||||
</component>
|
||||
<component name="FacetManager">
|
||||
<facet type="minecraft" name="Minecraft">
|
||||
<configuration>
|
||||
<autoDetectTypes>
|
||||
<platformType>BUKKIT</platformType>
|
||||
</autoDetectTypes>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager">
|
||||
<output url="file://$MODULE_DIR$/bin" />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
|
@ -155,5 +164,6 @@
|
|||
</SOURCES>
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="library" name="Skript-2.6" level="project" />
|
||||
</component>
|
||||
</module>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -27,15 +27,15 @@ public class SkStuff extends JavaPlugin {
|
|||
Skript.registerExpression(ExprStepLength.class, Number.class, ExpressionType.PROPERTY, "[the] step length of %entity%", "%entity%'s step length");
|
||||
Skript.registerEffect(EffClearPathGoals.class, "(clear|delete) [all] pathfind[er] goals (of|from) %livingentities%");
|
||||
Skript.registerEffect(EffRemovePathGoal.class, "remove pathfind[er] goal (0¦(avoid|run away from) entit(y|ies)|1¦break door[s]|2¦breed|3¦eat grass|4¦(flee from the sun|seek shad(e|ow))|5¦float (in[side]|on) water|6¦follow (owner|tamer)|7¦follow (adult|parent)[s]|8¦(fight back|react to|target) (damager|attacker)|9¦o(c|z)elot jump on blocks|10¦leap at target|11¦look at entit(y|ies)|12¦melee attack entit(y|ies)|13¦move to[wards] target|14¦target nearest entity|15¦o(c|z)elot attack [chicken[s]]|16¦open door[s]|17¦(panic|flee)|18¦look around randomly|19¦(walk around randomly|wander)|20¦sit|21¦[creeper] (explode|inflate|swell)|22¦squid (swim|wander)|23¦shoot fireball[s]|24¦[silverfish] hide (in[side]|on) block[s]|25¦(wake other silverfish[es]|[silverfish] call (help|reinforcement|other [hidden] silverfish[es]))|26¦[enderm(a|e)n] pick[[ ]up] block[s]|27¦[enderm(a|e)n] place block[s]|28¦[enderman] attack player (staring|looking) [at eye[s]]|29¦ghast move to[wards] target|30¦ghast (idle move[ment]|wander|random fl(ight|y[ing]))|31¦(tempt to|follow players (holding|with)) [a[n]] item|32¦target [random] entity (if|when) (not tamed|untamed)|33¦guardian attack [entity]|34¦[z[ombie[ ]]pig[man]] attack [player[s]] (if|when) angry|35¦[z[ombie[ ]]pig[man]] (react to|fight back|target) (attacker|damager) (if|when) angry|36¦[rabbit] eat carrot crops|37¦[killer] rabbit [melee] attack|38¦slime [random] jump|39¦slime change (direction|facing) randomly|40¦slime (idle move[ment]|wander)|41¦follow [entity]|42¦bow shoot) from %livingentities%");
|
||||
// Note to self: whenever adding a new pathfinder goal, increase the expression index for 'entities' in EffSetPathGoal
|
||||
Skript.registerEffect(EffSetPathGoal.class, "add pathfind[er] goal [[with] priority %-integer%] (0¦(avoid|run away from) %*entitydatas%[, radius %-number%[, speed %-number%[, speed (if|when) (close|near) %-number%]]]|1¦break door[s]|2¦breed[,[move[ment]] speed %-number%]|3¦eat grass|4¦(flee from the sun|seek shad(e|ow))[, [move[ment]] speed %-number%]|5¦(float (in[side]|on) water|swim)|6¦follow (owner|tamer)[, speed %-number%[, min[imum] distance %-number%[, max[imum] distance %-number%]]]|7¦follow (adult|parent)[s][, [move[ment]] speed %-number%]|8¦(fight back|react to|target) (damager|attacker) [[of] type] %*entitydatas%[, call ([for] help|reinforcement) %-boolean%]|9¦o(c|z)elot jump on blocks[, [move[ment]] speed %-number%]|10¦leap at target[, [leap] height %-number%]|11¦look at %*entitydatas%[, (radius|max[imum] distance) %-number%]|12¦melee attack %*entitydatas%[, [move[ment]] speed %-number%[, (memorize|do('nt| not) forget) target [for [a] long[er] time] %-boolean%]]|13¦move to[wards] target[, [move[ment]] speed %-number%[, (radius|max[imum] distance) %-number%]]|14¦target nearest [entity [of] type] %*entitydatas%[, check sight %-boolean%]|15¦o(c|z)elot attack|16¦open door[s]|17¦(panic|flee)[, [move[ment]] speed %-number%]|18¦look around randomly|19¦(walk around randomly|wander)[, [move[ment]] speed %-number%[, min[imum] [of] %-timespan% between mov(e[ment][s]|ing)]]|20¦sit|21¦[creeper] (explode|inflate|swell)|22¦squid (swim around|wander)|23¦shoot fireball[s]|24¦[silverfish] hide (in[side]|on) block[s]|25¦((call|summon|wake) [other] [hidden] silverfish[es])|26¦[enderman] pick[[ ]up] block[s]|27¦[enderman] place block[s]|28¦[enderman] attack player (staring|looking) at [their] eye[s]]|29¦ghast move to[wards] target|30¦ghast (idle move[ment]|wander|random fl(ight|y[ing]))|31¦(tempt to|follow players (holding|with)) %-itemstack%[, [move[ment]] speed %number%[, scared of player movement %-boolean%]]|32¦target [random] %*entitydatas% (if|when) (not |un)tamed|33¦guardian attack [entities]|34¦[z[ombie[ ]]pig[man]] attack [player[s]] (if|when) angry|35¦[z[ombie[ ]]pig[man]] (react to|fight back|target) (attacker|damager) (if|when) angry|36¦[rabbit] eat carrot crops|37¦[killer] rabbit [melee] attack|38¦slime [random] jump|39¦slime change (direction|facing) randomly|40¦slime (idle move[ment]|wander)|41¦follow %*entitydatas%[, radius %-number%[, speed %-number%[, [custom[ ]]name[d] %-string%]]]|42¦bow shoot[, [move[ment]] speed %-number%[, unk[nown] param[eter] %-number%[, follow range %-number%]]])) to %livingentities%");
|
||||
|
||||
Skript.registerEffect(EffSetPathGoal.class, "add pathfind[er] goal [[with] priority %-integer%] (0¦(avoid|run away from) %*entitydatas%[, radius %-number%[, speed %-number%[, speed (if|when) (close|near) %-number%]]]|1¦break door[s]|2¦breed[,[move[ment]] speed %-number%]|3¦eat grass|4¦(flee from the sun|seek shad(e|ow))[, [move[ment]] speed %-number%]|5¦(float (in[side]|on) water|swim)|6¦follow (owner|tamer)[, speed %-number%[, min[imum] distance %-number%[, max[imum] distance %-number%]]]|7¦follow (adult|parent)[s][, [move[ment]] speed %-number%]|8¦(fight back|react to|target) (damager|attacker) [[of] type] %*entitydatas%[, call ([for] help|reinforcement) %-boolean%]|9¦o(c|z)elot jump on blocks[, [move[ment]] speed %-number%]|10¦leap at target[, [leap] height %-number%]|11¦look at %*entitydatas%[, (radius|max[imum] distance) %-number%]|12¦melee attack %*entitydatas%[, [move[ment]] speed %-number%[, (memorize|do('nt| not) forget) target [for [a] long[er] time] %-boolean%]]|13¦move to[wards] target[, [move[ment]] speed %-number%[, (radius|max[imum] distance) %-number%]]|14¦target nearest [entity [of] type] %*entitydatas%[, check sight %-boolean%]|15¦o(c|z)elot attack|16¦open door[s]|17¦(panic|flee)[, [move[ment]] speed %-number%]|18¦look around randomly|19¦(walk around randomly|wander)[, [move[ment]] speed %-number%[, min[imum] [of] %-timespan% between mov(e[ment][s]|ing)]]|20¦sit|21¦[creeper] (explode|inflate|swell)|22¦squid (swim around|wander)|23¦shoot fireball[s]|24¦[silverfish] hide (in[side]|on) block[s]|25¦((call|summon|wake) [other] [hidden] silverfish[es])|26¦[enderman] pick[[ ]up] block[s]|27¦[enderman] place block[s]|28¦[enderman] attack player (staring|looking) at [their] eye[s]]|29¦ghast move to[wards] target|30¦ghast (idle move[ment]|wander|random fl(ight|y[ing]))|31¦(tempt to|follow players (holding|with)) %-itemstack%[, [move[ment]] speed %number%[, scared of player movement %-boolean%]]|32¦target [random] %*entitydatas% (if|when) (not |un)tamed|33¦guardian attack [entities]|34¦[z[ombie[ ]]pig[man]] attack [player[s]] (if|when) angry|35¦[z[ombie[ ]]pig[man]] (react to|fight back|target) (attacker|damager) (if|when) angry|36¦[rabbit] eat carrot crops|37¦[killer] rabbit [melee] attack|38¦slime [random] jump|39¦slime change (direction|facing) randomly|40¦slime (idle move[ment]|wander)|41¦follow %*entitydatas%[, radius %-number%[, speed %-number%[, [custom[ ]]name[d] %-string%]]]|42¦bow shoot[, [move[ment]] speed %-number%[, unk[nown] param[eter] %-number%[, follow range %-number%]]]) to %livingentities%");
|
||||
Skript.registerEffect(EffMakeJump.class, "make %livingentities% jump", "force %livingentities% to jump");
|
||||
Skript.registerExpression(ExprNoClip.class, Boolean.class, ExpressionType.PROPERTY, "no[( |-)]clip (state|mode) of %entities%", "%entities%'s no[( |-)]clip (state|mode)");
|
||||
Skript.registerExpression(ExprFireProof.class, Boolean.class, ExpressionType.PROPERTY, "fire[ ]proof (state|mode) of %entities%", "%entities%'s fire[ ]proof (state|mode)");
|
||||
}
|
||||
Metrics metrics = new Metrics(this, 1);
|
||||
metrics.startSubmitting();
|
||||
getLogger().info("Hooked into Metrics! Woohoo!!");
|
||||
//Metrics metrics = new Metrics(this, 1);
|
||||
//metrics.startSubmitting();
|
||||
//getLogger().info("Hooked into Metrics! Woohoo!!");
|
||||
getLogger().info("Everything's ready!");
|
||||
} else {
|
||||
getLogger().info("Unable to find Skript or Skript isn't accepting registrations, disabling SkStuff...");
|
||||
|
@ -43,52 +43,49 @@ public class SkStuff extends JavaPlugin {
|
|||
}
|
||||
}
|
||||
|
||||
private boolean setupNMSVersion() {
|
||||
public static boolean setupNMSVersion() {
|
||||
String version = ReflectionUtils.getVersion();
|
||||
|
||||
switch (version) {
|
||||
case "v1_8_R3.":
|
||||
nmsMethods = new NMS_v1_8_R3();
|
||||
getLogger().info("It looks like you're running 1.8.8!");
|
||||
Bukkit.getLogger().info("It looks like you're running 1.8.8!");
|
||||
break;
|
||||
case "v1_9_R2.":
|
||||
nmsMethods = new NMS_v1_9_R2();
|
||||
getLogger().info("It looks like you're running 1.9.4!");
|
||||
Bukkit.getLogger().info("It looks like you're running 1.9.4!");
|
||||
break;
|
||||
case "v1_10_R1.":
|
||||
nmsMethods = new NMS_v1_10_R1();
|
||||
getLogger().info("It looks like you're running 1.10.2!");
|
||||
Bukkit.getLogger().info("It looks like you're running 1.10.2!");
|
||||
break;
|
||||
case "v1_11_R1.":
|
||||
nmsMethods = new NMS_v1_11_R1();
|
||||
getLogger().info("It looks like you're running 1.11.2!");
|
||||
Bukkit.getLogger().info("It looks like you're running 1.11.2!");
|
||||
break;
|
||||
case "v1_12_R1.":
|
||||
nmsMethods = new NMS_v1_12_R1();
|
||||
getLogger().info("It looks like you're running 1.12.2!");
|
||||
Bukkit.getLogger().info("It looks like you're running 1.12.2!");
|
||||
break;
|
||||
case "v1_13_R2.":
|
||||
nmsMethods = new NMS_v1_13_R2();
|
||||
getLogger().info("It looks like you're running 1.13.2!");
|
||||
Bukkit.getLogger().info("It looks like you're running 1.13.2!");
|
||||
break;
|
||||
case "v1_14_R1.":
|
||||
nmsMethods = new NMS_v1_14_R1();
|
||||
getLogger().info("It looks like you're running 1.14.4!");
|
||||
Bukkit.getLogger().info("It looks like you're running 1.14.4!");
|
||||
break;
|
||||
case "v1_15_R1.":
|
||||
nmsMethods = new NMS_v1_15_R1();
|
||||
getLogger().info("It looks like you're running 1.15.2!");
|
||||
break;
|
||||
case "v1_16_R2.":
|
||||
nmsMethods = new NMS_v1_16_R2();
|
||||
getLogger().info("It looks like you're running 1.16.3!");
|
||||
Bukkit.getLogger().info("It looks like you're running 1.15.2!");
|
||||
break;
|
||||
|
||||
case "v1_16_R3.":
|
||||
nmsMethods = new NMS_v1_16_R3();
|
||||
getLogger().info("It looks like you're running 1.16.4!");
|
||||
Bukkit.getLogger().info("It looks like you're running 1.16.4!");
|
||||
break;
|
||||
default:
|
||||
getLogger().warning("It looks like you're running an unsupported server version, some features will not be available :(");
|
||||
Bukkit.getLogger().warning("It looks like you're running an unsupported server version, some features will not be available :(");
|
||||
break;
|
||||
}
|
||||
return nmsMethods != null;
|
||||
|
|
|
@ -2,6 +2,7 @@ package me.TheBukor.SkStuff.effects;
|
|||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.ArmorStand;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -33,7 +34,11 @@ public class EffClearPathGoals extends Effect {
|
|||
LivingEntity[] ents = entities.getAll(e);
|
||||
for (LivingEntity ent : ents) {
|
||||
if (!(ent instanceof Player || ent instanceof ArmorStand || ent == null)) {
|
||||
SkStuff.getNMSMethods().clearPathfinderGoals(ent);
|
||||
if (SkStuff.setupNMSVersion()) {
|
||||
SkStuff.getNMSMethods().clearPathfinderGoals(ent);
|
||||
} else {
|
||||
//Bukkit.getMobGoals().removeAllGoals(ent);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -96,7 +96,7 @@ public final class EffSetPathGoal extends Effect {
|
|||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public final boolean init(Expression<?>[] expr, int matchedPattern, Kleenean arg2, ParseResult result) {
|
||||
public boolean init(Expression<?>[] expr, int matchedPattern, Kleenean arg2, ParseResult result) {
|
||||
goalPriority = (Expression<Integer>) expr[0];
|
||||
mark = result.mark;
|
||||
if (mark == 0) {
|
||||
|
@ -155,7 +155,7 @@ public final class EffSetPathGoal extends Effect {
|
|||
bowShootUnkParam = (Expression<Number>) expr[36];
|
||||
bowShootFollowRange = (Expression<Number>) expr[37];
|
||||
}
|
||||
entities = (Expression<LivingEntity>) expr[38];
|
||||
entities = (Expression<LivingEntity>) expr[expr.length - 1];
|
||||
/* Debug stuff, just in case I need it
|
||||
int i = 0;
|
||||
for (Expression<?> expression : expr) {
|
||||
|
@ -550,9 +550,6 @@ public final class EffSetPathGoal extends Effect {
|
|||
case "v1.15_R1.":
|
||||
newGoals.add(new PathfinderGoalFollow_v1_15_R1((net.minecraft.server.v1_15_R1.EntityCreature) nmsEnt, nmsClass, radius, spd, usesName, customName));
|
||||
break;
|
||||
case "v1.16_R2.":
|
||||
newGoals.add(new PathfinderGoalFollow_v1_16_R2((net.minecraft.server.v1_16_R2.EntityCreature) nmsEnt, nmsClass, radius, spd, usesName, customName));
|
||||
break;
|
||||
case "v1.16_R3.":
|
||||
newGoals.add(new PathfinderGoalFollow_v1_16_R3((net.minecraft.server.v1_16_R3.EntityCreature) nmsEnt, nmsClass, radius, spd, usesName, customName));
|
||||
break;
|
||||
|
|
0
src/me/TheBukor/SkStuff/pathfinders/PathfinderGoalFollow_v1_13_R2.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/pathfinders/PathfinderGoalFollow_v1_13_R2.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/pathfinders/PathfinderGoalFollow_v1_14_R1.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/pathfinders/PathfinderGoalFollow_v1_14_R1.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/pathfinders/PathfinderGoalFollow_v1_15_R1.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/pathfinders/PathfinderGoalFollow_v1_15_R1.java
Normal file → Executable file
|
@ -1,79 +0,0 @@
|
|||
package me.TheBukor.SkStuff.pathfinders;
|
||||
|
||||
import net.minecraft.server.v1_16_R2.Entity;
|
||||
import net.minecraft.server.v1_16_R2.EntityCreature;
|
||||
import net.minecraft.server.v1_16_R2.EntityLiving;
|
||||
import net.minecraft.server.v1_16_R2.PathfinderGoal;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class PathfinderGoalFollow_v1_16_R2 extends PathfinderGoal {
|
||||
private final EntityCreature follower;
|
||||
private EntityLiving followed;
|
||||
private final Class<?> followedClass;
|
||||
private final float radius;
|
||||
private final double speed;
|
||||
private final boolean isByName;
|
||||
private final String customName;
|
||||
|
||||
public PathfinderGoalFollow_v1_16_R2(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()
|
||||
}
|
||||
|
||||
|
||||
}
|
0
src/me/TheBukor/SkStuff/pathfinders/PathfinderGoalFollow_v1_16_R3.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/pathfinders/PathfinderGoalFollow_v1_16_R3.java
Normal file → Executable file
|
@ -47,7 +47,7 @@ public class NMS_v1_14_R1 implements NMSInterface {
|
|||
cField = PathfinderGoalSelector.class.getDeclaredField("c");
|
||||
cField.setAccessible(true);
|
||||
dField.set(goalSelector, new LinkedHashSet<>());
|
||||
cField.set(targetSelector, new EnumMap<>(net.minecraft.server.v1_16_R2.PathfinderGoal.Type.class));
|
||||
cField.set(targetSelector, new EnumMap<>(net.minecraft.server.v1_14_R1.PathfinderGoal.Type.class));
|
||||
|
||||
Field fField;
|
||||
fField = PathfinderGoalSelector.class.getDeclaredField("f");
|
||||
|
|
|
@ -1,79 +0,0 @@
|
|||
package me.TheBukor.SkStuff.util;
|
||||
|
||||
|
||||
import net.minecraft.server.v1_16_R2.EntityInsentient;
|
||||
import net.minecraft.server.v1_16_R2.PathfinderGoal;
|
||||
import net.minecraft.server.v1_16_R2.PathfinderGoalSelector;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.craftbukkit.v1_16_R2.entity.CraftEntity;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Mob;
|
||||
|
||||
import java.util.LinkedHashSet;
|
||||
|
||||
public class NMS_v1_16_R2 implements NMSInterface {
|
||||
|
||||
@Override
|
||||
public void clearPathfinderGoals(Entity entity) {
|
||||
Mob e = (Mob) entity;
|
||||
Bukkit.getMobGoals().removeAllGoals(e);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removePathfinderGoal(Object entity, Class<?> goalClass, boolean isTargetSelector) {
|
||||
if (entity instanceof EntityInsentient) {
|
||||
((EntityInsentient) entity).setGoalTarget(null);
|
||||
if (isTargetSelector) {
|
||||
((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, ((EntityInsentient) entity).targetSelector)).removeIf(goal -> ReflectionUtils.getField("a", goal.getClass(), goal).getClass() == goalClass);
|
||||
} else {
|
||||
((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, ((EntityInsentient) entity).goalSelector)).removeIf(goal -> ReflectionUtils.getField("a", goal.getClass(), goal).getClass() == goalClass);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addPathfinderGoal(Object entity, int priority, Object goal, boolean isTargetSelector) {
|
||||
if (entity instanceof EntityInsentient && goal instanceof PathfinderGoal) {
|
||||
if (isTargetSelector)
|
||||
((EntityInsentient) entity).targetSelector.a(priority, (PathfinderGoal) goal);
|
||||
else
|
||||
((EntityInsentient) entity).goalSelector.a(priority, (PathfinderGoal) goal);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean getNoClip(Entity entity) {
|
||||
net.minecraft.server.v1_16_R2.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
return nmsEntity.noclip;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNoClip(Entity entity, boolean noclip) {
|
||||
net.minecraft.server.v1_16_R2.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
nmsEntity.noclip = noclip;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getFireProof(Entity entity) {
|
||||
net.minecraft.server.v1_16_R2.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
return nmsEntity.isFireProof();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFireProof(Entity entity, boolean fireProof) {
|
||||
net.minecraft.server.v1_16_R2.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
ReflectionUtils.setField("fireProof", nmsEntity.getClass(), nmsEntity, fireProof);
|
||||
}
|
||||
public float getEntityStepLength(Entity entity) {
|
||||
net.minecraft.server.v1_16_R2.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
return nmsEntity.G;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEntityStepLength(Entity entity, float length) {
|
||||
net.minecraft.server.v1_16_R2.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
nmsEntity.G = length;
|
||||
}
|
||||
}
|
|
@ -13,67 +13,67 @@ import java.util.LinkedHashSet;
|
|||
|
||||
public class NMS_v1_16_R3 implements NMSInterface {
|
||||
|
||||
@Override
|
||||
public void clearPathfinderGoals(Entity entity) {
|
||||
Mob e = (Mob) entity;
|
||||
Bukkit.getMobGoals().removeAllGoals(e);
|
||||
@Override
|
||||
public void clearPathfinderGoals(Entity entity) {
|
||||
Mob e = (Mob) entity;
|
||||
//Bukkit.getMobGoals().removeAllGoals(e);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removePathfinderGoal(Object entity, Class<?> goalClass, boolean isTargetSelector) {
|
||||
if (entity instanceof EntityInsentient) {
|
||||
((EntityInsentient) entity).setGoalTarget(null);
|
||||
if (isTargetSelector) {
|
||||
((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, ((EntityInsentient) entity).targetSelector)).removeIf(goal -> ReflectionUtils.getField("a", goal.getClass(), goal).getClass() == goalClass);
|
||||
} else {
|
||||
((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, ((EntityInsentient) entity).goalSelector)).removeIf(goal -> ReflectionUtils.getField("a", goal.getClass(), goal).getClass() == goalClass);
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void removePathfinderGoal(Object entity, Class<?> goalClass, boolean isTargetSelector) {
|
||||
if (entity instanceof EntityInsentient) {
|
||||
((EntityInsentient) entity).setGoalTarget(null);
|
||||
if (isTargetSelector) {
|
||||
((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, ((EntityInsentient) entity).targetSelector)).removeIf(goal -> ReflectionUtils.getField("a", goal.getClass(), goal).getClass() == goalClass);
|
||||
} else {
|
||||
((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, ((EntityInsentient) entity).goalSelector)).removeIf(goal -> ReflectionUtils.getField("a", goal.getClass(), goal).getClass() == goalClass);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addPathfinderGoal(Object entity, int priority, Object goal, boolean isTargetSelector) {
|
||||
if (entity instanceof EntityInsentient && goal instanceof PathfinderGoal) {
|
||||
if (isTargetSelector)
|
||||
((EntityInsentient) entity).targetSelector.a(priority, (PathfinderGoal) goal);
|
||||
else
|
||||
((EntityInsentient) entity).goalSelector.a(priority, (PathfinderGoal) goal);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void addPathfinderGoal(Object entity, int priority, Object goal, boolean isTargetSelector) {
|
||||
if (entity instanceof EntityInsentient && goal instanceof PathfinderGoal) {
|
||||
if (isTargetSelector)
|
||||
((EntityInsentient) entity).targetSelector.a(priority, (PathfinderGoal) goal);
|
||||
else
|
||||
((EntityInsentient) entity).goalSelector.a(priority, (PathfinderGoal) goal);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean getNoClip(Entity entity) {
|
||||
net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
return nmsEntity.noclip;
|
||||
}
|
||||
@Override
|
||||
public boolean getNoClip(Entity entity) {
|
||||
net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
return nmsEntity.noclip;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNoClip(Entity entity, boolean noclip) {
|
||||
net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
nmsEntity.noclip = noclip;
|
||||
}
|
||||
@Override
|
||||
public void setNoClip(Entity entity, boolean noclip) {
|
||||
net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
nmsEntity.noclip = noclip;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getFireProof(Entity entity) {
|
||||
net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
return nmsEntity.isFireProof();
|
||||
}
|
||||
@Override
|
||||
public boolean getFireProof(Entity entity) {
|
||||
net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
return nmsEntity.isFireProof();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFireProof(Entity entity, boolean fireProof) {
|
||||
net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
ReflectionUtils.setField("fireProof", nmsEntity.getClass(), nmsEntity, fireProof);
|
||||
}
|
||||
public float getEntityStepLength(Entity entity) {
|
||||
net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
return nmsEntity.G;
|
||||
}
|
||||
@Override
|
||||
public void setFireProof(Entity entity, boolean fireProof) {
|
||||
net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
ReflectionUtils.setField("fireProof", nmsEntity.getClass(), nmsEntity, fireProof);
|
||||
}
|
||||
public float getEntityStepLength(Entity entity) {
|
||||
net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
return nmsEntity.G;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEntityStepLength(Entity entity, float length) {
|
||||
net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
nmsEntity.G = length;
|
||||
}
|
||||
@Override
|
||||
public void setEntityStepLength(Entity entity, float length) {
|
||||
net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
nmsEntity.G = length;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue