Compare commits

..

31 Commits

Author SHA1 Message Date
Govindass
7727e0a02c Quick 1.16.4 support 2020-11-03 13:01:31 +02:00
Govindass
80217b49dd start using Paper API for 1.16+ pathfinder goal removal 2020-10-30 09:40:47 +02:00
Govindass
655b8a014f Revert "1.16.1 - 1.16.2 support & some refactoring"
This reverts commit c6675f2b8e.
2020-10-27 10:15:51 +02:00
Govindass
d9db0046a3 Update .gitignore 2020-10-27 10:15:40 +02:00
Govindass
c6675f2b8e 1.16.1 - 1.16.2 support & some refactoring 2020-09-13 13:03:56 +03:00
Govindass
450c38e87e Merge branch 'master' of https://github.com/Govindass/SkStuff 2020-07-28 11:33:18 +03:00
Govindass
4a451c0ae2 remove old 1.9.2 2020-07-28 11:33:14 +03:00
Govindas
4eeb792318
Update README.md 2020-07-21 15:23:27 +03:00
Govindass
af60b96e4a Add 1.16 support & Add more syntaxes & Add 1.8-1.12 support back & Remove some syntaxes that are already in vanilla Skript 2020-07-21 15:16:57 +03:00
Govindas
f279742068
Update README.md 2020-01-13 14:49:34 +02:00
Govindas
10a25abe5b
Update README.md 2020-01-13 14:49:16 +02:00
Govindas
0ca413c58f
Update .gitignore 2020-01-13 13:11:45 +02:00
Govindas
8594b46b2b
Delete SkStuff.jar 2020-01-13 13:04:09 +02:00
Govindas
2e4900e509
Update README.md 2020-01-13 13:03:17 +02:00
Govindass
bb8710e9dc test 2020-01-13 13:00:44 +02:00
Govindass
6151a9ec09 1.15 2020-01-13 12:58:19 +02:00
Govindass
5de16a75e3 Update plugin.yml 2020-01-13 12:40:52 +02:00
Govindass
fc48cdc060 Create .gitignore 2020-01-13 12:40:18 +02:00
Govindass
d8209feb28 1.15 support 2020-01-13 12:37:12 +02:00
Govindas
3f42acfc54
Merge pull request #1 from ham1255/master
change softdepend to depend Plugin.yml
2019-11-19 08:19:37 +02:00
mohammed jassim alajel
e08eedd121
change softdepend to depend Plugin.yml 2019-11-18 21:24:02 +04:00
Govindass
627733ab2c
Update README.md 2019-11-18 15:04:09 +02:00
Govindass
0d33ad8a66
Update plugin.yml 2019-11-18 14:59:56 +02:00
Govindass
f8861cf6f1
Update README.md 2019-11-18 14:57:56 +02:00
Govindass
9bfbcd9639
Update README.md 2019-11-18 14:55:58 +02:00
Govindass
210bb8c315
Update README.md 2019-11-18 14:55:17 +02:00
Govindass
a3e52580c2 Update plugin.yml 2019-11-18 14:53:11 +02:00
Govindass
bf9514c322 1.13 & 1.14 Update, removal of old stuff
1.13 & 1.14 Update, removed worldedit, nbt, vanishnopacket stuff and old version stuff
2019-11-18 14:51:31 +02:00
Govindass
bf5e005a80
Delete ExprEditSessionLimit.java 2019-11-18 12:21:32 +02:00
Govindass
98ed997070
Add files via upload
1.13 & 1.14 update
2019-11-18 12:20:09 +02:00
Govindass
a943eb6882
Update README.md 2019-11-18 12:06:51 +02:00
58 changed files with 252 additions and 103 deletions

11
.gitignore vendored
View File

@ -1,7 +1,10 @@
out out
bin bin
target target
META-INF /META-INF
.settings /.settings
.idea /.idea
SkStuff.iml SkStuff.iml
.idea/workspace.xml
.idea/misc.xml
.idea/discord.xml

View File

@ -3,9 +3,6 @@
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="72e0643a-ea45-4e93-b5a5-734a94c41ff5" name="Default Changelist" comment=""> <list default="true" id="72e0643a-ea45-4e93-b5a5-734a94c41ff5" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/bin/me/TheBukor/SkStuff/SkStuff.class" beforeDir="false" afterPath="$PROJECT_DIR$/bin/me/TheBukor/SkStuff/SkStuff.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/bin/me/TheBukor/SkStuff/effects/EffSetPathGoal.class" beforeDir="false" afterPath="$PROJECT_DIR$/bin/me/TheBukor/SkStuff/effects/EffSetPathGoal.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/plugin.yml" beforeDir="false" afterPath="$PROJECT_DIR$/plugin.yml" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -36,8 +33,8 @@
</component> </component>
<component name="RecentsManager"> <component name="RecentsManager">
<key name="CopyClassDialog.RECENTS_KEY"> <key name="CopyClassDialog.RECENTS_KEY">
<recent name="me.TheBukor.SkStuff.pathfinders" />
<recent name="me.TheBukor.SkStuff.util" /> <recent name="me.TheBukor.SkStuff.util" />
<recent name="me.TheBukor.SkStuff.pathfinders" />
</key> </key>
</component> </component>
<component name="SQLPlugin.ProjectConfiguration"> <component name="SQLPlugin.ProjectConfiguration">

