Rushed Skript 2.6 support on 1.12.2, breaks 1.16 a bit
This commit is contained in:
parent
d59856dad7
commit
686d555a47
0
META-INF/MANIFEST.MF
Normal file → Executable file
0
META-INF/MANIFEST.MF
Normal file → Executable file
12
SkStuff.iml
12
SkStuff.iml
@ -18,13 +18,22 @@
|
|||||||
<src_folder value="file://$MODULE_DIR$/src" expected_position="0" />
|
<src_folder value="file://$MODULE_DIR$/src" expected_position="0" />
|
||||||
</src_description>
|
</src_description>
|
||||||
</component>
|
</component>
|
||||||
|
<component name="FacetManager">
|
||||||
|
<facet type="minecraft" name="Minecraft">
|
||||||
|
<configuration>
|
||||||
|
<autoDetectTypes>
|
||||||
|
<platformType>BUKKIT</platformType>
|
||||||
|
</autoDetectTypes>
|
||||||
|
</configuration>
|
||||||
|
</facet>
|
||||||
|
</component>
|
||||||
<component name="NewModuleRootManager">
|
<component name="NewModuleRootManager">
|
||||||
<output url="file://$MODULE_DIR$/bin" />
|
<output url="file://$MODULE_DIR$/bin" />
|
||||||
<content url="file://$MODULE_DIR$">
|
<content url="file://$MODULE_DIR$">
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
<orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
|
<orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
<orderEntry type="module-library">
|
<orderEntry type="module-library">
|
||||||
<library>
|
<library>
|
||||||
<CLASSES>
|
<CLASSES>
|
||||||
@ -155,5 +164,6 @@
|
|||||||
</SOURCES>
|
</SOURCES>
|
||||||
</library>
|
</library>
|
||||||
</orderEntry>
|
</orderEntry>
|
||||||
|
<orderEntry type="library" name="Skript-2.6" level="project" />
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
0
bin/META-INF/MANIFEST.MF
Normal file → Executable file
0
bin/META-INF/MANIFEST.MF
Normal file → Executable file
0
bin/META-INF/SkStuff.kotlin_module
Normal file → Executable file
0
bin/META-INF/SkStuff.kotlin_module
Normal file → Executable file
Binary file not shown.
Binary file not shown.
0
bin/me/TheBukor/SkStuff/effects/EffGZipFile.class
Normal file → Executable file
0
bin/me/TheBukor/SkStuff/effects/EffGZipFile.class
Normal file → Executable file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
0
bin/me/TheBukor/SkStuff/expressions/ExprGlideState.class
Normal file → Executable file
0
bin/me/TheBukor/SkStuff/expressions/ExprGlideState.class
Normal file → Executable file
0
bin/me/TheBukor/SkStuff/expressions/ExprInventoryOwner.class
Normal file → Executable file
0
bin/me/TheBukor/SkStuff/expressions/ExprInventoryOwner.class
Normal file → Executable file
Binary file not shown.
0
bin/me/TheBukor/SkStuff/expressions/ExprNoGravityState.class
Normal file → Executable file
0
bin/me/TheBukor/SkStuff/expressions/ExprNoGravityState.class
Normal file → Executable file
0
bin/me/TheBukor/SkStuff/expressions/ExprTimespanToNumber.class
Normal file → Executable file
0
bin/me/TheBukor/SkStuff/expressions/ExprTimespanToNumber.class
Normal file → Executable file
0
bin/me/TheBukor/SkStuff/expressions/ExprToLowerCase.class
Normal file → Executable file
0
bin/me/TheBukor/SkStuff/expressions/ExprToLowerCase.class
Normal file → Executable file
0
bin/me/TheBukor/SkStuff/expressions/ExprToUpperCase.class
Normal file → Executable file
0
bin/me/TheBukor/SkStuff/expressions/ExprToUpperCase.class
Normal file → Executable file
0
bin/me/TheBukor/SkStuff/expressions/ExprWordsToUpperCase.class
Normal file → Executable file
0
bin/me/TheBukor/SkStuff/expressions/ExprWordsToUpperCase.class
Normal file → Executable file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
0
plugin.yml
Normal file → Executable file
0
plugin.yml
Normal file → Executable file
0
src/META-INF/MANIFEST.MF
Normal file → Executable file
0
src/META-INF/MANIFEST.MF
Normal file → Executable file
37
src/me/TheBukor/SkStuff/SkStuff.java
Normal file → Executable file
37
src/me/TheBukor/SkStuff/SkStuff.java
Normal file → Executable file
@ -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.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(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%");
|
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.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(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)");
|
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 metrics = new Metrics(this, 1);
|
||||||
metrics.startSubmitting();
|
//metrics.startSubmitting();
|
||||||
getLogger().info("Hooked into Metrics! Woohoo!!");
|
//getLogger().info("Hooked into Metrics! Woohoo!!");
|
||||||
getLogger().info("Everything's ready!");
|
getLogger().info("Everything's ready!");
|
||||||
} else {
|
} else {
|
||||||
getLogger().info("Unable to find Skript or Skript isn't accepting registrations, disabling SkStuff...");
|
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();
|
String version = ReflectionUtils.getVersion();
|
||||||
|
|
||||||
switch (version) {
|
switch (version) {
|
||||||
case "v1_8_R3.":
|
case "v1_8_R3.":
|
||||||
nmsMethods = new NMS_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;
|
break;
|
||||||
case "v1_9_R2.":
|
case "v1_9_R2.":
|
||||||
nmsMethods = new NMS_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;
|
break;
|
||||||
case "v1_10_R1.":
|
case "v1_10_R1.":
|
||||||
nmsMethods = new NMS_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;
|
break;
|
||||||
case "v1_11_R1.":
|
case "v1_11_R1.":
|
||||||
nmsMethods = new NMS_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;
|
break;
|
||||||
case "v1_12_R1.":
|
case "v1_12_R1.":
|
||||||
nmsMethods = new NMS_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;
|
break;
|
||||||
case "v1_13_R2.":
|
case "v1_13_R2.":
|
||||||
nmsMethods = new NMS_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;
|
break;
|
||||||
case "v1_14_R1.":
|
case "v1_14_R1.":
|
||||||
nmsMethods = new NMS_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;
|
break;
|
||||||
case "v1_15_R1.":
|
case "v1_15_R1.":
|
||||||
nmsMethods = new NMS_v1_15_R1();
|
nmsMethods = new NMS_v1_15_R1();
|
||||||
getLogger().info("It looks like you're running 1.15.2!");
|
Bukkit.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!");
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "v1_16_R3.":
|
case "v1_16_R3.":
|
||||||
nmsMethods = new NMS_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;
|
break;
|
||||||
default:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
return nmsMethods != null;
|
return nmsMethods != null;
|
||||||
|
0
src/me/TheBukor/SkStuff/bstats/Metrics.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/bstats/Metrics.java
Normal file → Executable file
5
src/me/TheBukor/SkStuff/effects/EffClearPathGoals.java
Normal file → Executable file
5
src/me/TheBukor/SkStuff/effects/EffClearPathGoals.java
Normal file → Executable file
@ -2,6 +2,7 @@ package me.TheBukor.SkStuff.effects;
|
|||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.ArmorStand;
|
import org.bukkit.entity.ArmorStand;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -33,7 +34,11 @@ public class EffClearPathGoals extends Effect {
|
|||||||
LivingEntity[] ents = entities.getAll(e);
|
LivingEntity[] ents = entities.getAll(e);
|
||||||
for (LivingEntity ent : ents) {
|
for (LivingEntity ent : ents) {
|
||||||
if (!(ent instanceof Player || ent instanceof ArmorStand || ent == null)) {
|
if (!(ent instanceof Player || ent instanceof ArmorStand || ent == null)) {
|
||||||
|
if (SkStuff.setupNMSVersion()) {
|
||||||
SkStuff.getNMSMethods().clearPathfinderGoals(ent);
|
SkStuff.getNMSMethods().clearPathfinderGoals(ent);
|
||||||
|
} else {
|
||||||
|
//Bukkit.getMobGoals().removeAllGoals(ent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
0
src/me/TheBukor/SkStuff/effects/EffMakeJump.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/effects/EffMakeJump.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/effects/EffRemovePathGoal.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/effects/EffRemovePathGoal.java
Normal file → Executable file
7
src/me/TheBukor/SkStuff/effects/EffSetPathGoal.java
Normal file → Executable file
7
src/me/TheBukor/SkStuff/effects/EffSetPathGoal.java
Normal file → Executable file
@ -96,7 +96,7 @@ public final class EffSetPathGoal extends Effect {
|
|||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@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];
|
goalPriority = (Expression<Integer>) expr[0];
|
||||||
mark = result.mark;
|
mark = result.mark;
|
||||||
if (mark == 0) {
|
if (mark == 0) {
|
||||||
@ -155,7 +155,7 @@ public final class EffSetPathGoal extends Effect {
|
|||||||
bowShootUnkParam = (Expression<Number>) expr[36];
|
bowShootUnkParam = (Expression<Number>) expr[36];
|
||||||
bowShootFollowRange = (Expression<Number>) expr[37];
|
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
|
/* Debug stuff, just in case I need it
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (Expression<?> expression : expr) {
|
for (Expression<?> expression : expr) {
|
||||||
@ -550,9 +550,6 @@ public final class EffSetPathGoal extends Effect {
|
|||||||
case "v1.15_R1.":
|
case "v1.15_R1.":
|
||||||
newGoals.add(new PathfinderGoalFollow_v1_15_R1((net.minecraft.server.v1_15_R1.EntityCreature) nmsEnt, nmsClass, radius, spd, usesName, customName));
|
newGoals.add(new PathfinderGoalFollow_v1_15_R1((net.minecraft.server.v1_15_R1.EntityCreature) nmsEnt, nmsClass, radius, spd, usesName, customName));
|
||||||
break;
|
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.":
|
case "v1.16_R3.":
|
||||||
newGoals.add(new PathfinderGoalFollow_v1_16_R3((net.minecraft.server.v1_16_R3.EntityCreature) nmsEnt, nmsClass, radius, spd, usesName, customName));
|
newGoals.add(new PathfinderGoalFollow_v1_16_R3((net.minecraft.server.v1_16_R3.EntityCreature) nmsEnt, nmsClass, radius, spd, usesName, customName));
|
||||||
break;
|
break;
|
||||||
|
0
src/me/TheBukor/SkStuff/effects/EffShowEntityEffect.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/effects/EffShowEntityEffect.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/expressions/ExprFireProof.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/expressions/ExprFireProof.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/expressions/ExprNoClip.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/expressions/ExprNoClip.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/expressions/ExprStepLength.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/expressions/ExprStepLength.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_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
0
src/me/TheBukor/SkStuff/util/NMSInterface.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/util/NMSInterface.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/util/NMS_v1_10_R1.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/util/NMS_v1_10_R1.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/util/NMS_v1_11_R1.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/util/NMS_v1_11_R1.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/util/NMS_v1_12_R1.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/util/NMS_v1_12_R1.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/util/NMS_v1_13_R2.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/util/NMS_v1_13_R2.java
Normal file → Executable file
2
src/me/TheBukor/SkStuff/util/NMS_v1_14_R1.java
Normal file → Executable file
2
src/me/TheBukor/SkStuff/util/NMS_v1_14_R1.java
Normal file → Executable file
@ -47,7 +47,7 @@ public class NMS_v1_14_R1 implements NMSInterface {
|
|||||||
cField = PathfinderGoalSelector.class.getDeclaredField("c");
|
cField = PathfinderGoalSelector.class.getDeclaredField("c");
|
||||||
cField.setAccessible(true);
|
cField.setAccessible(true);
|
||||||
dField.set(goalSelector, new LinkedHashSet<>());
|
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;
|
Field fField;
|
||||||
fField = PathfinderGoalSelector.class.getDeclaredField("f");
|
fField = PathfinderGoalSelector.class.getDeclaredField("f");
|
||||||
|
0
src/me/TheBukor/SkStuff/util/NMS_v1_15_R1.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/util/NMS_v1_15_R1.java
Normal file → Executable file
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -16,7 +16,7 @@ public class NMS_v1_16_R3 implements NMSInterface {
|
|||||||
@Override
|
@Override
|
||||||
public void clearPathfinderGoals(Entity entity) {
|
public void clearPathfinderGoals(Entity entity) {
|
||||||
Mob e = (Mob) entity;
|
Mob e = (Mob) entity;
|
||||||
Bukkit.getMobGoals().removeAllGoals(e);
|
//Bukkit.getMobGoals().removeAllGoals(e);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
0
src/me/TheBukor/SkStuff/util/NMS_v1_8_R3.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/util/NMS_v1_8_R3.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/util/NMS_v1_9_R2.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/util/NMS_v1_9_R2.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/util/ReflectionUtils.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/util/ReflectionUtils.java
Normal file → Executable file
Loading…
Reference in New Issue
Block a user