Compare commits

..

35 Commits

Author SHA1 Message Date
bcba74f0ec Update README.md 2022-08-16 16:17:46 +03:00
686d555a47 Rushed Skript 2.6 support on 1.12.2, breaks 1.16 a bit 2022-08-16 16:16:05 +03:00
d59856dad7 Set api-version to 1.13 2021-12-02 11:24:10 +02:00
691a667875 version up 2021-10-20 17:50:48 +03:00
89b8b418d5 Quick 1.16.4 support 2021-10-20 17:50:38 +03:00
9080e9b372 start using Paper API for 1.16+ pathfinder goal removal 2021-10-20 17:50:38 +03:00
6e9dd616f8 Revert "1.16.1 - 1.16.2 support & some refactoring"
This reverts commit c6675f2b8e.
2021-10-20 17:50:38 +03:00
dd2d519efb Update .gitignore 2021-10-20 17:50:38 +03:00
0420e21f85 1.16.1 - 1.16.2 support & some refactoring 2021-10-20 17:50:38 +03:00
9f88c0896a Merge branch 'master' of https://github.com/Govindass/SkStuff 2021-10-20 17:50:38 +03:00
917a2d7499 Update README.md 2021-10-20 17:50:36 +03:00
1361ccaded remove old 1.9.2 2021-10-20 17:50:35 +03:00
601228594a Add 1.16 support & Add more syntaxes & Add 1.8-1.12 support back & Remove some syntaxes that are already in vanilla Skript 2021-10-20 17:50:35 +03:00
8610014c18 Update README.md 2021-10-20 17:50:33 +03:00
1932b28c1c Update README.md 2021-10-20 17:50:30 +03:00
a8045de7c0 Update .gitignore 2021-10-20 17:50:27 +03:00
fd7624c42b Delete SkStuff.jar 2021-10-20 17:50:24 +03:00
6966b1550a Update README.md 2021-10-20 17:50:21 +03:00
81c15e1a8b test 2021-10-20 17:50:20 +03:00
9ad182f740 1.15 2021-10-20 17:50:20 +03:00
d0b756c828 Update plugin.yml 2021-10-20 17:50:19 +03:00
4a19a94b4d Create .gitignore 2021-10-20 17:50:19 +03:00
7cddbf3b06 1.15 support 2021-10-20 17:50:19 +03:00
41e22aaf16 Merge pull request #1 from ham1255/master
change softdepend to depend Plugin.yml
2021-10-20 17:50:17 +03:00
mohammed jassim alajel
6c5fb8928b change softdepend to depend Plugin.yml 2021-10-20 17:50:16 +03:00
675f1a859e Update README.md 2021-10-20 17:50:14 +03:00
ca67caff0c Update plugin.yml 2021-10-20 17:50:10 +03:00
1cc83ce9b0 Update README.md 2021-10-20 17:49:57 +03:00
4a03cbfdcf Update README.md 2021-10-20 17:49:53 +03:00
0bb1251d4f Update README.md 2021-10-20 17:49:49 +03:00
ef2a04ceb7 Update plugin.yml 2021-10-20 17:49:47 +03:00
fbe72a548e 1.13 & 1.14 Update, removal of old stuff
1.13 & 1.14 Update, removed worldedit, nbt, vanishnopacket stuff and old version stuff
2021-10-20 17:49:47 +03:00
752c8e2da4 Delete ExprEditSessionLimit.java 2021-10-20 17:49:43 +03:00
ecda37b584 Add files via upload
1.13 & 1.14 update
2021-10-20 17:49:36 +03:00
97eafe9ddd Update README.md 2021-10-20 17:48:36 +03:00
51 changed files with 304 additions and 255 deletions

13
.gitignore vendored
View File

@ -1,6 +1,7 @@
/out out
/bin bin
/target target
/META-INF META-INF
/.settings .settings
/.idea .idea
SkStuff.iml

View File