0
META-INF/MANIFEST.MF Executable file → Normal file
View File

3
README.md Executable file → Normal file
View File

@ -5,6 +5,8 @@
This fork adds 1.8 - 1.16 support and removes a lot of stuff, focusing on entity related stuff as they're unique to SkStuff. No support given for versions like 1.9.2 while there's 1.9.4. only latest third digit versions. This fork adds 1.8 - 1.16 support and removes a lot of stuff, focusing on entity related stuff as they're unique to SkStuff. No support given for versions like 1.9.2 while there's 1.9.4. only latest third digit versions.
**Download it [here](https://github.com/Govindass/SkStuff/releases)**
##List of pathfinder goals ##List of pathfinder goals
``` ```
(avoid|run away from) %entitytype%[, radius %number%[, speed %number%[, speed (if|when) (close|near) %number%]]] (avoid|run away from) %entitytype%[, radius %number%[, speed %number%[, speed (if|when) (close|near) %number%]]]
@ -58,4 +60,3 @@ Notes:
6 - If this goal is missing on the entity, it will not be able to attack. 6 - If this goal is missing on the entity, it will not be able to attack.
7 - Can only be applied on Ghasts or Blazes. 7 - Can only be applied on Ghasts or Blazes.
``` ```

View File

@ -18,22 +18,13 @@
<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="jdk" jdkName="1.8" jdkType="JavaSDK" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <CLASSES>
@ -164,6 +155,5 @@
</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 Executable file → Normal file
View File

0
bin/META-INF/SkStuff.kotlin_module Executable file → Normal file
View File

0
bin/me/TheBukor/SkStuff/effects/EffGZipFile.class Executable file → Normal file
View File

View File

View File

View File

View File

View File

View File

View File

5
plugin.yml Executable file → Normal file
View File

@ -1,7 +1,6 @@
name: SkStuff name: SkStuff
authors: [TheBukor, Govindas] authors: [TheBukor, Govindas]
description: A Skript addon which adds extra functionalities such as pathfinder goals. description: A Skript addon which adds extra functionalities such as pathfinder goals.
version: "2.2.1" version: "2.2"
main: me.TheBukor.SkStuff.SkStuff main: me.TheBukor.SkStuff.SkStuff
depend: [Skript] depend: [Skript]
api-version: 1.13

0
src/META-INF/MANIFEST.MF Executable file → Normal file
View File

37
src/me/TheBukor/SkStuff/SkStuff.java Executable file → Normal file
View 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,49 +43,52 @@ public class SkStuff extends JavaPlugin {
} }
} }
public static boolean setupNMSVersion() { private 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();
Bukkit.getLogger().info("It looks like you're running 1.8.8!"); 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();
Bukkit.getLogger().info("It looks like you're running 1.9.4!"); 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();
Bukkit.getLogger().info("It looks like you're running 1.10.2!"); 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();
Bukkit.getLogger().info("It looks like you're running 1.11.2!"); 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();
Bukkit.getLogger().info("It looks like you're running 1.12.2!"); 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();
Bukkit.getLogger().info("It looks like you're running 1.13.2!"); 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();
Bukkit.getLogger().info("It looks like you're running 1.14.4!"); 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();
Bukkit.getLogger().info("It looks like you're running 1.15.2!"); 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();
Bukkit.getLogger().info("It looks like you're running 1.16.4!"); getLogger().info("It looks like you're running 1.16.4!");
break; break;
default: default:
Bukkit.getLogger().warning("It looks like you're running an unsupported server version, some features will not be available :("); 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 Executable file → Normal file
View File

7
src/me/TheBukor/SkStuff/effects/EffClearPathGoals.java Executable file → Normal file
View File

@ -2,7 +2,6 @@ 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;
@ -34,11 +33,7 @@ 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 Executable file → Normal file
View File

0
src/me/TheBukor/SkStuff/effects/EffRemovePathGoal.java Executable file → Normal file
View File

7
src/me/TheBukor/SkStuff/effects/EffSetPathGoal.java Executable file → Normal file
View File

@ -96,7 +96,7 @@ public final class EffSetPathGoal extends Effect {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public boolean init(Expression<?>[] expr, int matchedPattern, Kleenean arg2, ParseResult result) { public final 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[expr.length - 1]; entities = (Expression<LivingEntity>) expr[38];
/* 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,6 +550,9 @@ 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;

View File

0
src/me/TheBukor/SkStuff/expressions/ExprFireProof.java Executable file → Normal file
View File

0
src/me/TheBukor/SkStuff/expressions/ExprNoClip.java Executable file → Normal file
View File

View File

View File

View File

View File

View File

@ -0,0 +1,79 @@
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()
}
}

View File

0
src/me/TheBukor/SkStuff/util/NMSInterface.java Executable file → Normal file
View File

0
src/me/TheBukor/SkStuff/util/NMS_v1_10_R1.java Executable file → Normal file
View File

0
src/me/TheBukor/SkStuff/util/NMS_v1_11_R1.java Executable file → Normal file
View File

0
src/me/TheBukor/SkStuff/util/NMS_v1_12_R1.java Executable file → Normal file
View File

0
src/me/TheBukor/SkStuff/util/NMS_v1_13_R2.java Executable file → Normal file
View File

2
src/me/TheBukor/SkStuff/util/NMS_v1_14_R1.java Executable file → Normal file
View 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_14_R1.PathfinderGoal.Type.class)); cField.set(targetSelector, new EnumMap<>(net.minecraft.server.v1_16_R2.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 Executable file → Normal file
View File

View File

@ -0,0 +1,79 @@
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;
}
}

View File

@ -13,67 +13,67 @@ import java.util.LinkedHashSet;
public class NMS_v1_16_R3 implements NMSInterface { 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);
} }
@Override @Override
public void removePathfinderGoal(Object entity, Class<?> goalClass, boolean isTargetSelector) { public void removePathfinderGoal(Object entity, Class<?> goalClass, boolean isTargetSelector) {
if (entity instanceof EntityInsentient) { if (entity instanceof EntityInsentient) {
((EntityInsentient) entity).setGoalTarget(null); ((EntityInsentient) entity).setGoalTarget(null);
if (isTargetSelector) { if (isTargetSelector) {
((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, ((EntityInsentient) entity).targetSelector)).removeIf(goal -> ReflectionUtils.getField("a", goal.getClass(), goal).getClass() == goalClass); ((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, ((EntityInsentient) entity).targetSelector)).removeIf(goal -> ReflectionUtils.getField("a", goal.getClass(), goal).getClass() == goalClass);
} else { } else {
((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, ((EntityInsentient) entity).goalSelector)).removeIf(goal -> ReflectionUtils.getField("a", goal.getClass(), goal).getClass() == goalClass); ((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, ((EntityInsentient) entity).goalSelector)).removeIf(goal -> ReflectionUtils.getField("a", goal.getClass(), goal).getClass() == goalClass);
} }
} }
} }
@Override @Override
public void addPathfinderGoal(Object entity, int priority, Object goal, boolean isTargetSelector) { public void addPathfinderGoal(Object entity, int priority, Object goal, boolean isTargetSelector) {
if (entity instanceof EntityInsentient && goal instanceof PathfinderGoal) { if (entity instanceof EntityInsentient && goal instanceof PathfinderGoal) {
if (isTargetSelector) if (isTargetSelector)
((EntityInsentient) entity).targetSelector.a(priority, (PathfinderGoal) goal); ((EntityInsentient) entity).targetSelector.a(priority, (PathfinderGoal) goal);
else else
((EntityInsentient) entity).goalSelector.a(priority, (PathfinderGoal) goal); ((EntityInsentient) entity).goalSelector.a(priority, (PathfinderGoal) goal);
} }
} }
@Override @Override
public boolean getNoClip(Entity entity) { public boolean getNoClip(Entity entity) {
net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle(); net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
return nmsEntity.noclip; return nmsEntity.noclip;
} }
@Override @Override
public void setNoClip(Entity entity, boolean noclip) { public void setNoClip(Entity entity, boolean noclip) {
net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle(); net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
nmsEntity.noclip = noclip; nmsEntity.noclip = noclip;
} }
@Override @Override
public boolean getFireProof(Entity entity) { public boolean getFireProof(Entity entity) {
net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle(); net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
return nmsEntity.isFireProof(); return nmsEntity.isFireProof();
} }
@Override @Override
public void setFireProof(Entity entity, boolean fireProof) { public void setFireProof(Entity entity, boolean fireProof) {
net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle(); net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
ReflectionUtils.setField("fireProof", nmsEntity.getClass(), nmsEntity, fireProof); ReflectionUtils.setField("fireProof", nmsEntity.getClass(), nmsEntity, fireProof);
} }
public float getEntityStepLength(Entity entity) { public float getEntityStepLength(Entity entity) {
net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle(); net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
return nmsEntity.G; return nmsEntity.G;
} }
@Override @Override
public void setEntityStepLength(Entity entity, float length) { public void setEntityStepLength(Entity entity, float length) {
net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle(); net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
nmsEntity.G = length; nmsEntity.G = length;
} }
} }

0
src/me/TheBukor/SkStuff/util/NMS_v1_8_R3.java Executable file → Normal file
View File

0
src/me/TheBukor/SkStuff/util/NMS_v1_9_R2.java Executable file → Normal file
View File

0
src/me/TheBukor/SkStuff/util/ReflectionUtils.java Executable file → Normal file
View File