Compare commits
35 Commits
1.8.0fork-
...
master
Author | SHA1 | Date | |
---|---|---|---|
bcba74f0ec | |||
686d555a47 | |||
d59856dad7 | |||
691a667875 | |||
89b8b418d5 | |||
9080e9b372 | |||
6e9dd616f8 | |||
dd2d519efb | |||
0420e21f85 | |||
9f88c0896a | |||
917a2d7499 | |||
1361ccaded | |||
601228594a | |||
8610014c18 | |||
1932b28c1c | |||
a8045de7c0 | |||
fd7624c42b | |||
6966b1550a | |||
81c15e1a8b | |||
9ad182f740 | |||
d0b756c828 | |||
4a19a94b4d | |||
7cddbf3b06 | |||
41e22aaf16 | |||
|
6c5fb8928b | ||
675f1a859e | |||
ca67caff0c | |||
1cc83ce9b0 | |||
4a03cbfdcf | |||
0bb1251d4f | |||
ef2a04ceb7 | |||
fbe72a548e | |||
752c8e2da4 | |||
ecda37b584 | |||
97eafe9ddd |
13
.gitignore
vendored
13
.gitignore
vendored
@ -1,6 +1,7 @@
|
||||
/out
|
||||
/bin
|
||||
/target
|
||||
/META-INF
|
||||
/.settings
|
||||
/.idea
|
||||
out
|
||||
bin
|
||||
target
|
||||
META-INF
|
||||
.settings
|
||||
.idea
|
||||
SkStuff.iml
|
@ -3,7 +3,6 @@
|
||||
<output-path>$PROJECT_DIR$/out/artifacts/SkStuff_jar</output-path>
|
||||
<root id="archive" name="SkStuff.jar">
|
||||
<element id="module-output" name="SkStuff" />
|
||||
<element id="module-source" name="SkStuff" />
|
||||
<element id="file-copy" path="$PROJECT_DIR$/plugin.yml" />
|
||||
</root>
|
||||
</artifact>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DiscordProjectSettings">
|
||||
<option name="show" value="true" />
|
||||
<option name="show" value="PROJECT_FILES" />
|
||||
</component>
|
||||
<component name="ProjectNotificationSettings">
|
||||
<option name="askShowProject" value="false" />
|
||||
|
@ -3,8 +3,9 @@
|
||||
<component name="ChangeListManager">
|
||||
<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$/src/me/TheBukor/SkStuff/SkStuff.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/me/TheBukor/SkStuff/SkStuff.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/me/TheBukor/SkStuff/util/NMS_v1_9_R1.java" beforeDir="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>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
@ -23,14 +24,13 @@
|
||||
</component>
|
||||
<component name="ProjectId" id="1dDc5mH6vdHCfDtdCWF3TtPitSZ" />
|
||||
<component name="ProjectViewState">
|
||||
<option name="showExcludedFiles" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="ASKED_ADD_EXTERNAL_FILES" value="true" />
|
||||
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
||||
<property name="last_opened_file_path" value="$PROJECT_DIR$/plugin.yml" />
|
||||
<property name="project.structure.last.edited" value="Artifacts" />
|
||||
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../import/craftbukkit-1.16.4.jar" />
|
||||
<property name="project.structure.last.edited" value="Modules" />
|
||||
<property name="project.structure.proportion" value="0.15" />
|
||||
<property name="project.structure.side.proportion" value="0.2" />
|
||||
</component>
|
||||
@ -43,18 +43,7 @@
|
||||
<component name="SQLPlugin.ProjectConfiguration">
|
||||
<queries />
|
||||
</component>
|
||||
<component name="ServiceViewManager">
|
||||
<option name="viewStates">
|
||||
<list>
|
||||
<serviceView>
|
||||
<treeState>
|
||||
<expand />
|
||||
<select />
|
||||
</treeState>
|
||||
</serviceView>
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="project-level" UseSingleDictionary="true" transferred="true" />
|
||||
<component name="SvnConfiguration">
|
||||
<configuration />
|
||||
</component>
|
||||
@ -69,22 +58,18 @@
|
||||
<servers />
|
||||
</component>
|
||||
<component name="WindowStateProjectService">
|
||||
<state x="79" y="101" key="FileChooserDialogImpl" timestamp="1595328182010">
|
||||
<state x="488" y="70" key="#com.intellij.ide.util.MemberChooser" timestamp="1603963583320">
|
||||
<screen x="0" y="0" width="1366" height="728" />
|
||||
</state>
|
||||
<state x="79" y="101" key="FileChooserDialogImpl/0.0.1366.728@0.0.1366.728" timestamp="1595328182010" />
|
||||
<state x="348" y="62" key="NewModule_or_Project.wizard" timestamp="1592831160031">
|
||||
<state x="488" y="70" key="#com.intellij.ide.util.MemberChooser/0.0.1366.728@0.0.1366.728" timestamp="1603963583320" />
|
||||
<state x="79" y="101" key="FileChooserDialogImpl" timestamp="1604401015065">
|
||||
<screen x="0" y="0" width="1366" height="728" />
|
||||
</state>
|
||||
<state x="348" y="62" key="NewModule_or_Project.wizard/0.0.1366.728@0.0.1366.728" timestamp="1592831160031" />
|
||||
<state x="163" y="0" key="SettingsEditor" timestamp="1595328184010">
|
||||
<state x="79" y="101" key="FileChooserDialogImpl/0.0.1366.728@0.0.1366.728" timestamp="1604401015065" />
|
||||
<state x="163" y="0" key="SettingsEditor" timestamp="1604401021463">
|
||||
<screen x="0" y="0" width="1366" height="728" />
|
||||
</state>
|
||||
<state x="163" y="0" key="SettingsEditor/0.0.1366.728@0.0.1366.728" timestamp="1595328184010" />
|
||||
<state x="0" y="0" key="com.intellij.ide.util.TipDialog" timestamp="1595662947316">
|
||||
<screen x="0" y="0" width="1366" height="728" />
|
||||
</state>
|
||||
<state x="0" y="0" key="com.intellij.ide.util.TipDialog/0.0.1366.728@0.0.1366.728" timestamp="1595662947316" />
|
||||
<state x="163" y="0" key="SettingsEditor/0.0.1366.728@0.0.1366.728" timestamp="1604401021463" />
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager>
|
||||
|
0
META-INF/MANIFEST.MF
Normal file → Executable file
0
META-INF/MANIFEST.MF
Normal file → Executable file
3
README.md
Normal file → Executable file
3
README.md
Normal file → Executable file
@ -5,8 +5,6 @@
|
||||
|
||||
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
|
||||
```
|
||||
(avoid|run away from) %entitytype%[, radius %number%[, speed %number%[, speed (if|when) (close|near) %number%]]]
|
||||
@ -60,3 +58,4 @@ Notes:
|
||||
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.
|
||||
```
|
||||
|
||||
|
102
SkStuff.iml
102
SkStuff.iml
@ -18,43 +18,30 @@
|
||||
<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>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.14.4-R0.1-SNAPSHOT.jar!/" />
|
||||
<root url="jar://$MODULE_DIR$/../../import/Paper-1.16.3-latest.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.14.4-R0.1-SNAPSHOT.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.15.1-R0.1-SNAPSHOT.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.15.1-R0.1-SNAPSHOT.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.13.2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.13.2.jar!/" />
|
||||
<root url="jar://$MODULE_DIR$/../../import/Paper-1.16.3-latest.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</orderEntry>
|
||||
@ -70,11 +57,11 @@
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.12.2.jar!/" />
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.10.2-R0.1-SNAPSHOT-latest.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.12.2.jar!/" />
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.10.2-R0.1-SNAPSHOT-latest.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</orderEntry>
|
||||
@ -92,44 +79,33 @@
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.10.2-R0.1-SNAPSHOT-latest.jar!/" />
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.12.2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.10.2-R0.1-SNAPSHOT-latest.jar!/" />
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.12.2.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.9.4-R0.1-SNAPSHOT-latest.jar!/" />
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.13.2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.9.4-R0.1-SNAPSHOT-latest.jar!/" />
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.13.2.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.8.8-R0.1-SNAPSHOT-latest.jar!/" />
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.14.4-R0.1-SNAPSHOT.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.8.8-R0.1-SNAPSHOT-latest.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.9.2-R0.1-SNAPSHOT-latest.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.9.2-R0.1-SNAPSHOT-latest.jar!/" />
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.14.4-R0.1-SNAPSHOT.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</orderEntry>
|
||||
@ -147,13 +123,47 @@
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.16.1.jar!/" />
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.16.2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.16.1.jar!/" />
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.16.2.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.8.8-R0.1-SNAPSHOT-latest.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.8.8-R0.1-SNAPSHOT-latest.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.9.4-R0.1-SNAPSHOT-latest.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.9.4-R0.1-SNAPSHOT-latest.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.16.4.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.16.4.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="library" name="Skript-2.6" level="project" />
|
||||
</component>
|
||||
</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.
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.
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
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.
7
plugin.yml
Normal file → Executable file
7
plugin.yml
Normal file → Executable file
@ -1,6 +1,7 @@
|
||||
name: SkPathfinderGoals
|
||||
name: SkStuff
|
||||
authors: [TheBukor, Govindas]
|
||||
description: A Skript addon which adds extra functionalities such as pathfinder goals.
|
||||
version: "2.0"
|
||||
version: "2.2.1"
|
||||
main: me.TheBukor.SkStuff.SkStuff
|
||||
softdepend: [Skript]
|
||||
depend: [Skript]
|
||||
api-version: 1.13
|
||||
|
0
src/META-INF/MANIFEST.MF
Normal file → Executable file
0
src/META-INF/MANIFEST.MF
Normal file → Executable file
57
src/me/TheBukor/SkStuff/SkStuff.java
Normal file → Executable file
57
src/me/TheBukor/SkStuff/SkStuff.java
Normal file → Executable file
@ -2,28 +2,16 @@ package me.TheBukor.SkStuff;
|
||||
|
||||
import ch.njol.skript.Skript;
|
||||
import ch.njol.skript.lang.ExpressionType;
|
||||
import ch.njol.skript.lang.util.SimpleEvent;
|
||||
import ch.njol.skript.registrations.EventValues;
|
||||
import ch.njol.skript.util.Getter;
|
||||
import me.TheBukor.SkStuff.bstats.Metrics;
|
||||
import me.TheBukor.SkStuff.effects.*;
|
||||
import me.TheBukor.SkStuff.expressions.*;
|
||||
import me.TheBukor.SkStuff.expressions.ExprFireProof;
|
||||
import me.TheBukor.SkStuff.expressions.ExprNoClip;
|
||||
import me.TheBukor.SkStuff.expressions.ExprStepLength;
|
||||
import me.TheBukor.SkStuff.util.*;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.event.entity.EntityToggleGlideEvent;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.IOException;
|
||||
|
||||
public class SkStuff extends JavaPlugin {
|
||||
private int condAmount = 0;
|
||||
private int effAmount = 0;
|
||||
private int evtAmount = 0;
|
||||
private int exprAmount = 0;
|
||||
private int typeAmount = 0;
|
||||
|
||||
private static NMSInterface nmsMethods;
|
||||
|
||||
@ -31,7 +19,7 @@ public class SkStuff extends JavaPlugin {
|
||||
public void onEnable() {
|
||||
if (Bukkit.getPluginManager().getPlugin("Skript") != null && Skript.isAcceptRegistrations()) {
|
||||
Skript.registerAddon(this);
|
||||
getLogger().info("SkPathfinderGoals " + this.getDescription().getVersion() + " has been successfully enabled!");
|
||||
getLogger().info("SkStuff " + this.getDescription().getVersion() + " has been successfully enabled!");
|
||||
getLogger().info("Registering general non version specific stuff...");
|
||||
Skript.registerEffect(EffShowEntityEffect.class, "(display|play|show) entity effect (0¦firework[s] explo(de|sion)|1¦hurt|2¦[[iron] golem] (give|offer) (rose|poppy)|3¦[sheep] eat grass|4¦wolf shake|5¦squid rotate|6¦totem resurrect|7¦rabbit jump) (at|on) %entity%");
|
||||
if (setupNMSVersion()) {
|
||||
@ -39,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...");
|
||||
@ -55,44 +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.2!");
|
||||
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.1!");
|
||||
Bukkit.getLogger().info("It looks like you're running 1.15.2!");
|
||||
break;
|
||||
|
||||
case "v1_16_R3.":
|
||||
nmsMethods = new NMS_v1_16_R3();
|
||||
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;
|
||||
@ -103,6 +96,6 @@ public class SkStuff extends JavaPlugin {
|
||||
}
|
||||
|
||||
public void onDisable() {
|
||||
getLogger().info("SkPathfinderGoals " + this.getDescription().getVersion() + " has been successfully disabled.");
|
||||
getLogger().info("SkStuff " + this.getDescription().getVersion() + " has been successfully disabled.");
|
||||
}
|
||||
}
|
0
src/me/TheBukor/SkStuff/bstats/Metrics.java
Normal file → Executable file
0
src/me/TheBukor/SkStuff/bstats/Metrics.java
Normal file → Executable file
7
src/me/TheBukor/SkStuff/effects/EffClearPathGoals.java
Normal file → Executable file
7
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 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
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
26
src/me/TheBukor/SkStuff/effects/EffSetPathGoal.java
Normal file → Executable file
26
src/me/TheBukor/SkStuff/effects/EffSetPathGoal.java
Normal file → Executable file
@ -7,6 +7,7 @@ import java.util.List;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import me.TheBukor.SkStuff.pathfinders.*;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Animals;
|
||||
import org.bukkit.entity.ArmorStand;
|
||||
@ -40,8 +41,6 @@ import ch.njol.skript.lang.SkriptParser.ParseResult;
|
||||
import ch.njol.skript.util.Timespan;
|
||||
import ch.njol.util.Kleenean;
|
||||
import me.TheBukor.SkStuff.SkStuff;
|
||||
import me.TheBukor.SkStuff.pathfinders.PathfinderGoalFollow_v1_13_R2;
|
||||
import me.TheBukor.SkStuff.pathfinders.PathfinderGoalFollow_v1_14_R1;
|
||||
import me.TheBukor.SkStuff.util.ReflectionUtils;
|
||||
|
||||
public final class EffSetPathGoal extends Effect {
|
||||
@ -97,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) {
|
||||
@ -156,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) {
|
||||
@ -265,7 +264,7 @@ public final class EffSetPathGoal extends Effect {
|
||||
newGoals.add(goalFollowAdults.getConstructor(entAnimal, double.class).newInstance(nmsEnt, spd));
|
||||
} else if (mark == 8) {
|
||||
target = true;
|
||||
boolean callHelp = (callForHelp == null ? false : callForHelp.getSingle(e));
|
||||
boolean callHelp = (callForHelp != null && callForHelp.getSingle(e));
|
||||
EntityData<?>[] types = typesToFightBack.getAll(e);
|
||||
List<Class<?>> typesClasses = new ArrayList<Class<?>>();
|
||||
for (EntityData<?> entData : types) {
|
||||
@ -327,7 +326,7 @@ public final class EffSetPathGoal extends Effect {
|
||||
}
|
||||
} else {
|
||||
double spd = (meleeSpeed == null ? 1.0D : meleeSpeed.getSingle(e).doubleValue());
|
||||
boolean memorize = (meleeMemorize == null ? false : meleeMemorize.getSingle(e));
|
||||
boolean memorize = (meleeMemorize != null && meleeMemorize.getSingle(e));
|
||||
Class<?> goalMeleeAttack = ReflectionUtils.getNMSClass("PathfinderGoalMeleeAttack");
|
||||
newGoals.add(goalMeleeAttack.getConstructor(entCreature, double.class, boolean.class).newInstance(nmsEnt, spd, memorize));
|
||||
}
|
||||
@ -354,7 +353,7 @@ public final class EffSetPathGoal extends Effect {
|
||||
newGoals.add(ReflectionUtils.getConstructor(goalSpiderNearTarget, nmsEnt.getClass(), Class.class).newInstance(nmsEnt, nmsClass));
|
||||
}
|
||||
} else {
|
||||
boolean checkView = (checkSight == null ? true : checkSight.getSingle(e));
|
||||
boolean checkView = (checkSight == null || checkSight.getSingle(e));
|
||||
Class<?> goalNearTarget = ReflectionUtils.getNMSClass("PathfinderGoalNearestAttackableTarget");
|
||||
for (EntityData<?> entData : types) {
|
||||
if (!LivingEntity.class.isAssignableFrom(entData.getType()))
|
||||
@ -539,16 +538,21 @@ public final class EffSetPathGoal extends Effect {
|
||||
}
|
||||
Class<?> nmsClass = ReflectionUtils.getNMSClass("Entity" + className);
|
||||
switch (version) {
|
||||
case "v1.12_R1.":
|
||||
newGoals.add(new PathfinderGoalFollow_v1_12_R1((net.minecraft.server.v1_12_R1.EntityCreature) nmsEnt, nmsClass, radius, spd, usesName, customName));
|
||||
break;
|
||||
//case "v1.12_R1.":
|
||||
// newGoals.add(new PathfinderGoalFollow_v1_12_R1((net.minecraft.server.v1_12_R1.EntityCreature) nmsEnt, nmsClass, radius, spd, usesName, customName));
|
||||
// break;
|
||||
case "v1.13_R2.":
|
||||
newGoals.add(new PathfinderGoalFollow_v1_13_R2((net.minecraft.server.v1_13_R2.EntityCreature) nmsEnt, nmsClass, radius, spd, usesName, customName));
|
||||
break;
|
||||
case "v1.14_R1.":
|
||||
newGoals.add(new PathfinderGoalFollow_v1_14_R1((net.minecraft.server.v1_14_R1.EntityCreature) nmsEnt, nmsClass, radius, spd, usesName, customName));
|
||||
break;
|
||||
}
|
||||
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_R3.":
|
||||
newGoals.add(new PathfinderGoalFollow_v1_16_R3((net.minecraft.server.v1_16_R3.EntityCreature) nmsEnt, nmsClass, radius, spd, usesName, customName));
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (mark == 42) {
|
||||
|
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
5
src/me/TheBukor/SkStuff/pathfinders/PathfinderGoalFollow_v1_13_R2.java
Normal file → Executable file
5
src/me/TheBukor/SkStuff/pathfinders/PathfinderGoalFollow_v1_13_R2.java
Normal file → Executable file
@ -1,10 +1,5 @@
|
||||
package me.TheBukor.SkStuff.pathfinders;
|
||||
|
||||
import me.TheBukor.SkStuff.util.ReflectionUtils;
|
||||
import net.minecraft.server.v1_13_R2.*;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
|
||||
public class PathfinderGoalFollow_v1_13_R2 extends PathfinderGoal {
|
||||
|
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,22 +1,22 @@
|
||||
package me.TheBukor.SkStuff.pathfinders;
|
||||
|
||||
import net.minecraft.server.v1_16_R1.Entity;
|
||||
import net.minecraft.server.v1_16_R1.EntityCreature;
|
||||
import net.minecraft.server.v1_16_R1.EntityLiving;
|
||||
import net.minecraft.server.v1_16_R1.PathfinderGoal;
|
||||
import net.minecraft.server.v1_16_R3.Entity;
|
||||
import net.minecraft.server.v1_16_R3.EntityCreature;
|
||||
import net.minecraft.server.v1_16_R3.EntityLiving;
|
||||
import net.minecraft.server.v1_16_R3.PathfinderGoal;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class PathfinderGoalFollow_v1_16_R1 extends PathfinderGoal {
|
||||
private EntityCreature follower;
|
||||
public class PathfinderGoalFollow_v1_16_R3 extends PathfinderGoal {
|
||||
private final EntityCreature follower;
|
||||
private EntityLiving followed;
|
||||
private Class<?> followedClass;
|
||||
private float radius;
|
||||
private double speed;
|
||||
private boolean isByName;
|
||||
private String customName;
|
||||
private final Class<?> followedClass;
|
||||
private final float radius;
|
||||
private final double speed;
|
||||
private final boolean isByName;
|
||||
private final String customName;
|
||||
|
||||
public PathfinderGoalFollow_v1_16_R1(EntityCreature follower, Class<?> followedClass, float radius, double speed, boolean isByName, String customName) {
|
||||
public PathfinderGoalFollow_v1_16_R3(EntityCreature follower, Class<?> followedClass, float radius, double speed, boolean isByName, String customName) {
|
||||
this.follower = follower;
|
||||
this.followedClass = followedClass;
|
||||
this.radius = radius;
|
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
50
src/me/TheBukor/SkStuff/util/NMS_v1_14_R1.java
Normal file → Executable file
50
src/me/TheBukor/SkStuff/util/NMS_v1_14_R1.java
Normal file → Executable file
@ -2,13 +2,14 @@ package me.TheBukor.SkStuff.util;
|
||||
|
||||
|
||||
import net.minecraft.server.v1_14_R1.EntityInsentient;
|
||||
import net.minecraft.server.v1_14_R1.BehaviorController;
|
||||
import net.minecraft.server.v1_14_R1.PathfinderGoal;
|
||||
import net.minecraft.server.v1_14_R1.PathfinderGoalSelector;
|
||||
import org.bukkit.craftbukkit.v1_14_R1.entity.CraftEntity;
|
||||
import org.bukkit.entity.Entity;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.*;
|
||||
|
||||
public class NMS_v1_14_R1 implements NMSInterface {
|
||||
|
||||
@ -16,13 +17,48 @@ public class NMS_v1_14_R1 implements NMSInterface {
|
||||
|
||||
@Override
|
||||
public void clearPathfinderGoals(Entity entity) {
|
||||
EntityInsentient nmsEnt = (EntityInsentient) ((CraftEntity) entity).getHandle();
|
||||
((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, nmsEnt.goalSelector)).clear();
|
||||
((LinkedHashSet<?>) ReflectionUtils.getField("c", PathfinderGoalSelector.class, nmsEnt.goalSelector)).clear();
|
||||
((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, nmsEnt.targetSelector)).clear();
|
||||
((LinkedHashSet<?>) ReflectionUtils.getField("c", PathfinderGoalSelector.class, nmsEnt.targetSelector)).clear();
|
||||
EntityInsentient nmsEntity = (EntityInsentient) ((CraftEntity) entity).getHandle();
|
||||
PathfinderGoalSelector goalSelector = nmsEntity.goalSelector;
|
||||
PathfinderGoalSelector targetSelector = nmsEntity.targetSelector;
|
||||
try {
|
||||
BehaviorController<?> controller = nmsEntity.getBehaviorController();
|
||||
|
||||
Field memoriesField = BehaviorController.class.getDeclaredField("memories");
|
||||
memoriesField.setAccessible(true);
|
||||
memoriesField.set(controller, new HashMap<>());
|
||||
|
||||
Field sensorsField = BehaviorController.class.getDeclaredField("sensors");
|
||||
sensorsField.setAccessible(true);
|
||||
sensorsField.set(controller, new LinkedHashMap<>());
|
||||
|
||||
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
Field dField;
|
||||
dField = PathfinderGoalSelector.class.getDeclaredField("d");
|
||||
dField.setAccessible(true);
|
||||
dField.set(goalSelector, new LinkedHashSet<>());
|
||||
dField.set(targetSelector, new LinkedHashSet<>());
|
||||
|
||||
Field cField;
|
||||
cField = PathfinderGoalSelector.class.getDeclaredField("c");
|
||||
cField.setAccessible(true);
|
||||
dField.set(goalSelector, new LinkedHashSet<>());
|
||||
cField.set(targetSelector, new EnumMap<>(net.minecraft.server.v1_14_R1.PathfinderGoal.Type.class));
|
||||
|
||||
Field fField;
|
||||
fField = PathfinderGoalSelector.class.getDeclaredField("f");
|
||||
fField.setAccessible(true);
|
||||
dField.set(goalSelector, new LinkedHashSet<>());
|
||||
fField.set(targetSelector, EnumSet.noneOf(PathfinderGoal.Type.class));
|
||||
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removePathfinderGoal(Object entity, Class<?> goalClass, boolean isTargetSelector) {
|
||||
if (entity instanceof EntityInsentient) {
|
||||
|
50
src/me/TheBukor/SkStuff/util/NMS_v1_15_R1.java
Normal file → Executable file
50
src/me/TheBukor/SkStuff/util/NMS_v1_15_R1.java
Normal file → Executable file
@ -1,14 +1,15 @@
|
||||
package me.TheBukor.SkStuff.util;
|
||||
|
||||
|
||||
import net.minecraft.server.v1_15_R1.BehaviorController;
|
||||
import net.minecraft.server.v1_15_R1.EntityInsentient;
|
||||
import net.minecraft.server.v1_15_R1.PathfinderGoal;
|
||||
import net.minecraft.server.v1_15_R1.PathfinderGoalSelector;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftEntity;
|
||||
import org.bukkit.entity.Entity;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.*;
|
||||
|
||||
public class NMS_v1_15_R1 implements NMSInterface {
|
||||
|
||||
@ -16,11 +17,46 @@ public class NMS_v1_15_R1 implements NMSInterface {
|
||||
|
||||
@Override
|
||||
public void clearPathfinderGoals(Entity entity) {
|
||||
EntityInsentient nmsEnt = (EntityInsentient) ((CraftEntity) entity).getHandle();
|
||||
((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, nmsEnt.goalSelector)).clear();
|
||||
((LinkedHashSet<?>) ReflectionUtils.getField("c", PathfinderGoalSelector.class, nmsEnt.goalSelector)).clear();
|
||||
((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, nmsEnt.targetSelector)).clear();
|
||||
((LinkedHashSet<?>) ReflectionUtils.getField("c", PathfinderGoalSelector.class, nmsEnt.targetSelector)).clear();
|
||||
EntityInsentient nmsEntity = (EntityInsentient) ((CraftEntity) entity).getHandle();
|
||||
PathfinderGoalSelector goalSelector = nmsEntity.goalSelector;
|
||||
PathfinderGoalSelector targetSelector = nmsEntity.targetSelector;
|
||||
try {
|
||||
BehaviorController<?> controller = nmsEntity.getBehaviorController();
|
||||
|
||||
Field memoriesField = BehaviorController.class.getDeclaredField("memories");
|
||||
memoriesField.setAccessible(true);
|
||||
memoriesField.set(controller, new HashMap<>());
|
||||
|
||||
Field sensorsField = BehaviorController.class.getDeclaredField("sensors");
|
||||
sensorsField.setAccessible(true);
|
||||
sensorsField.set(controller, new LinkedHashMap<>());
|
||||
|
||||
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
Field dField;
|
||||
dField = PathfinderGoalSelector.class.getDeclaredField("d");
|
||||
dField.setAccessible(true);
|
||||
dField.set(goalSelector, new LinkedHashSet<>());
|
||||
dField.set(targetSelector, new LinkedHashSet<>());
|
||||
|
||||
Field cField;
|
||||
cField = PathfinderGoalSelector.class.getDeclaredField("c");
|
||||
cField.setAccessible(true);
|
||||
dField.set(goalSelector, new LinkedHashSet<>());
|
||||
cField.set(targetSelector, new EnumMap<>(PathfinderGoal.Type.class));
|
||||
|
||||
Field fField;
|
||||
fField = PathfinderGoalSelector.class.getDeclaredField("f");
|
||||
fField.setAccessible(true);
|
||||
dField.set(goalSelector, new LinkedHashSet<>());
|
||||
fField.set(targetSelector, EnumSet.noneOf(PathfinderGoal.Type.class));
|
||||
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,94 +0,0 @@
|
||||
package me.TheBukor.SkStuff.util;
|
||||
|
||||
|
||||
import net.minecraft.server.v1_16_R1.EntityInsentient;
|
||||
import net.minecraft.server.v1_16_R1.PathfinderGoal;
|
||||
import net.minecraft.server.v1_16_R1.PathfinderGoalSelector;
|
||||
import org.bukkit.craftbukkit.v1_16_R1.entity.CraftEntity;
|
||||
import org.bukkit.entity.Entity;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashSet;
|
||||
|
||||
public class NMS_v1_16_R1 implements NMSInterface {
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void clearPathfinderGoals(Entity entity) {
|
||||
EntityInsentient nmsEnt = (EntityInsentient) ((CraftEntity) entity).getHandle();
|
||||
((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, nmsEnt.goalSelector)).clear();
|
||||
((LinkedHashSet<?>) ReflectionUtils.getField("c", PathfinderGoalSelector.class, nmsEnt.goalSelector)).clear();
|
||||
((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, nmsEnt.targetSelector)).clear();
|
||||
((LinkedHashSet<?>) ReflectionUtils.getField("c", PathfinderGoalSelector.class, nmsEnt.targetSelector)).clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removePathfinderGoal(Object entity, Class<?> goalClass, boolean isTargetSelector) {
|
||||
if (entity instanceof EntityInsentient) {
|
||||
((EntityInsentient) entity).setGoalTarget(null);
|
||||
if (isTargetSelector) {
|
||||
Iterator<?> goals = ((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, ((EntityInsentient) entity).targetSelector)).iterator();
|
||||
while (goals.hasNext()) {
|
||||
Object goal = goals.next();
|
||||
if (ReflectionUtils.getField("a", goal.getClass(), goal).getClass() == goalClass) {
|
||||
goals.remove();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Iterator<?> goals = ((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, ((EntityInsentient) entity).goalSelector)).iterator();
|
||||
while (goals.hasNext()) {
|
||||
Object goal = goals.next();
|
||||
if (ReflectionUtils.getField("a", goal.getClass(), goal).getClass() == goalClass) {
|
||||
goals.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@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_R1.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
return nmsEntity.noclip;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNoClip(Entity entity, boolean noclip) {
|
||||
net.minecraft.server.v1_16_R1.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
nmsEntity.noclip = noclip;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getFireProof(Entity entity) {
|
||||
net.minecraft.server.v1_16_R1.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
return nmsEntity.isFireProof();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFireProof(Entity entity, boolean fireProof) {
|
||||
net.minecraft.server.v1_16_R1.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
ReflectionUtils.setField("fireProof", nmsEntity.getClass(), nmsEntity, fireProof);
|
||||
}
|
||||
public float getEntityStepLength(Entity entity) {
|
||||
net.minecraft.server.v1_16_R1.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
return nmsEntity.G;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEntityStepLength(Entity entity, float length) {
|
||||
net.minecraft.server.v1_16_R1.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
nmsEntity.G = length;
|
||||
}
|
||||
}
|
79
src/me/TheBukor/SkStuff/util/NMS_v1_16_R3.java
Normal file
79
src/me/TheBukor/SkStuff/util/NMS_v1_16_R3.java
Normal file
@ -0,0 +1,79 @@
|
||||
package me.TheBukor.SkStuff.util;
|
||||
|
||||
|
||||
import net.minecraft.server.v1_16_R3.EntityInsentient;
|
||||
import net.minecraft.server.v1_16_R3.PathfinderGoal;
|
||||
import net.minecraft.server.v1_16_R3.PathfinderGoalSelector;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.craftbukkit.v1_16_R3.entity.CraftEntity;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Mob;
|
||||
|
||||
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 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_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 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 setEntityStepLength(Entity entity, float length) {
|
||||
net.minecraft.server.v1_16_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
|
||||
nmsEntity.G = length;
|
||||
}
|
||||
}
|
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