@ -3,7 +3,6 @@
<output-path>$PROJECT_DIR$/out/artifacts/SkStuff_jar</output-path> <output-path>$PROJECT_DIR$/out/artifacts/SkStuff_jar</output-path>
<root id="archive" name="SkStuff.jar"> <root id="archive" name="SkStuff.jar">
<element id="module-output" name="SkStuff" /> <element id="module-output" name="SkStuff" />
<element id="module-source" name="SkStuff" />
<element id="file-copy" path="$PROJECT_DIR$/plugin.yml" /> <element id="file-copy" path="$PROJECT_DIR$/plugin.yml" />
</root> </root>
</artifact> </artifact>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="DiscordProjectSettings"> <component name="DiscordProjectSettings">
<option name="show" value="true" /> <option name="show" value="PROJECT_FILES" />
</component> </component>
<component name="ProjectNotificationSettings"> <component name="ProjectNotificationSettings">
<option name="askShowProject" value="false" /> <option name="askShowProject" value="false" />

View File

@ -3,8 +3,9 @@
<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$/src/me/TheBukor/SkStuff/SkStuff.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/me/TheBukor/SkStuff/SkStuff.java" 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$/src/me/TheBukor/SkStuff/util/NMS_v1_9_R1.java" beforeDir="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" />
@ -23,14 +24,13 @@
</component> </component>
<component name="ProjectId" id="1dDc5mH6vdHCfDtdCWF3TtPitSZ" /> <component name="ProjectId" id="1dDc5mH6vdHCfDtdCWF3TtPitSZ" />
<component name="ProjectViewState"> <component name="ProjectViewState">
<option name="showExcludedFiles" value="true" />
<option name="showLibraryContents" value="true" /> <option name="showLibraryContents" value="true" />
</component> </component>
<component name="PropertiesComponent"> <component name="PropertiesComponent">
<property name="ASKED_ADD_EXTERNAL_FILES" value="true" /> <property name="ASKED_ADD_EXTERNAL_FILES" value="true" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" /> <property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/plugin.yml" /> <property name="last_opened_file_path" value="$PROJECT_DIR$/../../import/craftbukkit-1.16.4.jar" />
<property name="project.structure.last.edited" value="Artifacts" /> <property name="project.structure.last.edited" value="Modules" />
<property name="project.structure.proportion" value="0.15" /> <property name="project.structure.proportion" value="0.15" />
<property name="project.structure.side.proportion" value="0.2" /> <property name="project.structure.side.proportion" value="0.2" />
</component> </component>
@ -43,18 +43,7 @@
<component name="SQLPlugin.ProjectConfiguration"> <component name="SQLPlugin.ProjectConfiguration">
<queries /> <queries />
</component> </component>
<component name="ServiceViewManager"> <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="project-level" UseSingleDictionary="true" transferred="true" />
<option name="viewStates">
<list>
<serviceView>
<treeState>
<expand />
<select />
</treeState>
</serviceView>
</list>
</option>
</component>
<component name="SvnConfiguration"> <component name="SvnConfiguration">
<configuration /> <configuration />
</component> </component>
@ -69,22 +58,18 @@
<servers /> <servers />
</component> </component>
<component name="WindowStateProjectService"> <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" /> <screen x="0" y="0" width="1366" height="728" />
</state> </state>
<state x="79" y="101" key="FileChooserDialogImpl/0.0.1366.728@0.0.1366.728" timestamp="1595328182010" /> <state x="488" y="70" key="#com.intellij.ide.util.MemberChooser/0.0.1366.728@0.0.1366.728" timestamp="1603963583320" />
<state x="348" y="62" key="NewModule_or_Project.wizard" timestamp="1592831160031"> <state x="79" y="101" key="FileChooserDialogImpl" timestamp="1604401015065">
<screen x="0" y="0" width="1366" height="728" /> <screen x="0" y="0" width="1366" height="728" />
</state> </state>
<state x="348" y="62" key="NewModule_or_Project.wizard/0.0.1366.728@0.0.1366.728" timestamp="1592831160031" /> <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="1595328184010"> <state x="163" y="0" key="SettingsEditor" timestamp="1604401021463">
<screen x="0" y="0" width="1366" height="728" /> <screen x="0" y="0" width="1366" height="728" />
</state> </state>
<state x="163" y="0" key="SettingsEditor/0.0.1366.728@0.0.1366.728" timestamp="1595328184010" /> <state x="163" y="0" key="SettingsEditor/0.0.1366.728@0.0.1366.728" timestamp="1604401021463" />
<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" />
</component> </component>
<component name="XDebuggerManager"> <component name="XDebuggerManager">
<breakpoint-manager> <breakpoint-manager>

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

3
README.md Normal file → Executable file
View 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. 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%]]]
@ -60,3 +58,4 @@ 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,43 +18,30 @@
<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>
<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> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<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!/" />
</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!/" />
</SOURCES> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>
@ -70,11 +57,11 @@
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <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> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <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> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>
@ -92,44 +79,33 @@
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <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> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <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> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <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> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <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> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <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> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<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!/" />
</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!/" />
</SOURCES> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>
@ -147,13 +123,47 @@
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <CLASSES>
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.16.1.jar!/" /> <root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.16.2.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.16.1.jar!/" /> <root url="jar://$MODULE_DIR$/../../import/craftbukkit-1.16.2.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
</orderEntry> </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> </component>
</module> </module>

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

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

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

View File

View File

View File

View File

View File

View File

View File

7
plugin.yml Normal file → Executable file
View File

@ -1,6 +1,7 @@
name: SkPathfinderGoals 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.0" version: "2.2.1"
main: me.TheBukor.SkStuff.SkStuff main: me.TheBukor.SkStuff.SkStuff
softdepend: [Skript] depend: [Skript]
api-version: 1.13

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

57
src/me/TheBukor/SkStuff/SkStuff.java Normal file → Executable file
View File

@ -2,28 +2,16 @@ package me.TheBukor.SkStuff;
import ch.njol.skript.Skript; import ch.njol.skript.Skript;
import ch.njol.skript.lang.ExpressionType; 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.bstats.Metrics;
import me.TheBukor.SkStuff.effects.*; 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 me.TheBukor.SkStuff.util.*;
import org.bukkit.Bukkit; 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 org.bukkit.plugin.java.JavaPlugin;
import javax.annotation.Nullable;
import java.io.IOException;
public class SkStuff extends JavaPlugin { 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; private static NMSInterface nmsMethods;
@ -31,7 +19,7 @@ public class SkStuff extends JavaPlugin {
public void onEnable() { public void onEnable() {
if (Bukkit.getPluginManager().getPlugin("Skript") != null && Skript.isAcceptRegistrations()) { if (Bukkit.getPluginManager().getPlugin("Skript") != null && Skript.isAcceptRegistrations()) {
Skript.registerAddon(this); 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..."); 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%"); 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()) { 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.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...");
@ -55,44 +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.2!"); 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.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; 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;
@ -103,6 +96,6 @@ public class SkStuff extends JavaPlugin {
} }
public void onDisable() { 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
View File

5
src/me/TheBukor/SkStuff/effects/EffClearPathGoals.java Normal file → Executable file
View 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
View File

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

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

@ -7,6 +7,7 @@ import java.util.List;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import me.TheBukor.SkStuff.pathfinders.*;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Animals; import org.bukkit.entity.Animals;
import org.bukkit.entity.ArmorStand; 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.skript.util.Timespan;
import ch.njol.util.Kleenean; import ch.njol.util.Kleenean;
import me.TheBukor.SkStuff.SkStuff; import me.TheBukor.SkStuff.SkStuff;
import me.TheBukor.SkStuff.pathfinders.PathfinderGoalFollow_v1_13_R2;
import me.TheBukor.SkStuff.pathfinders.PathfinderGoalFollow_v1_14_R1;
import me.TheBukor.SkStuff.util.ReflectionUtils; import me.TheBukor.SkStuff.util.ReflectionUtils;
public final class EffSetPathGoal extends Effect { public final class EffSetPathGoal extends Effect {
@ -97,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) {
@ -156,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) {
@ -265,7 +264,7 @@ public final class EffSetPathGoal extends Effect {
newGoals.add(goalFollowAdults.getConstructor(entAnimal, double.class).newInstance(nmsEnt, spd)); newGoals.add(goalFollowAdults.getConstructor(entAnimal, double.class).newInstance(nmsEnt, spd));
} else if (mark == 8) { } else if (mark == 8) {
target = true; target = true;
boolean callHelp = (callForHelp == null ? false : callForHelp.getSingle(e)); boolean callHelp = (callForHelp != null && callForHelp.getSingle(e));
EntityData<?>[] types = typesToFightBack.getAll(e); EntityData<?>[] types = typesToFightBack.getAll(e);
List<Class<?>> typesClasses = new ArrayList<Class<?>>(); List<Class<?>> typesClasses = new ArrayList<Class<?>>();
for (EntityData<?> entData : types) { for (EntityData<?> entData : types) {
@ -327,7 +326,7 @@ public final class EffSetPathGoal extends Effect {
} }
} else { } else {
double spd = (meleeSpeed == null ? 1.0D : meleeSpeed.getSingle(e).doubleValue()); 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"); Class<?> goalMeleeAttack = ReflectionUtils.getNMSClass("PathfinderGoalMeleeAttack");
newGoals.add(goalMeleeAttack.getConstructor(entCreature, double.class, boolean.class).newInstance(nmsEnt, spd, memorize)); 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)); newGoals.add(ReflectionUtils.getConstructor(goalSpiderNearTarget, nmsEnt.getClass(), Class.class).newInstance(nmsEnt, nmsClass));
} }
} else { } else {
boolean checkView = (checkSight == null ? true : checkSight.getSingle(e)); boolean checkView = (checkSight == null || checkSight.getSingle(e));
Class<?> goalNearTarget = ReflectionUtils.getNMSClass("PathfinderGoalNearestAttackableTarget"); Class<?> goalNearTarget = ReflectionUtils.getNMSClass("PathfinderGoalNearestAttackableTarget");
for (EntityData<?> entData : types) { for (EntityData<?> entData : types) {
if (!LivingEntity.class.isAssignableFrom(entData.getType())) if (!LivingEntity.class.isAssignableFrom(entData.getType()))
@ -539,16 +538,21 @@ public final class EffSetPathGoal extends Effect {
} }
Class<?> nmsClass = ReflectionUtils.getNMSClass("Entity" + className); Class<?> nmsClass = ReflectionUtils.getNMSClass("Entity" + className);
switch (version) { switch (version) {
case "v1.12_R1.": //case "v1.12_R1.":
newGoals.add(new PathfinderGoalFollow_v1_12_R1((net.minecraft.server.v1_12_R1.EntityCreature) nmsEnt, nmsClass, radius, spd, usesName, customName)); // newGoals.add(new PathfinderGoalFollow_v1_12_R1((net.minecraft.server.v1_12_R1.EntityCreature) nmsEnt, nmsClass, radius, spd, usesName, customName));
break; // break;
case "v1.13_R2.": case "v1.13_R2.":
newGoals.add(new PathfinderGoalFollow_v1_13_R2((net.minecraft.server.v1_13_R2.EntityCreature) nmsEnt, nmsClass, radius, spd, usesName, customName)); newGoals.add(new PathfinderGoalFollow_v1_13_R2((net.minecraft.server.v1_13_R2.EntityCreature) nmsEnt, nmsClass, radius, spd, usesName, customName));
break; break;
case "v1.14_R1.": case "v1.14_R1.":
newGoals.add(new PathfinderGoalFollow_v1_14_R1((net.minecraft.server.v1_14_R1.EntityCreature) nmsEnt, nmsClass, radius, spd, usesName, customName)); newGoals.add(new PathfinderGoalFollow_v1_14_R1((net.minecraft.server.v1_14_R1.EntityCreature) nmsEnt, nmsClass, radius, spd, usesName, customName));
break; 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) { } else if (mark == 42) {

View File

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

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

View File

View File

@ -1,10 +1,5 @@
package me.TheBukor.SkStuff.pathfinders; package me.TheBukor.SkStuff.pathfinders;
import me.TheBukor.SkStuff.util.ReflectionUtils;
import net.minecraft.server.v1_13_R2.*; import net.minecraft.server.v1_13_R2.*;
import java.lang.reflect.Field;
import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
public class PathfinderGoalFollow_v1_13_R2 extends PathfinderGoal { public class PathfinderGoalFollow_v1_13_R2 extends PathfinderGoal {

View File

View File

View File

@ -1,22 +1,22 @@
package me.TheBukor.SkStuff.pathfinders; package me.TheBukor.SkStuff.pathfinders;
import net.minecraft.server.v1_16_R1.Entity; import net.minecraft.server.v1_16_R3.Entity;
import net.minecraft.server.v1_16_R1.EntityCreature; import net.minecraft.server.v1_16_R3.EntityCreature;
import net.minecraft.server.v1_16_R1.EntityLiving; import net.minecraft.server.v1_16_R3.EntityLiving;
import net.minecraft.server.v1_16_R1.PathfinderGoal; import net.minecraft.server.v1_16_R3.PathfinderGoal;
import java.util.List; import java.util.List;
public class PathfinderGoalFollow_v1_16_R1 extends PathfinderGoal { public class PathfinderGoalFollow_v1_16_R3 extends PathfinderGoal {
private EntityCreature follower; private final EntityCreature follower;
private EntityLiving followed; private EntityLiving followed;
private Class<?> followedClass; private final Class<?> followedClass;
private float radius; private final float radius;
private double speed; private final double speed;
private boolean isByName; private final boolean isByName;
private String customName; 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.follower = follower;
this.followedClass = followedClass; this.followedClass = followedClass;
this.radius = radius; this.radius = radius;

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

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

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

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

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

50
src/me/TheBukor/SkStuff/util/NMS_v1_14_R1.java Normal file → Executable file
View 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.EntityInsentient;
import net.minecraft.server.v1_14_R1.BehaviorController;
import net.minecraft.server.v1_14_R1.PathfinderGoal; import net.minecraft.server.v1_14_R1.PathfinderGoal;
import net.minecraft.server.v1_14_R1.PathfinderGoalSelector; import net.minecraft.server.v1_14_R1.PathfinderGoalSelector;
import org.bukkit.craftbukkit.v1_14_R1.entity.CraftEntity; import org.bukkit.craftbukkit.v1_14_R1.entity.CraftEntity;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import java.util.Iterator; import java.lang.reflect.Field;
import java.util.LinkedHashSet; import java.util.*;
public class NMS_v1_14_R1 implements NMSInterface { public class NMS_v1_14_R1 implements NMSInterface {
@ -16,11 +17,46 @@ public class NMS_v1_14_R1 implements NMSInterface {
@Override @Override
public void clearPathfinderGoals(Entity entity) { public void clearPathfinderGoals(Entity entity) {
EntityInsentient nmsEnt = (EntityInsentient) ((CraftEntity) entity).getHandle(); EntityInsentient nmsEntity = (EntityInsentient) ((CraftEntity) entity).getHandle();
((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, nmsEnt.goalSelector)).clear(); PathfinderGoalSelector goalSelector = nmsEntity.goalSelector;
((LinkedHashSet<?>) ReflectionUtils.getField("c", PathfinderGoalSelector.class, nmsEnt.goalSelector)).clear(); PathfinderGoalSelector targetSelector = nmsEntity.targetSelector;
((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, nmsEnt.targetSelector)).clear(); try {
((LinkedHashSet<?>) ReflectionUtils.getField("c", PathfinderGoalSelector.class, nmsEnt.targetSelector)).clear(); 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 @Override

50
src/me/TheBukor/SkStuff/util/NMS_v1_15_R1.java Normal file → Executable file
View File

@ -1,14 +1,15 @@
package me.TheBukor.SkStuff.util; 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.EntityInsentient;
import net.minecraft.server.v1_15_R1.PathfinderGoal; import net.minecraft.server.v1_15_R1.PathfinderGoal;
import net.minecraft.server.v1_15_R1.PathfinderGoalSelector; import net.minecraft.server.v1_15_R1.PathfinderGoalSelector;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftEntity; import org.bukkit.craftbukkit.v1_15_R1.entity.CraftEntity;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import java.util.Iterator; import java.lang.reflect.Field;
import java.util.LinkedHashSet; import java.util.*;
public class NMS_v1_15_R1 implements NMSInterface { public class NMS_v1_15_R1 implements NMSInterface {
@ -16,11 +17,46 @@ public class NMS_v1_15_R1 implements NMSInterface {
@Override @Override
public void clearPathfinderGoals(Entity entity) { public void clearPathfinderGoals(Entity entity) {
EntityInsentient nmsEnt = (EntityInsentient) ((CraftEntity) entity).getHandle(); EntityInsentient nmsEntity = (EntityInsentient) ((CraftEntity) entity).getHandle();
((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, nmsEnt.goalSelector)).clear(); PathfinderGoalSelector goalSelector = nmsEntity.goalSelector;
((LinkedHashSet<?>) ReflectionUtils.getField("c", PathfinderGoalSelector.class, nmsEnt.goalSelector)).clear(); PathfinderGoalSelector targetSelector = nmsEntity.targetSelector;
((LinkedHashSet<?>) ReflectionUtils.getField("b", PathfinderGoalSelector.class, nmsEnt.targetSelector)).clear(); try {
((LinkedHashSet<?>) ReflectionUtils.getField("c", PathfinderGoalSelector.class, nmsEnt.targetSelector)).clear(); 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 @Override

View File

@ -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;
}
}

View 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
View File

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

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