mirror of
https://github.com/TotalFreedomMC/VulnerabilityPatcher.git
synced 2024-05-18 18:51:17 +00:00
Commit v0.5
Added basic Paper 1.13 and 1.14 support.
This commit is contained in:
parent
e92f16631f
commit
7da3fb9b18
|
@ -1,15 +0,0 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Gradle: com.destroystokyo.paper:paper-api:1.13.2-R0.1-SNAPSHOT">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.destroystokyo.paper/paper-api/1.13.2-R0.1-SNAPSHOT/acb4e5ffd25814ef0a53acedec9a94d79dd3f7a1/paper-api-1.13.2-R0.1-SNAPSHOT.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.destroystokyo.paper/paper-api/1.13.2-R0.1-SNAPSHOT/f7ef5c5518b628b2a34ea8f4cae361d44c20509a/paper-api-1.13.2-R0.1-SNAPSHOT-sources.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.destroystokyo.paper/paper-api/1.13.2-R0.1-SNAPSHOT/2daddae5bcc8c14d08b014a7e2366a82497f4fd5/paper-api-1.13.2-R0.1-SNAPSHOT-sources.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.destroystokyo.paper/paper-api/1.13.2-R0.1-SNAPSHOT/e27f6d6e0d9ff5618be8298262586fe4c59f54cd/paper-api-1.13.2-R0.1-SNAPSHOT-sources.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.destroystokyo.paper/paper-api/1.13.2-R0.1-SNAPSHOT/29425a28f9797b501425b65a6e85382085c6885d/paper-api-1.13.2-R0.1-SNAPSHOT-sources.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.destroystokyo.paper/paper-api/1.13.2-R0.1-SNAPSHOT/e4e756ec274f5d9e66e849b971df02e23cbb22d6/paper-api-1.13.2-R0.1-SNAPSHOT-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,11 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Gradle: com.destroystokyo.paper:paper-api:1.14-R0.1-SNAPSHOT">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.destroystokyo.paper/paper-api/1.14-R0.1-SNAPSHOT/389a9162fe8fe8b127d4ec5b7d9c7e69f6a03e04/paper-api-1.14-R0.1-SNAPSHOT.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.destroystokyo.paper/paper-api/1.14-R0.1-SNAPSHOT/d8eb6e238bfa98e57fbfaa2963c230e33dffcc47/paper-api-1.14-R0.1-SNAPSHOT-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.linked.project.id="VulnerabilityPatcher-Paper" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="me.cooljwb.vulnerabilitypatcher" external.system.module.version="v0.4" type="JAVA_MODULE" version="4">
|
||||
<module external.linked.project.id="VulnerabilityPatcher-Paper" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="me.cooljwb.vulnerabilitypatcher" external.system.module.version="v0.5" type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$/../..">
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.linked.project.id="VulnerabilityPatcher-Paper:main" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="me.cooljwb.vulnerabilitypatcher" external.system.module.type="sourceSet" external.system.module.version="v0.4" type="JAVA_MODULE" version="4">
|
||||
<module external.linked.project.id="VulnerabilityPatcher-Paper:main" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="me.cooljwb.vulnerabilitypatcher" external.system.module.type="sourceSet" external.system.module.version="v0.5" type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="minecraft" name="Minecraft">
|
||||
<configuration>
|
||||
|
@ -21,16 +21,25 @@
|
|||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/spigot-1.13.2.jar!/" />
|
||||
<root url="jar://$MODULE_DIR$/../../libs/Spigot-1.13.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="library" name="Gradle: com.destroystokyo.paper:paper-api:1.13.2-R0.1-SNAPSHOT" level="project" />
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/Spigot-1.14.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="library" name="Gradle: com.destroystokyo.paper:paper-api:1.14-R0.1-SNAPSHOT" level="project" />
|
||||
<orderEntry type="library" name="Gradle: commons-lang:commons-lang:2.6" level="project" />
|
||||
<orderEntry type="library" name="Gradle: com.googlecode.json-simple:json-simple:1.1.1" level="project" />
|
||||
<orderEntry type="library" name="Gradle: com.google.code.findbugs:jsr305:1.3.9" level="project" />
|
||||
<orderEntry type="library" name="Gradle: com.googlecode.json-simple:json-simple:1.1.1" level="project" />
|
||||
<orderEntry type="library" name="Gradle: net.md-5:bungeecord-chat:1.13-SNAPSHOT" level="project" />
|
||||
<orderEntry type="library" name="Gradle: com.google.guava:guava:21.0" level="project" />
|
||||
<orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.8.0" level="project" />
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.linked.project.id="VulnerabilityPatcher-Paper:test" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="me.cooljwb.vulnerabilitypatcher" external.system.module.type="sourceSet" external.system.module.version="v0.4" type="JAVA_MODULE" version="4">
|
||||
<module external.linked.project.id="VulnerabilityPatcher-Paper:test" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="me.cooljwb.vulnerabilitypatcher" external.system.module.type="sourceSet" external.system.module.version="v0.5" type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="minecraft" name="Minecraft">
|
||||
<configuration>
|
||||
|
@ -22,15 +22,25 @@
|
|||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/spigot-1.13.2.jar!/" />
|
||||
<root url="jar://$MODULE_DIR$/../../libs/Spigot-1.13.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="library" name="Gradle: com.destroystokyo.paper:paper-api:1.13.2-R0.1-SNAPSHOT" level="project" />
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/Spigot-1.14.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="library" name="Gradle: com.destroystokyo.paper:paper-api:1.14-R0.1-SNAPSHOT" level="project" />
|
||||
<orderEntry type="library" name="Gradle: com.googlecode.json-simple:json-simple:1.1.1" level="project" />
|
||||
<orderEntry type="library" name="Gradle: junit:junit:4.12" level="project" />
|
||||
<orderEntry type="library" name="Gradle: org.hamcrest:hamcrest-core:1.3" level="project" />
|
||||
<orderEntry type="library" name="Gradle: commons-lang:commons-lang:2.6" level="project" />
|
||||
<orderEntry type="library" name="Gradle: com.google.code.findbugs:jsr305:1.3.9" level="project" />
|
||||
<orderEntry type="library" name="Gradle: net.md-5:bungeecord-chat:1.13-SNAPSHOT" level="project" />
|
||||
|
@ -42,7 +52,6 @@
|
|||
<orderEntry type="library" name="Gradle: org.ow2.asm:asm-analysis:7.1" level="project" />
|
||||
<orderEntry type="library" name="Gradle: org.ow2.asm:asm-tree:7.1" level="project" />
|
||||
<orderEntry type="library" name="Gradle: org.ow2.asm:asm:7.1" level="project" />
|
||||
<orderEntry type="library" name="Gradle: org.hamcrest:hamcrest-core:1.3" level="project" />
|
||||
</component>
|
||||
<component name="TestModuleProperties" production-module="me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher-Paper.main" />
|
||||
</module>
|
124
.idea/uiDesigner.xml
Normal file
124
.idea/uiDesigner.xml
Normal file
|
@ -0,0 +1,124 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Palette2">
|
||||
<group name="Swing">
|
||||
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
||||
</item>
|
||||
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
|
||||
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
||||
<initial-values>
|
||||
<property name="text" value="Button" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="RadioButton" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="CheckBox" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="Label" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
||||
<preferred-size width="-1" height="20" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
||||
</item>
|
||||
</group>
|
||||
</component>
|
||||
</project>
|
|
@ -1,25 +1,38 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="BookmarkManager">
|
||||
<bookmark url="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier_1_14.java" line="108" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="4038a6e9-7d52-4dd0-91ef-d9a12aa1c1b2" name="Default Changelist" comment="">
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Chunks.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Item_Frames.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/libraries/Gradle__com_destroystokyo_paper_paper_api_1_13_2_R0_1_SNAPSHOT.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Gradle__com_destroystokyo_paper_paper_api_1_13_2_R0_1_SNAPSHOT.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/.idea/libraries/Gradle__com_destroystokyo_paper_paper_api_1_14_R0_1_SNAPSHOT.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/.idea/uiDesigner.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier_1_13.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier_1_14.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Handswitch.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/libraries/Gradle__com_destroystokyo_paper_paper_api_1_13_2_R0_1_SNAPSHOT.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/modules/me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher-Paper.iml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/modules/me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher-Paper.iml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/modules/me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher-Paper.main.iml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/modules/me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher-Paper.main.iml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/modules/me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher-Paper.test.iml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/modules/me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher-Paper.test.iml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/build.gradle" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/gradle.properties" beforeDir="false" afterPath="$PROJECT_DIR$/gradle.properties" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/out/production/resources/plugin.yml" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/resources/plugin.yml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/SMG.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/SMG.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/Variables.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/Variables.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/VulnerabilityPatcher.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/VulnerabilityPatcher.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/commands/CommandGetNBT.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/commands/CommandGetNBT.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/commands/CommandVulnerabilityPatcher.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/commands/CommandVulnerabilityPatcher.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Arrows.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Arrows.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Blocks.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Blocks.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Books.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Books.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Crash_Items.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Crash_Items.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Death_Items.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Death_Items.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Death_Potions.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Death_Potions.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Disconnect_Items.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Disconnect_Items.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Follow_Range.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Follow_Range.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Entity_Tag.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Entity_Tag.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Item_Frames.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Item_Frames.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Patches.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Patches.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Rouge_Entity.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Rouge_Entity.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/resources/config.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/config.yml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/resources/plugin.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/plugin.yml" afterDir="false" />
|
||||
</list>
|
||||
|
@ -49,17 +62,42 @@
|
|||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/VulnerabilityPatcher.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="408">
|
||||
<caret line="39" column="39" lean-forward="true" selection-start-line="39" selection-start-column="39" selection-end-line="39" selection-end-column="39" />
|
||||
<state relative-caret-position="-281">
|
||||
<caret line="55" column="17" selection-start-line="55" selection-start-column="17" selection-end-line="55" selection-end-column="17" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Patches.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="317">
|
||||
<caret line="120" column="46" lean-forward="true" selection-start-line="120" selection-start-column="46" selection-end-line="120" selection-end-column="46" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#7367#7631#1" />
|
||||
<element signature="method#notify#0;class#Patches#0" />
|
||||
<element signature="method#notify#1;class#Patches#0" />
|
||||
<element signature="method#notifyViolation#0;class#Patches#0" />
|
||||
<element signature="method#notifyViolation#1;class#Patches#0" />
|
||||
<element signature="method#log#0;class#Patches#0" />
|
||||
<element signature="method#debug#0;class#Patches#0" />
|
||||
<element signature="method#fired_countermeasure#0;class#Patches#0" />
|
||||
<element signature="method#mode#0;class#Patches#0" />
|
||||
<element signature="e#11334#11373#1" />
|
||||
<element signature="e#11111#11112#0" expanded="true" />
|
||||
<element signature="method#clearItemMeta#1;class#Patches#0" />
|
||||
<element signature="method#itemInVisibleSlot#0;class#Patches#0" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/config.yml">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Disconnect_Items.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="603">
|
||||
<caret line="43" column="43" lean-forward="true" selection-start-line="43" selection-start-column="43" selection-end-line="43" selection-end-column="43" />
|
||||
<state relative-caret-position="405">
|
||||
<caret line="50" column="51" lean-forward="true" selection-start-line="50" selection-start-column="51" selection-end-line="50" selection-end-column="51" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
|
@ -82,6 +120,11 @@
|
|||
<find>getHandle().</find>
|
||||
<find>c(NBT</find>
|
||||
<find>containsDeathItem</find>
|
||||
<find>setAmount</find>
|
||||
<find>containsIgnore</find>
|
||||
<find>NBTTagCompound</find>
|
||||
<find>System.out.p</find>
|
||||
<find>System.out.</find>
|
||||
</findStrings>
|
||||
<dirStrings>
|
||||
<dir>C:\Users\William\.gradle\caches\modules-2\files-2.1\com.destroystokyo.paper\paper-api\1.13.2-R0.1-SNAPSHOT\c59a5eecaa5170937a7044fefd475b1373bb255\paper-api-1.13.2-R0.1-SNAPSHOT.jar!\org</dir>
|
||||
|
@ -93,31 +136,38 @@
|
|||
<component name="IdeDocumentHistory">
|
||||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/build.gradle" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/commands/CommandGetNBT.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Books.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Structure_Blocks.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Rouge_Entity.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/Variables.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/SMG.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/resources/plugin.yml" />
|
||||
<option value="$PROJECT_DIR$/gradle.properties" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/VulnerabilityPatcher.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Chunks.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Item_Frames.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Arrows.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Follow_Range.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/commands/CommandVulnerabilityPatcher.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Death_Items.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Patches.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Item_Frames.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/resources/config.yml" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Handswitch.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/resources/plugin.yml" />
|
||||
<option value="$PROJECT_DIR$/build.gradle" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Death_Items.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Books.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Crash_Items.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Death_Potions.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Entity_Tag.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/commands/CommandGetNBT.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/SMG.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Rouge_Entity.java" />
|
||||
<option value="$PROJECT_DIR$/gradle.properties" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/commands/CommandVulnerabilityPatcher.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier_1_14.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier_1_13.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Arrows.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/VulnerabilityPatcher.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Patches.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Disconnect_Items.java" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectFrameBounds" extendedState="6">
|
||||
<option name="x" value="124" />
|
||||
<option name="y" value="37" />
|
||||
<component name="ProjectFrameBounds" extendedState="7">
|
||||
<option name="x" value="-106" />
|
||||
<option name="y" value="6" />
|
||||
<option name="width" value="1936" />
|
||||
<option name="height" value="1056" />
|
||||
</component>
|
||||
|
@ -127,7 +177,7 @@
|
|||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="Scope" />
|
||||
<pane id="PackagesPane" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<expand>
|
||||
|
@ -170,6 +220,15 @@
|
|||
<item name="vulnerabilitypatcher" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="commands" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="VulnerabilityPatcher-Paper" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="VulnerabilityPatcher-Paper" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="java" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="vulnerabilitypatcher" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="modifiers" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="VulnerabilityPatcher-Paper" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="VulnerabilityPatcher-Paper" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
|
@ -190,23 +249,18 @@
|
|||
<item name="VulnerabilityPatcher-Paper" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="VulnerabilityPatcher-Paper" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
|
||||
<item name="Gradle: com.destroystokyo.paper:paper-api:1.13.2-R0.1-SNAPSHOT" type="70bed36:NamedLibraryElementNode" />
|
||||
</path>
|
||||
</expand>
|
||||
<select />
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="PackagesPane" />
|
||||
<pane id="Scope" />
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1562107277651" />
|
||||
<property name="project.structure.last.edited" value="Modules" />
|
||||
<property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1564325093141" />
|
||||
<property name="project.structure.last.edited" value="SDKs" />
|
||||
<property name="project.structure.proportion" value="0.0" />
|
||||
<property name="project.structure.side.proportion" value="0.0" />
|
||||
<property name="project.structure.side.proportion" value="0.2" />
|
||||
</component>
|
||||
<component name="RunDashboard">
|
||||
<option name="ruleStates">
|
||||
|
@ -254,11 +308,20 @@
|
|||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TodoView">
|
||||
<todo-panel id="selected-file">
|
||||
<is-autoscroll-to-source value="true" />
|
||||
</todo-panel>
|
||||
<todo-panel id="all">
|
||||
<are-packages-shown value="true" />
|
||||
<is-autoscroll-to-source value="true" />
|
||||
</todo-panel>
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.20788912" />
|
||||
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.24520256" />
|
||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||
<window_info id="Image Layers" order="2" />
|
||||
<window_info id="Designer" order="3" />
|
||||
|
@ -271,7 +334,7 @@
|
|||
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
|
||||
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
||||
<window_info anchor="bottom" id="TODO" order="6" />
|
||||
<window_info active="true" anchor="bottom" id="TODO" order="6" visible="true" weight="0.32936078" />
|
||||
<window_info anchor="bottom" id="Terminal" order="7" />
|
||||
<window_info anchor="bottom" id="Event Log" order="8" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Version Control" order="9" />
|
||||
|
@ -290,71 +353,7 @@
|
|||
</layout>
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Death_Potions.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="299">
|
||||
<caret line="40" column="13" selection-start-line="40" selection-start-column="13" selection-end-line="40" selection-end-column="13" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Trident_Riptide.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="161">
|
||||
<caret line="40" column="13" selection-start-line="40" selection-start-column="13" selection-end-line="40" selection-end-column="13" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Blocks.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="68">
|
||||
<caret line="8" column="13" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="13" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/commands/CommandGetNBT.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="272">
|
||||
<caret line="16" column="13" selection-start-line="16" selection-start-column="13" selection-end-line="16" selection-end-column="13" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Structure_Blocks.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="272">
|
||||
<caret line="16" column="41" lean-forward="true" selection-start-line="16" selection-start-column="41" selection-end-line="16" selection-end-column="41" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Rouge_Entity.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="399">
|
||||
<caret line="43" column="55" lean-forward="true" selection-start-line="43" selection-start-column="55" selection-end-line="43" selection-end-column="55" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/Variables.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="136">
|
||||
<caret line="9" column="35" lean-forward="true" selection-start-line="9" selection-start-column="35" selection-end-line="9" selection-end-column="35" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.destroystokyo.paper/paper-api/1.13.2-R0.1-SNAPSHOT/29425a28f9797b501425b65a6e85382085c6885d/paper-api-1.13.2-R0.1-SNAPSHOT-sources.jar!/org/bukkit/entity/Entity.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="2465">
|
||||
<caret line="167" column="81" selection-start-line="167" selection-start-column="79" selection-end-line="167" selection-end-column="81" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.destroystokyo.paper/paper-api/1.13.2-R0.1-SNAPSHOT/29425a28f9797b501425b65a6e85382085c6885d/paper-api-1.13.2-R0.1-SNAPSHOT-sources.jar!/org/bukkit/entity/Entity.java" />
|
||||
<entry file="jar://$PROJECT_DIR$/libs/spigot-1.13.2.jar!/org/bukkit/craftbukkit/v1_13_R2/entity/CraftEntity.class">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="13277">
|
||||
|
@ -365,10 +364,164 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="jar://$PROJECT_DIR$/libs/spigot-1.13.2.jar!/net/minecraft/server/v1_13_R2/Entity.class">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/config.yml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-1564">
|
||||
<caret line="1425" column="24" selection-start-line="1425" selection-start-column="19" selection-end-line="1425" selection-end-column="24" />
|
||||
<state relative-caret-position="722">
|
||||
<caret line="51" column="20" selection-start-line="51" selection-start-column="20" selection-end-line="51" selection-end-column="20" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/build.gradle">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="425">
|
||||
<caret line="25" column="41" selection-start-line="25" selection-start-column="41" selection-end-line="25" selection-end-column="41" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Books.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="34">
|
||||
<caret line="11" column="32" lean-forward="true" selection-start-line="11" selection-start-column="32" selection-end-line="11" selection-end-column="32" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Chunks.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="374">
|
||||
<caret line="22" column="53" lean-forward="true" selection-start-line="22" selection-start-column="53" selection-end-line="22" selection-end-column="53" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#808#809#0" expanded="true" />
|
||||
<element signature="e#868#869#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Death_Items.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="286">
|
||||
<caret line="85" column="5" lean-forward="true" selection-start-line="85" selection-start-column="5" selection-end-line="85" selection-end-column="5" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="method#onBlockDispenseEvent#0;class#Death_Items#0" />
|
||||
<element signature="method#onPlayerDropEvent#0;class#Death_Items#0" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="jar://$PROJECT_DIR$/libs/Spigot-1.14.jar!/org/bukkit/projectiles/ProjectileSource.class">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="221">
|
||||
<caret line="19" lean-forward="true" selection-start-line="19" selection-end-line="19" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Death_Potions.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1173">
|
||||
<caret line="82" column="55" selection-start-line="82" selection-start-column="55" selection-end-line="82" selection-end-column="55" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="jar://$PROJECT_DIR$/libs/Spigot-1.13.jar!/net/minecraft/server/v1_13_R1/NBTBase.class">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-765">
|
||||
<caret line="11" column="17" selection-start-line="11" selection-start-column="17" selection-end-line="11" selection-end-column="17" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="jar://$PROJECT_DIR$/libs/Spigot-1.13.jar!/org/apache/commons/lang3/StringUtils.class">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="272">
|
||||
<caret line="481" column="40" selection-start-line="481" selection-start-column="26" selection-end-line="481" selection-end-column="40" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Entity_Tag.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="34">
|
||||
<caret line="2" column="7" selection-start-line="2" selection-start-column="7" selection-end-line="2" selection-end-column="7" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Handswitch.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="99">
|
||||
<caret line="15" column="26" selection-start-line="15" selection-start-column="26" selection-end-line="15" selection-end-column="26" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Item_Frames.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="391">
|
||||
<caret line="29" column="49" selection-start-line="29" selection-start-column="49" selection-end-line="29" selection-end-column="49" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="jar://$PROJECT_DIR$/libs/Spigot-1.13.jar!/org/bukkit/entity/Arrow.class">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="102">
|
||||
<caret line="9" column="17" selection-start-line="9" selection-start-column="17" selection-end-line="9" selection-end-column="17" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/Variables.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="136">
|
||||
<caret line="9" column="35" selection-start-line="9" selection-start-column="35" selection-end-line="9" selection-end-column="35" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/commands/CommandGetNBT.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="663">
|
||||
<caret line="41" column="44" lean-forward="true" selection-start-line="41" selection-start-column="44" selection-end-line="41" selection-end-column="44" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="187">
|
||||
<caret line="32" column="47" selection-start-line="32" selection-start-column="47" selection-end-line="32" selection-end-column="47" />
|
||||
<folding>
|
||||
<element signature="method#getVersion#0;class#NBTModifier#0" />
|
||||
<element signature="method#itemToString#0;class#NBTModifier#0" />
|
||||
<element signature="method#removePlayerdata#0;class#NBTModifier#0" />
|
||||
<element signature="method#resetMeta#0;class#NBTModifier#0" />
|
||||
<element signature="method#isPlayer#0;class#NBTModifier#0" />
|
||||
<element signature="method#getArrowDamage#0;class#NBTModifier#0" />
|
||||
<element signature="method#setArrowDamage#0;class#NBTModifier#0" />
|
||||
<element signature="method#isCrashItem#0;class#NBTModifier#0" />
|
||||
<element signature="method#isCrashItem#1;class#NBTModifier#0" />
|
||||
<element signature="method#isDeathItem#0;class#NBTModifier#0" />
|
||||
<element signature="method#containsDeathItem#0;class#NBTModifier#0" />
|
||||
<element signature="method#isDisconnectItem#0;class#NBTModifier#0" />
|
||||
<element signature="method#containsDisconnectItem#0;class#NBTModifier#0" />
|
||||
<element signature="method#isDangerousEgg#0;class#NBTModifier#0" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Follow_Range.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="408">
|
||||
<caret line="31" column="13" selection-start-line="31" selection-start-column="13" selection-end-line="31" selection-end-column="13" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Rouge_Entity.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="640">
|
||||
<caret line="58" column="94" selection-start-line="58" selection-start-column="94" selection-end-line="58" selection-end-column="94" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
|
@ -382,137 +535,177 @@
|
|||
<entry file="file://$PROJECT_DIR$/gradle.properties">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="17">
|
||||
<caret line="1" column="18" selection-start-line="1" selection-start-column="18" selection-end-line="1" selection-end-column="18" />
|
||||
<caret line="1" column="18" lean-forward="true" selection-start-line="1" selection-start-column="18" selection-end-line="1" selection-end-column="18" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/build.gradle">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Structure_Blocks.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="391">
|
||||
<caret line="23" column="37" selection-start-line="23" selection-start-column="37" selection-end-line="23" selection-end-column="37" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Chunks.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="374">
|
||||
<caret line="22" column="53" lean-forward="true" selection-start-line="22" selection-start-column="53" selection-end-line="22" selection-end-column="53" />
|
||||
<state relative-caret-position="272">
|
||||
<caret line="16" column="41" lean-forward="true" selection-start-line="16" selection-start-column="41" selection-end-line="16" selection-end-column="41" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#868#869#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Books.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="790">
|
||||
<caret line="81" column="44" lean-forward="true" selection-start-line="81" selection-start-column="44" selection-end-line="81" selection-end-column="44" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Item_Frames.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="68">
|
||||
<caret line="10" column="13" selection-start-line="10" selection-start-column="13" selection-end-line="10" selection-end-column="13" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Arrows.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="33">
|
||||
<caret line="2" selection-start-line="2" selection-end-line="2" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/commands/CommandVulnerabilityPatcher.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="365">
|
||||
<caret line="80" column="71" selection-start-line="80" selection-start-column="71" selection-end-line="80" selection-end-column="71" />
|
||||
<state relative-caret-position="-638">
|
||||
<caret line="63" column="13" lean-forward="true" selection-start-line="63" selection-start-column="13" selection-end-line="63" selection-end-column="13" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/SMG.java">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Trident_Riptide.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="637">
|
||||
<caret line="50" column="86" lean-forward="true" selection-start-line="50" selection-start-column="86" selection-end-line="50" selection-end-column="86" />
|
||||
<state relative-caret-position="609">
|
||||
<caret line="65" column="42" lean-forward="true" selection-start-line="65" selection-start-column="42" selection-end-line="65" selection-end-column="42" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Follow_Range.java">
|
||||
<entry file="jar://$PROJECT_DIR$/libs/spigot-1.13.2.jar!/net/minecraft/server/v1_13_R2/Entity.class">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="17">
|
||||
<caret line="1" lean-forward="true" selection-start-line="1" selection-end-line="1" />
|
||||
<caret line="1425" column="24" selection-start-line="1425" selection-start-column="19" selection-end-line="1425" selection-end-column="24" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Death_Items.java">
|
||||
<entry file="jar://$PROJECT_DIR$/libs/Spigot-1.14.jar!/net/minecraft/server/v1_14_R1/Entity.class">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="660">
|
||||
<caret line="162" lean-forward="true" selection-start-line="162" selection-end-line="162" />
|
||||
<state relative-caret-position="-1411">
|
||||
<caret line="1429" column="35" selection-start-line="1429" selection-start-column="21" selection-end-line="1429" selection-end-column="35" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier_1_14.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="280">
|
||||
<caret line="32" column="4" selection-start-line="32" selection-start-column="4" selection-end-line="32" selection-end-column="4" />
|
||||
<folding>
|
||||
<element signature="method#onBlockDispenseEvent#0;class#Death_Items#0" />
|
||||
<element signature="method#onPlayerDropEvent#0;class#Death_Items#0" />
|
||||
<element signature="method#containsDeathItem#0;class#Death_Items#0" />
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="method#log#0;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#fired_countermeasure#0;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#getItemNBT#0;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#getEntityNBT#0;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#setEntityNBT#0;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#getAttributeList#0;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#itemToString#0;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#removePlayerdata#0;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#resetMeta#0;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#getArrowDamage#0;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#setArrowDamage#0;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#isCrashItem#0;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#containsCrashItem#0;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#isDeathItem#0;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#isDeathItem#1;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#containsDeathItem#0;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#isDisconnectItem#0;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#isDisconnectItem#1;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#containsDisconnectItem#0;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#isMovementDisconnectItem#0;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#isInvalidAttributeName#0;class#NBTModifier_1_14#0" />
|
||||
<element signature="method#isDangerousEgg#0;class#NBTModifier_1_14#0" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Entity_Tag.java">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Arrows.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-34">
|
||||
<caret line="17" column="13" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="13" />
|
||||
<state relative-caret-position="340">
|
||||
<caret line="35" column="4" selection-start-line="35" selection-start-column="4" selection-end-line="35" selection-end-column="4" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Blocks.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="68">
|
||||
<caret line="6" column="13" selection-start-line="6" selection-start-column="13" selection-end-line="6" selection-end-column="13" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier_1_13.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="764">
|
||||
<caret line="302" column="4" selection-start-line="302" selection-start-column="4" selection-end-line="302" selection-end-column="4" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="method#log#0;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#fired_countermeasure#0;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#getItemNBT#0;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#getEntityNBT#0;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#setEntityNBT#0;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#getAttributeList#0;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#itemToString#0;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#removePlayerdata#0;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#resetMeta#0;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#getArrowDamage#0;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#setArrowDamage#0;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#isCrashItem#0;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#containsCrashItem#0;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#isDeathItem#0;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#isDeathItem#1;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#containsDeathItem#0;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#isDisconnectItem#0;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#isDisconnectItem#1;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#containsDisconnectItem#0;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#isMovementDisconnectItem#0;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#isInvalidAttributeName#0;class#NBTModifier_1_13#0" />
|
||||
<element signature="method#isDangerousEgg#0;class#NBTModifier_1_13#0" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Crash_Items.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-1420">
|
||||
<caret line="46" column="13" selection-start-line="46" selection-start-column="13" selection-end-line="46" selection-end-column="13" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Disconnect_Items.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="385">
|
||||
<caret line="102" column="21" lean-forward="true" selection-start-line="102" selection-start-column="21" selection-end-line="102" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Patches.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="102">
|
||||
<caret line="57" column="129" lean-forward="true" selection-start-line="57" selection-start-column="129" selection-end-line="57" selection-end-column="129" />
|
||||
<folding>
|
||||
<element signature="method#notify#0;class#Patches#0" />
|
||||
<element signature="method#notify#1;class#Patches#0" />
|
||||
<element signature="method#notifyViolation#0;class#Patches#0" />
|
||||
<element signature="method#notifyViolation#1;class#Patches#0" />
|
||||
<element signature="method#debug#0;class#Patches#0" />
|
||||
<element signature="method#fired_countermeasure#0;class#Patches#0" />
|
||||
<element signature="method#mode#0;class#Patches#0" />
|
||||
<element signature="e#11198#11234#0" />
|
||||
<element signature="e#11663#11664#0" expanded="true" />
|
||||
<element signature="method#clearItemMeta#1;class#Patches#0" />
|
||||
<element signature="method#getNBTItemTag#0;class#Patches#0" />
|
||||
<element signature="method#getNBTAttributeList#0;class#Patches#0" />
|
||||
<element signature="method#itemToString#0;class#Patches#0" />
|
||||
<element signature="method#itemInVisibleSlot#0;class#Patches#0" />
|
||||
</folding>
|
||||
<state relative-caret-position="178">
|
||||
<caret line="40" column="13" selection-start-line="40" selection-start-column="13" selection-end-line="40" selection-end-column="13" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/VulnerabilityPatcher.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="408">
|
||||
<caret line="39" column="39" lean-forward="true" selection-start-line="39" selection-start-column="39" selection-end-line="39" selection-end-column="39" />
|
||||
<state relative-caret-position="-281">
|
||||
<caret line="55" column="17" selection-start-line="55" selection-start-column="17" selection-end-line="55" selection-end-column="17" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/resources/config.yml">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/SMG.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="603">
|
||||
<caret line="43" column="43" lean-forward="true" selection-start-line="43" selection-start-column="43" selection-end-line="43" selection-end-column="43" />
|
||||
<state relative-caret-position="541">
|
||||
<caret line="52" column="90" selection-start-line="52" selection-start-column="90" selection-end-line="52" selection-end-column="90" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Patches.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="317">
|
||||
<caret line="120" column="46" lean-forward="true" selection-start-line="120" selection-start-column="46" selection-end-line="120" selection-end-column="46" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#7367#7631#1" />
|
||||
<element signature="method#notify#0;class#Patches#0" />
|
||||
<element signature="method#notify#1;class#Patches#0" />
|
||||
<element signature="method#notifyViolation#0;class#Patches#0" />
|
||||
<element signature="method#notifyViolation#1;class#Patches#0" />
|
||||
<element signature="method#log#0;class#Patches#0" />
|
||||
<element signature="method#debug#0;class#Patches#0" />
|
||||
<element signature="method#fired_countermeasure#0;class#Patches#0" />
|
||||
<element signature="method#mode#0;class#Patches#0" />
|
||||
<element signature="e#11334#11373#1" />
|
||||
<element signature="e#11111#11112#0" expanded="true" />
|
||||
<element signature="method#clearItemMeta#1;class#Patches#0" />
|
||||
<element signature="method#itemInVisibleSlot#0;class#Patches#0" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Disconnect_Items.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="405">
|
||||
<caret line="50" column="51" lean-forward="true" selection-start-line="50" selection-start-column="51" selection-end-line="50" selection-end-column="51" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
|
|
|
@ -20,8 +20,10 @@ repositories {
|
|||
|
||||
dependencies {
|
||||
testCompile group: 'junit', name: 'junit', version: '4.12'
|
||||
compile 'com.destroystokyo.paper:paper-api:1.13.2-R0.1-SNAPSHOT'
|
||||
compile files('libs/spigot-1.13.2.jar')
|
||||
compile 'com.destroystokyo.paper:paper-api:1.13-R0.1-SNAPSHOT'
|
||||
compile 'com.destroystokyo.paper:paper-api:1.14-R0.1-SNAPSHOT'
|
||||
compile files('libs/Spigot-1.13.jar')
|
||||
compile files('libs/Spigot-1.14.jar')
|
||||
}
|
||||
|
||||
import org.apache.tools.ant.filters.ReplaceTokens
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
pluginGroup=me.cooljwb.vulnerabilitypatcher
|
||||
pluginVersion=v0.4
|
||||
pluginVersion=v0.5
|
BIN
libs/Spigot-1.13.jar
Normal file
BIN
libs/Spigot-1.13.jar
Normal file
Binary file not shown.
BIN
libs/Spigot-1.14.jar
Normal file
BIN
libs/Spigot-1.14.jar
Normal file
Binary file not shown.
|
@ -45,10 +45,16 @@ public enum SMG {
|
|||
|
||||
BLOCK(SMG.VULNERABILITYPATCHER.msg + "&cThis block is not allowed."),
|
||||
|
||||
VERSION(SMG.VULNERABILITYPATCHER.msg + "&7This server utilizes %s-%s made by %s"),
|
||||
NO_PERMISSION(SMG.VULNERABILITYPATCHER.msg + "&cYou do not have permission to do this."),
|
||||
NOT_PLAYER(SMG.VULNERABILITYPATCHER.msg + "&cThis command can only be done in game."),
|
||||
UNKNOWN_ARGUMENT(SMG.VULNERABILITYPATCHER.msg + "&cUnknown argument."),
|
||||
PLAYER_NOT_FOUND(SMG.VULNERABILITYPATCHER.msg + "&cPlayer %s could not be found."),
|
||||
REMOVED_DATA(SMG.VULNERABILITYPATCHER.msg + "&cRemoved all userdata from player %s."),
|
||||
|
||||
GET_ITEM_IN_MAINHAND(SMG.VULNERABILITYPATCHER.msg + "&cGet an item in your hand."),
|
||||
NO_TAG(SMG.VULNERABILITYPATCHER.msg + "&cThis item has no tag."),
|
||||
TOO_LARGE_ITEM(SMG.VULNERABILITYPATCHER.msg + "&cItem was too large."),
|
||||
|
||||
BLOCKED_TAGS(SMG.VULNERABILITYPATCHER.msg + "&aBlocked tag %s in all monster eggs."),
|
||||
UNBLOCKED_TAGS(SMG.VULNERABILITYPATCHER.msg + "&cUnblocked tag %s in all monster eggs."),
|
||||
|
|
|
@ -33,11 +33,16 @@ import java.util.logging.Logger;
|
|||
|
||||
public final class VulnerabilityPatcher extends JavaPlugin {
|
||||
|
||||
// TODO: Make the EventPriority customizable.
|
||||
// TODO: Check version command.
|
||||
// TODO: Check version loader.
|
||||
|
||||
public static VulnerabilityPatcher main;
|
||||
private Logger log = Logger.getLogger("Minecraft");
|
||||
private Logger log = Logger.getLogger("Minecraft"); // Get the server logger.
|
||||
private final String version = Bukkit.getVersion().substring((Bukkit.getVersion().indexOf(":") + 1), Bukkit.getVersion().indexOf(")")).trim();
|
||||
|
||||
public static String pluginName, pluginVersion;
|
||||
private List<String> pluginAuthors;
|
||||
public static List<String> pluginAuthors;
|
||||
|
||||
private ArrayList<Listener> listeners = new ArrayList<>();
|
||||
|
||||
|
@ -45,34 +50,62 @@ public final class VulnerabilityPatcher extends JavaPlugin {
|
|||
private CommandVulnerabilityPatcher commandvulnerabilitypatcher = new CommandVulnerabilityPatcher(this);
|
||||
private CommandGetNBT commandgetnbt = new CommandGetNBT(this);
|
||||
|
||||
public static Death_Items death_items = new Death_Items();
|
||||
public static Disconnect_Items disconnect_items = new Disconnect_Items();
|
||||
public static Crash_Items crash_items = new Crash_Items();
|
||||
public final Death_Items death_items = new Death_Items();
|
||||
public final Disconnect_Items disconnect_items = new Disconnect_Items();
|
||||
public final Crash_Items crash_items = new Crash_Items();
|
||||
private final Handswitch hand_switch = new Handswitch();
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
initialize();
|
||||
patches.initialize();
|
||||
if(initialize()) {
|
||||
patches.initialize();
|
||||
|
||||
registerConfig();
|
||||
registerEvents();
|
||||
registerConfig();
|
||||
registerEvents();
|
||||
|
||||
Bukkit.getServer().getPluginCommand(commandvulnerabilitypatcher.vulnerabilitypatcher).setExecutor(commandvulnerabilitypatcher);
|
||||
Bukkit.getServer().getPluginCommand(commandgetnbt.getnbt).setExecutor(commandgetnbt);
|
||||
Bukkit.getServer().getPluginCommand(CommandVulnerabilityPatcher.vulnerabilitypatcher).setExecutor(commandvulnerabilitypatcher);
|
||||
Bukkit.getServer().getPluginCommand(CommandGetNBT.getnbt).setExecutor(commandgetnbt);
|
||||
|
||||
log.log(Level.INFO, String.format("[%s] %s v%s was enabled.", pluginName, pluginName, pluginVersion));
|
||||
log.log(Level.INFO, String.format("[%s] %s patches were loaded.", pluginName, listeners.size()));
|
||||
hand_switch.runnable();
|
||||
|
||||
log.log(Level.INFO, String.format("[%s] %s v%s was enabled.", pluginName, pluginName, pluginVersion));
|
||||
log.log(Level.INFO, String.format("[%s] %s patches were loaded.", pluginName, listeners.size()));
|
||||
}
|
||||
}
|
||||
|
||||
public void initialize() {
|
||||
this.pluginName = this.getName();
|
||||
this.pluginVersion = this.getDescription().getVersion();
|
||||
this.pluginAuthors = this.getDescription().getAuthors();
|
||||
private boolean version() {
|
||||
switch(version) {
|
||||
case "1.13":
|
||||
case "1.13.1":
|
||||
case "1.13.2":
|
||||
case "1.14":
|
||||
case "1.14.1":
|
||||
case "1.14.2":
|
||||
case "1.14.3":
|
||||
case "1.14.4":
|
||||
return true;
|
||||
default:
|
||||
log.log(Level.WARNING, String.format("[%s] Server version %s may not work fully or at all with %s-%s, plugin was disabled.", pluginName, version, pluginName, pluginVersion));
|
||||
Bukkit.getPluginManager().disablePlugin(this);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean initialize() {
|
||||
pluginName = this.getName();
|
||||
pluginVersion = this.getDescription().getVersion();
|
||||
pluginAuthors = this.getDescription().getAuthors();
|
||||
|
||||
if(!version())
|
||||
return false;
|
||||
|
||||
this.patches = new Patches(this);
|
||||
this.main = this;
|
||||
main = this;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void registerConfig() {
|
||||
private void registerConfig() {
|
||||
getConfig().options().copyDefaults(true);
|
||||
saveDefaultConfig();
|
||||
}
|
||||
|
@ -83,7 +116,7 @@ public final class VulnerabilityPatcher extends JavaPlugin {
|
|||
patches.initialize();
|
||||
}
|
||||
|
||||
public void registerEvents() {
|
||||
private void registerEvents() {
|
||||
for(String patch : getConfig().getStringList("Patches")) {
|
||||
if(Patches.devmode)
|
||||
log.log(Level.INFO, patch);
|
||||
|
@ -102,8 +135,9 @@ public final class VulnerabilityPatcher extends JavaPlugin {
|
|||
case "StructureBlocks": listeners.add(new Structure_Blocks()); break;
|
||||
case "Chunks": listeners.add(new Chunks()); break;
|
||||
case "ItemFrames": listeners.add(new Item_Frames()); break;
|
||||
}
|
||||
case "Handswitch": listeners.add(new Handswitch()); break;
|
||||
} // Adds all events to the event register.
|
||||
}
|
||||
listeners.forEach(listener -> Bukkit.getPluginManager().registerEvents(listener, this));
|
||||
listeners.forEach(listener -> Bukkit.getPluginManager().registerEvents(listener, this)); // Register the events.
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,14 +3,12 @@ package me.cooljwb.vulnerabilitypatcher.commands;
|
|||
import me.cooljwb.vulnerabilitypatcher.SMG;
|
||||
import me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher;
|
||||
import me.cooljwb.vulnerabilitypatcher.patches.Patches;
|
||||
import net.minecraft.server.v1_13_R2.NBTTagCompound;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
|
@ -33,15 +31,16 @@ public class CommandGetNBT extends Patches implements CommandExecutor {
|
|||
|
||||
Player player = Bukkit.getPlayer(((Player) sender).getUniqueId());
|
||||
ItemStack item = player.getInventory().getItemInMainHand();
|
||||
net.minecraft.server.v1_13_R2.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
NBTTagCompound tag = nmsItemStack.getTag();
|
||||
String strItem = itemToString(item);
|
||||
|
||||
if(item != null && item.getType() != Material.AIR && tag != null)
|
||||
msg(sender, SMG.VULNERABILITYPATCHER.msg + ChatColor.GRAY + "Item data of item: " + ChatColor.GREEN + ChatColor.stripColor(tag.toString()));
|
||||
if(item != null && item.getType() != Material.AIR && strItem != null && !(strItem.length() > 5000))
|
||||
msg(sender, SMG.VULNERABILITYPATCHER.msg + ChatColor.GRAY + "Item data: " + ChatColor.GREEN + ChatColor.stripColor(strItem));
|
||||
else if(item == null || item.getType() == Material.AIR)
|
||||
msg(sender, SMG.VULNERABILITYPATCHER.msg + ChatColor.RED + "Get an item in your main hand!");
|
||||
else if(tag == null)
|
||||
msg(sender, SMG.VULNERABILITYPATCHER.msg + ChatColor.RED + "This item has no item tag.");
|
||||
msg(sender, SMG.GET_ITEM_IN_MAINHAND.msg);
|
||||
else if(strItem == null)
|
||||
msg(sender, SMG.NO_TAG.msg);
|
||||
else if(strItem.length() > 5000)
|
||||
msg(sender, SMG.TOO_LARGE_ITEM.msg);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -4,18 +4,13 @@ import me.cooljwb.vulnerabilitypatcher.SMG;
|
|||
import me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher;
|
||||
import me.cooljwb.vulnerabilitypatcher.patches.Patches;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import net.minecraft.server.v1_13_R2.EntityPlayer;
|
||||
import net.minecraft.server.v1_13_R2.NBTTagCompound;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.entity.CraftEntity;
|
||||
|
||||
/*
|
||||
* Copyright 2019 CoolJWB
|
||||
|
@ -58,8 +53,12 @@ public class CommandVulnerabilityPatcher extends Patches implements CommandExecu
|
|||
}
|
||||
|
||||
else if(args[0].equalsIgnoreCase("version")) {
|
||||
StringBuilder authors = new StringBuilder();
|
||||
for(String author : VulnerabilityPatcher.pluginAuthors)
|
||||
authors.append(author).append(" ");
|
||||
|
||||
if(sender.hasPermission(main.getConfig().getString("Commands.Version.Permission")))
|
||||
msg(sender, SMG.VULNERABILITYPATCHER.msg + ChatColor.GRAY + String.format("Server is running " + ChatColor.GREEN + main.getName() + "-" + main.getDescription().getVersion()));
|
||||
msg(sender, String.format(SMG.VERSION.msg, VulnerabilityPatcher.pluginName, VulnerabilityPatcher.pluginVersion, authors.toString()));
|
||||
else
|
||||
msg(sender, SMG.NO_PERMISSION.msg);
|
||||
}
|
||||
|
@ -76,12 +75,8 @@ public class CommandVulnerabilityPatcher extends Patches implements CommandExecu
|
|||
|
||||
else if(args[0].equalsIgnoreCase("delete") && args.length == 2) {
|
||||
if(sender.hasPermission(main.getConfig().getString("Commands.Delete.Permission"))) {
|
||||
if(Bukkit.getPlayer(args[1]) != null)
|
||||
((CraftEntity)Bukkit.getPlayer(args[1])).getHandle().f(new NBTTagCompound());
|
||||
else if(Bukkit.getOfflinePlayer(args[1]) != null) {
|
||||
File file = new File(Bukkit.getServer().getWorldContainer() + "/world/playerdata/" + Bukkit.getOfflinePlayer(args[1]).getUniqueId().toString() + ".dat");
|
||||
file.delete();
|
||||
}
|
||||
if(removePlayerdata(sender.getName()))
|
||||
msg(sender, String.format(SMG.REMOVED_DATA.msg, args[1]));
|
||||
else
|
||||
msg(sender, String.format(SMG.PLAYER_NOT_FOUND.msg, args[1]));
|
||||
}
|
||||
|
|
|
@ -0,0 +1,166 @@
|
|||
package me.cooljwb.vulnerabilitypatcher.modifiers;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.projectiles.ProjectileSource;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class NBTModifier {
|
||||
|
||||
private Logger log = Logger.getLogger("Minecraft"); // Get the server logger.
|
||||
private NBTModifier_1_13 nbt_1_13 = new NBTModifier_1_13();
|
||||
private NBTModifier_1_14 nbt_1_14 = new NBTModifier_1_14();
|
||||
public static String getVersion() {
|
||||
switch(Bukkit.getVersion().substring((Bukkit.getVersion().indexOf(":") + 1), Bukkit.getVersion().indexOf(")")).trim()) {
|
||||
case "1.13":
|
||||
case "1.13.1":
|
||||
case "1.13.2":
|
||||
return "1.13";
|
||||
case "1.14":
|
||||
case "1.14.1":
|
||||
case "1.14.2":
|
||||
case "1.14.3":
|
||||
case "1.14.4":
|
||||
return "1.14";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public String itemToString(ItemStack item) {
|
||||
switch(getVersion()) {
|
||||
case "1.13":
|
||||
return nbt_1_13.itemToString(item);
|
||||
case "1.14":
|
||||
return nbt_1_14.itemToString(item);
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
public boolean removePlayerdata(String player) {
|
||||
switch(getVersion()) {
|
||||
case "1.13":
|
||||
return nbt_1_13.removePlayerdata(player);
|
||||
case "1.14":
|
||||
return nbt_1_14.removePlayerdata(player);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public void resetMeta(Player player, ItemStack item, boolean mainhand) {
|
||||
switch(getVersion()) {
|
||||
case "1.13":
|
||||
nbt_1_13.resetMeta(player, item, mainhand);
|
||||
break;
|
||||
case "1.14":
|
||||
nbt_1_14.resetMeta(player, item, mainhand);
|
||||
break;
|
||||
}
|
||||
}
|
||||
public boolean isPlayer(ProjectileSource source) {
|
||||
switch(getVersion()) {
|
||||
case "1.13":
|
||||
return nbt_1_13.isPlayer(source);
|
||||
case "1.14":
|
||||
return nbt_1_14.isPlayer(source);
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public double getArrowDamage(Arrow arrow) {
|
||||
switch(getVersion()) {
|
||||
case "1.13":
|
||||
return nbt_1_13.getArrowDamage(arrow);
|
||||
case "1.14":
|
||||
return nbt_1_14.getArrowDamage(arrow);
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
public void setArrowDamage(Arrow arrow, double amount) {
|
||||
switch(getVersion()) {
|
||||
case "1.13":
|
||||
nbt_1_13.setArrowDamage(arrow, amount);
|
||||
break;
|
||||
case "1.14":
|
||||
nbt_1_14.setArrowDamage(arrow, amount);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isCrashItem(ItemStack item) {
|
||||
switch(getVersion()) {
|
||||
case "1.13":
|
||||
return nbt_1_13.isCrashItem(item);
|
||||
case "1.14":
|
||||
return nbt_1_14.isCrashItem(item);
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public boolean containsCrashItem(ItemStack item) {
|
||||
switch(getVersion()) {
|
||||
case "1.13":
|
||||
return nbt_1_13.containsCrashItem(item);
|
||||
case "1.14":
|
||||
return nbt_1_14.containsCrashItem(item);
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isDeathItem(ItemStack item) {
|
||||
switch(getVersion()) {
|
||||
case "1.13":
|
||||
return nbt_1_13.isDeathItem(item);
|
||||
case "1.14":
|
||||
return nbt_1_14.isDeathItem(item);
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public boolean containsDeathItem(ItemStack item) {
|
||||
switch(getVersion()) {
|
||||
case "1.13":
|
||||
return nbt_1_13.containsDeathItem(item);
|
||||
case "1.14":
|
||||
return nbt_1_14.containsDeathItem(item);
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isDisconnectItem(ItemStack item) {
|
||||
switch(getVersion()) {
|
||||
case "1.13":
|
||||
return nbt_1_13.isDisconnectItem(item);
|
||||
case "1.14":
|
||||
return nbt_1_14.isDisconnectItem(item);
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public boolean containsDisconnectItem(ItemStack item) {
|
||||
switch(getVersion()) {
|
||||
case "1.13":
|
||||
return nbt_1_13.containsDisconnectItem(item);
|
||||
case "1.14":
|
||||
return nbt_1_14.containsDisconnectItem(item);
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isDangerousEgg(ItemStack item) {
|
||||
switch(getVersion()) {
|
||||
case "1.13":
|
||||
return nbt_1_13.isDangerousEgg(item);
|
||||
case "1.14":
|
||||
return nbt_1_14.isDangerousEgg(item);
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,312 @@
|
|||
package me.cooljwb.vulnerabilitypatcher.modifiers;
|
||||
|
||||
import me.cooljwb.vulnerabilitypatcher.Variables;
|
||||
import me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher;
|
||||
import me.cooljwb.vulnerabilitypatcher.patches.Patches;
|
||||
import net.minecraft.server.v1_13_R1.NBTBase;
|
||||
import net.minecraft.server.v1_13_R1.NBTTagCompound;
|
||||
import net.minecraft.server.v1_13_R1.NBTTagList;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.craftbukkit.v1_13_R1.entity.CraftEntity;
|
||||
import org.bukkit.craftbukkit.v1_13_R1.entity.CraftPlayer;
|
||||
import org.bukkit.craftbukkit.v1_13_R1.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.BookMeta;
|
||||
import org.bukkit.projectiles.ProjectileSource;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.logging.*;
|
||||
|
||||
public class NBTModifier_1_13 {
|
||||
|
||||
private Logger log = Logger.getLogger("Minecraft");
|
||||
|
||||
/* Misc */
|
||||
public void log(Level level, String message) {
|
||||
log.log(level, String.format("[%s] %s", VulnerabilityPatcher.pluginName, message));
|
||||
}
|
||||
private void fired_countermeasure(String reason) {
|
||||
if (Patches.devmode)
|
||||
log(Level.INFO, String.format("Fired countermeasure in %s reason: %s", getClass().getName(), reason));
|
||||
}
|
||||
|
||||
private NBTTagCompound getItemNBT(ItemStack item) {
|
||||
if(item != null) {
|
||||
net.minecraft.server.v1_13_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
if(nmsItemStack != null)
|
||||
return nmsItemStack.getTag();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
private NBTTagCompound getEntityNBT(Entity entity) {
|
||||
net.minecraft.server.v1_13_R1.Entity nmsEntity = ((CraftEntity)entity).getHandle();
|
||||
NBTTagCompound tag = new NBTTagCompound();
|
||||
nmsEntity.save(tag);
|
||||
return tag;
|
||||
}
|
||||
private void setEntityNBT(Entity entity, NBTTagCompound nbtTagCompound) {
|
||||
net.minecraft.server.v1_13_R1.Entity nmsEntity = ((CraftEntity)entity).getHandle();
|
||||
nmsEntity.f(nbtTagCompound);
|
||||
}
|
||||
public NBTTagList getAttributeList(ItemStack item) {
|
||||
NBTTagCompound itemtag = getItemNBT(item);
|
||||
|
||||
if(item != null && itemtag != null && itemtag.hasKey("AttributeModifiers"))
|
||||
return getItemNBT(item).getList("AttributeModifiers", 10);
|
||||
return null;
|
||||
}
|
||||
String itemToString(ItemStack item) {
|
||||
if(item != null) {
|
||||
net.minecraft.server.v1_13_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack.hasTag())
|
||||
return nmsItemStack.getTag().toString();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
boolean removePlayerdata(String player) {
|
||||
if(Bukkit.getPlayer(player) != null) {
|
||||
((CraftEntity) Bukkit.getPlayer(player)).getHandle().f(new NBTTagCompound());
|
||||
return true;
|
||||
}
|
||||
else if(Bukkit.getOfflinePlayer(player) != null) {
|
||||
File file = new File(Bukkit.getServer().getWorldContainer() + "/world/playerdata/" + Bukkit.getOfflinePlayer(player).getUniqueId().toString() + ".dat");
|
||||
return file.delete();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
void resetMeta(Player player, ItemStack item, boolean mainhand) {
|
||||
net.minecraft.server.v1_13_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack.hasTag() && nmsItemStack.getTag().hasKey("pages")) {
|
||||
if (nmsItemStack.getTag().getList("pages", 8).toString().contains("run_command")) {
|
||||
BookMeta meta = (BookMeta) item.getItemMeta();
|
||||
ItemStack book = new ItemStack(Material.WRITTEN_BOOK);
|
||||
|
||||
meta.setPages(meta.getPages());
|
||||
book.setItemMeta(meta);
|
||||
|
||||
if (mainhand)
|
||||
player.getInventory().setItemInMainHand(book);
|
||||
else
|
||||
player.getInventory().setItemInOffHand(book);
|
||||
}
|
||||
}
|
||||
}
|
||||
boolean isPlayer(ProjectileSource source) {
|
||||
return source instanceof CraftPlayer;
|
||||
}
|
||||
double getArrowDamage(Arrow arrow) {
|
||||
return getEntityNBT(arrow).hasKey("damage") ? getEntityNBT(arrow).getDouble("damage") : 0;
|
||||
}
|
||||
void setArrowDamage(Arrow arrow, double amount) {
|
||||
NBTTagCompound tag = getEntityNBT(arrow);
|
||||
if(tag.hasKey("damage")) {
|
||||
tag.setDouble("damage", amount);
|
||||
setEntityNBT(arrow, tag);
|
||||
}
|
||||
}
|
||||
|
||||
boolean isCrashItem(ItemStack item) {
|
||||
if(item != null) {
|
||||
net.minecraft.server.v1_13_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack.getTag() != null) {
|
||||
NBTTagCompound itemtag = nmsItemStack.getTag();
|
||||
|
||||
if(itemtag.toString().contains("translation.test.invalid")) {
|
||||
fired_countermeasure("isCrashItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
boolean containsCrashItem(ItemStack item) {
|
||||
if(item != null) {
|
||||
net.minecraft.server.v1_13_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack.getTag() != null) {
|
||||
NBTTagCompound blockentitytag = nmsItemStack.getTag().getCompound("BlockEntityTag");
|
||||
NBTTagList itemlist = blockentitytag.getList("Items", 10);
|
||||
|
||||
for(int a = 0; a <= itemlist.size(); a++) {
|
||||
NBTTagCompound itemtag = itemlist.getCompound(a).getCompound("tag");
|
||||
|
||||
if(itemtag.toString().contains("translation.test.invalid")) {
|
||||
fired_countermeasure("containsCrashItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isDeathItem(ItemStack item) {
|
||||
net.minecraft.server.v1_13_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack != null && nmsItemStack.hasTag())
|
||||
return isDeathItem(nmsItemStack.getTag());
|
||||
return false;
|
||||
}
|
||||
private boolean isDeathItem(NBTTagCompound item) {
|
||||
if(item != null) {
|
||||
NBTTagList attrlist = item.getList("AttributeModifiers", 10);
|
||||
|
||||
if(attrlist != null) {
|
||||
for(int i = 0; i < attrlist.size(); i++) {
|
||||
NBTTagCompound compound = (NBTTagCompound)attrlist.get(i);
|
||||
if((compound.getString("Name").equalsIgnoreCase("MAX_HEALTH") || compound.getString("AttributeName").equalsIgnoreCase("generic.maxHealth")) && compound.getDouble("Amount") <= 0) {
|
||||
fired_countermeasure("isDeathItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
boolean containsDeathItem(ItemStack item) {
|
||||
if(item != null) {
|
||||
net.minecraft.server.v1_13_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack.getTag() != null) {
|
||||
NBTTagCompound blockentitytag = nmsItemStack.getTag().getCompound("BlockEntityTag");
|
||||
NBTTagList itemlist = blockentitytag.getList("Items", 10);
|
||||
|
||||
for(int a = 0; a <= itemlist.size(); a++) {
|
||||
NBTTagList attrlist = itemlist.getCompound(a).getCompound("tag").getList("AttributeModifiers", 10);
|
||||
|
||||
for(int b = 0; b <= attrlist.size(); b++) {
|
||||
String attribute_name = attrlist.getCompound(b).getString("AttributeName");
|
||||
String name = attrlist.getCompound(b).getString("Name");
|
||||
Double amount = attrlist.getCompound(b).getDouble("Amount");
|
||||
|
||||
if((name.equalsIgnoreCase("MAX_HEALTH") || attribute_name.equalsIgnoreCase("generic.maxHealth")) && amount <= 0) {
|
||||
fired_countermeasure("containsDeathItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isDisconnectItem(ItemStack item) {
|
||||
net.minecraft.server.v1_13_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack != null && nmsItemStack.hasTag())
|
||||
return isDisconnectItem(nmsItemStack.getTag());
|
||||
return false;
|
||||
}
|
||||
private boolean isDisconnectItem(NBTTagCompound item) {
|
||||
if(item != null) {
|
||||
if(item.hasKey("CustomPotionColor") && item.getInt("CustomPotionColor") < 0) {
|
||||
fired_countermeasure("isCustomPotionColorDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
else if((item.getCompound("display").hasKey("color") && item.getCompound("display").getInt("color") < 0)) {
|
||||
fired_countermeasure("isDisplayColorDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
|
||||
else if(item.getCompound("BlockEntityTag").hasKey("Patterns")) {
|
||||
NBTTagList list = item.getCompound("BlockEntityTag").getList("Patterns", 10);
|
||||
for(int x = 0; x <= list.size(); x++) {
|
||||
if(list.get(x).getTypeId() == 10) {
|
||||
if(list.getCompound(x).hasKey("Color") && list.getCompound(x).getInt("Color") < 0)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
for(NBTBase base : item.getCompound("BlockEntityTag").getList("Patterns", 10)) {
|
||||
if(base.b_().contains("Color:-1")) {
|
||||
fired_countermeasure("isDisplayBannedColorDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else if(item.toString().length() > 60000 || isMovementDisconnectItem(item) || isInvalidAttributeName(item)) {
|
||||
fired_countermeasure("isLargeNBTDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
boolean containsDisconnectItem(ItemStack item) {
|
||||
if(item != null) {
|
||||
net.minecraft.server.v1_13_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack != null && nmsItemStack.getTag() != null) {
|
||||
NBTTagList items = nmsItemStack.getTag().getCompound("BlockEntityTag").getList("Items", 10);
|
||||
|
||||
if(items != null) {
|
||||
for (int a = 0; a <= items.size(); a++) {
|
||||
NBTTagCompound nmsitem = items.getCompound(a);
|
||||
return isDisconnectItem(nmsitem.getCompound("tag"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
private boolean isMovementDisconnectItem(NBTTagCompound tag) {
|
||||
if(tag != null) {
|
||||
NBTTagList attrlist = tag.getList("AttributeModifiers", 10);
|
||||
if(attrlist != null) {
|
||||
HashMap<String, Float> attributes = new HashMap<>();
|
||||
|
||||
for(int a = 0; a <= attrlist.size(); a++) {
|
||||
NBTTagCompound attribute = attrlist.getCompound(a);
|
||||
|
||||
if(attribute.getString("AttributeName").equalsIgnoreCase("generic.movementspeed") && attributes.containsKey(attribute.getString("AttributeName").toLowerCase()) && !Float.isFinite(attribute.getFloat("Amount"))) {
|
||||
fired_countermeasure("isMovementDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
|
||||
attributes.put(attribute.getString("AttributeName").toLowerCase(), attribute.getFloat("Amount"));
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
private boolean isInvalidAttributeName(NBTTagCompound tag) {
|
||||
if(tag != null) {
|
||||
NBTTagList attrlist = tag.getList("AttributeModifiers", 10);
|
||||
|
||||
if(attrlist != null) {
|
||||
for(int a = 0; a <= attrlist.size(); a++) {
|
||||
NBTTagCompound attribute = attrlist.getCompound(a);
|
||||
|
||||
if(attribute != null && attribute.getString("AttributeName").toLowerCase() != "") {
|
||||
if(!Variables.Attributes.liststr.contains(attribute.getString("AttributeName").toLowerCase())) {
|
||||
fired_countermeasure("isInvalidAttributeNameDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isDangerousEgg(ItemStack item) {
|
||||
if (item != null && item.getType().name().equalsIgnoreCase("spawn_egg")) {
|
||||
net.minecraft.server.v1_13_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if (nmsItemStack.hasTag() && VulnerabilityPatcher.main.getConfig().getStringList("BlockedEntityTags").contains(nmsItemStack.getTag().getCompound("EntityTag").getString("id").replaceAll("minecraft:", "")))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,312 @@
|
|||
package me.cooljwb.vulnerabilitypatcher.modifiers;
|
||||
|
||||
import me.cooljwb.vulnerabilitypatcher.Variables;
|
||||
import me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher;
|
||||
import me.cooljwb.vulnerabilitypatcher.patches.Patches;
|
||||
import net.minecraft.server.v1_14_R1.NBTBase;
|
||||
import net.minecraft.server.v1_14_R1.NBTTagCompound;
|
||||
import net.minecraft.server.v1_14_R1.NBTTagList;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.craftbukkit.v1_14_R1.entity.CraftEntity;
|
||||
import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer;
|
||||
import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.BookMeta;
|
||||
import org.bukkit.projectiles.ProjectileSource;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.logging.*;
|
||||
|
||||
public class NBTModifier_1_14 {
|
||||
|
||||
private Logger log = Logger.getLogger("Minecraft");
|
||||
|
||||
/* Misc */
|
||||
public void log(Level level, String message) {
|
||||
log.log(level, String.format("[%s] %s", VulnerabilityPatcher.pluginName, message));
|
||||
}
|
||||
private void fired_countermeasure(String reason) {
|
||||
if (Patches.devmode)
|
||||
log(Level.INFO, String.format("Fired countermeasure in %s reason: %s", getClass().getName(), reason));
|
||||
}
|
||||
|
||||
private NBTTagCompound getItemNBT(ItemStack item) {
|
||||
if(item != null) {
|
||||
net.minecraft.server.v1_14_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
if(nmsItemStack != null)
|
||||
return nmsItemStack.getTag();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
private NBTTagCompound getEntityNBT(Entity entity) {
|
||||
net.minecraft.server.v1_14_R1.Entity nmsEntity = ((CraftEntity)entity).getHandle();
|
||||
NBTTagCompound tag = new NBTTagCompound();
|
||||
nmsEntity.save(tag);
|
||||
return tag;
|
||||
}
|
||||
private void setEntityNBT(Entity entity, NBTTagCompound nbtTagCompound) {
|
||||
net.minecraft.server.v1_14_R1.Entity nmsEntity = ((CraftEntity)entity).getHandle();
|
||||
nmsEntity.f(nbtTagCompound);
|
||||
}
|
||||
public NBTTagList getAttributeList(ItemStack item) {
|
||||
NBTTagCompound itemtag = getItemNBT(item);
|
||||
|
||||
if(item != null && itemtag != null && itemtag.hasKey("AttributeModifiers"))
|
||||
return getItemNBT(item).getList("AttributeModifiers", 10);
|
||||
return null;
|
||||
}
|
||||
String itemToString(ItemStack item) {
|
||||
if(item != null) {
|
||||
net.minecraft.server.v1_14_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack.hasTag())
|
||||
return nmsItemStack.getTag().toString();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
boolean removePlayerdata(String player) {
|
||||
if(Bukkit.getPlayer(player) != null) {
|
||||
((CraftEntity) Bukkit.getPlayer(player)).getHandle().f(new net.minecraft.server.v1_14_R1.NBTTagCompound());
|
||||
return true;
|
||||
}
|
||||
else if(Bukkit.getOfflinePlayer(player) != null) {
|
||||
File file = new File(Bukkit.getServer().getWorldContainer() + "/world/playerdata/" + Bukkit.getOfflinePlayer(player).getUniqueId().toString() + ".dat");
|
||||
return file.delete();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
void resetMeta(Player player, ItemStack item, boolean mainhand) {
|
||||
net.minecraft.server.v1_14_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack.hasTag() && nmsItemStack.getTag().hasKey("pages")) {
|
||||
if (nmsItemStack.getTag().getList("pages", 8).toString().contains("run_command")) {
|
||||
BookMeta meta = (BookMeta) item.getItemMeta();
|
||||
ItemStack book = new ItemStack(Material.WRITTEN_BOOK);
|
||||
|
||||
meta.setPages(meta.getPages());
|
||||
book.setItemMeta(meta);
|
||||
|
||||
if (mainhand)
|
||||
player.getInventory().setItemInMainHand(book);
|
||||
else
|
||||
player.getInventory().setItemInOffHand(book);
|
||||
}
|
||||
}
|
||||
}
|
||||
boolean isPlayer(ProjectileSource source) {
|
||||
return source instanceof CraftPlayer;
|
||||
}
|
||||
double getArrowDamage(Arrow arrow) {
|
||||
return getEntityNBT(arrow).hasKey("damage") ? getEntityNBT(arrow).getDouble("damage") : 0;
|
||||
}
|
||||
void setArrowDamage(Arrow arrow, double amount) {
|
||||
NBTTagCompound tag = getEntityNBT(arrow);
|
||||
if(tag.hasKey("damage")) {
|
||||
tag.setDouble("damage", amount);
|
||||
setEntityNBT(arrow, tag);
|
||||
}
|
||||
}
|
||||
|
||||
boolean isCrashItem(ItemStack item) {
|
||||
if(item != null) {
|
||||
net.minecraft.server.v1_14_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack.getTag() != null) {
|
||||
NBTTagCompound itemtag = nmsItemStack.getTag();
|
||||
|
||||
if(itemtag.toString().contains("translation.test.invalid")) {
|
||||
fired_countermeasure("isCrashItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
boolean containsCrashItem(ItemStack item) {
|
||||
if(item != null) {
|
||||
net.minecraft.server.v1_14_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack.getTag() != null) {
|
||||
NBTTagCompound blockentitytag = nmsItemStack.getTag().getCompound("BlockEntityTag");
|
||||
NBTTagList itemlist = blockentitytag.getList("Items", 10);
|
||||
|
||||
for(int a = 0; a <= itemlist.size(); a++) {
|
||||
NBTTagCompound itemtag = itemlist.getCompound(a).getCompound("tag");
|
||||
|
||||
if(itemtag.toString().contains("translation.test.invalid")) {
|
||||
fired_countermeasure("containsCrashItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isDeathItem(ItemStack item) {
|
||||
net.minecraft.server.v1_14_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack != null && nmsItemStack.hasTag())
|
||||
return isDeathItem(nmsItemStack.getTag());
|
||||
return false;
|
||||
}
|
||||
private boolean isDeathItem(NBTTagCompound item) {
|
||||
if(item != null) {
|
||||
NBTTagList attrlist = item.getList("AttributeModifiers", 10);
|
||||
|
||||
if(attrlist != null) {
|
||||
for(int i = 0; i < attrlist.size(); i++) {
|
||||
NBTTagCompound compound = (NBTTagCompound)attrlist.get(i);
|
||||
if((compound.getString("Name").equalsIgnoreCase("MAX_HEALTH") || compound.getString("AttributeName").equalsIgnoreCase("generic.maxHealth")) && compound.getDouble("Amount") <= 0) {
|
||||
fired_countermeasure("isDeathItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
boolean containsDeathItem(ItemStack item) {
|
||||
if(item != null) {
|
||||
net.minecraft.server.v1_14_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack.getTag() != null) {
|
||||
NBTTagCompound blockentitytag = nmsItemStack.getTag().getCompound("BlockEntityTag");
|
||||
NBTTagList itemlist = blockentitytag.getList("Items", 10);
|
||||
|
||||
for(int a = 0; a <= itemlist.size(); a++) {
|
||||
NBTTagList attrlist = itemlist.getCompound(a).getCompound("tag").getList("AttributeModifiers", 10);
|
||||
|
||||
for(int b = 0; b <= attrlist.size(); b++) {
|
||||
String attribute_name = attrlist.getCompound(b).getString("AttributeName");
|
||||
String name = attrlist.getCompound(b).getString("Name");
|
||||
Double amount = attrlist.getCompound(b).getDouble("Amount");
|
||||
|
||||
if((name.equalsIgnoreCase("MAX_HEALTH") || attribute_name.equalsIgnoreCase("generic.maxHealth")) && amount <= 0) {
|
||||
fired_countermeasure("containsDeathItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isDisconnectItem(ItemStack item) {
|
||||
net.minecraft.server.v1_14_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack != null && nmsItemStack.hasTag())
|
||||
return isDisconnectItem(nmsItemStack.getTag());
|
||||
return false;
|
||||
}
|
||||
private boolean isDisconnectItem(NBTTagCompound item) {
|
||||
if(item != null) {
|
||||
if(item.hasKey("CustomPotionColor") && item.getInt("CustomPotionColor") < 0) {
|
||||
fired_countermeasure("isCustomPotionColorDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
else if((item.getCompound("display").hasKey("color") && item.getCompound("display").getInt("color") < 0)) {
|
||||
fired_countermeasure("isDisplayColorDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
|
||||
else if(item.getCompound("BlockEntityTag").hasKey("Patterns")) {
|
||||
NBTTagList list = item.getCompound("BlockEntityTag").getList("Patterns", 10);
|
||||
for(int x = 0; x <= list.size(); x++) {
|
||||
if(list.get(x).getTypeId() == 10) {
|
||||
if(list.getCompound(x).hasKey("Color") && list.getCompound(x).getInt("Color") < 0)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
for(NBTBase base : item.getCompound("BlockEntityTag").getList("Patterns", 10)) {
|
||||
if(base.asString().contains("Color:-1")) {
|
||||
fired_countermeasure("isDisplayBannedColorDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else if(item.toString().length() > 60000 || isMovementDisconnectItem(item) || isInvalidAttributeName(item)) {
|
||||
fired_countermeasure("isLargeNBTDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
boolean containsDisconnectItem(ItemStack item) {
|
||||
if(item != null) {
|
||||
net.minecraft.server.v1_14_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack != null && nmsItemStack.getTag() != null) {
|
||||
NBTTagList items = nmsItemStack.getTag().getCompound("BlockEntityTag").getList("Items", 10);
|
||||
|
||||
if(items != null) {
|
||||
for (int a = 0; a <= items.size(); a++) {
|
||||
NBTTagCompound nmsitem = items.getCompound(a);
|
||||
return isDisconnectItem(nmsitem.getCompound("tag"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
private boolean isMovementDisconnectItem(NBTTagCompound tag) {
|
||||
if(tag != null) {
|
||||
NBTTagList attrlist = tag.getList("AttributeModifiers", 10);
|
||||
if(attrlist != null) {
|
||||
HashMap<String, Float> attributes = new HashMap<>();
|
||||
|
||||
for(int a = 0; a <= attrlist.size(); a++) {
|
||||
NBTTagCompound attribute = attrlist.getCompound(a);
|
||||
|
||||
if(attribute.getString("AttributeName").equalsIgnoreCase("generic.movementspeed") && attributes.containsKey(attribute.getString("AttributeName").toLowerCase()) && !Float.isFinite(attribute.getFloat("Amount"))) {
|
||||
fired_countermeasure("isMovementDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
|
||||
attributes.put(attribute.getString("AttributeName").toLowerCase(), attribute.getFloat("Amount"));
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
private boolean isInvalidAttributeName(NBTTagCompound tag) {
|
||||
if(tag != null) {
|
||||
NBTTagList attrlist = tag.getList("AttributeModifiers", 10);
|
||||
|
||||
if(attrlist != null) {
|
||||
for(int a = 0; a <= attrlist.size(); a++) {
|
||||
NBTTagCompound attribute = attrlist.getCompound(a);
|
||||
|
||||
if(attribute != null && attribute.getString("AttributeName").toLowerCase() != "") {
|
||||
if(!Variables.Attributes.liststr.contains(attribute.getString("AttributeName").toLowerCase())) {
|
||||
fired_countermeasure("isInvalidAttributeNameDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isDangerousEgg(ItemStack item) {
|
||||
if (item != null && item.getType().name().equalsIgnoreCase("spawn_egg")) {
|
||||
net.minecraft.server.v1_14_R1.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if (nmsItemStack.hasTag() && VulnerabilityPatcher.main.getConfig().getStringList("BlockedEntityTags").contains(nmsItemStack.getTag().getCompound("EntityTag").getString("id").replaceAll("minecraft:", "")))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -34,8 +34,7 @@ import java.util.logging.Logger;
|
|||
|
||||
public class Arrows extends Patches implements Listener {
|
||||
|
||||
private Logger log = Logger.getLogger("Minecraft");
|
||||
private ArrayList<EntityType> blockedEntityTypes = new ArrayList<>(Arrays.asList(EntityType.ARROW, EntityType.SPECTRAL_ARROW, EntityType.TIPPED_ARROW));
|
||||
private ArrayList<EntityType> blockedEntityTypes = new ArrayList<>(Arrays.asList(EntityType.ARROW, EntityType.SPECTRAL_ARROW)); // Tipped arrow?
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onPlayerVelocityEvent(PlayerVelocityEvent event) {
|
||||
|
@ -51,15 +50,16 @@ public class Arrows extends Patches implements Listener {
|
|||
public void onEntitySpawnEvent(EntitySpawnEvent event) {
|
||||
if(event.getEntity().getType() == EntityType.ARROW) {
|
||||
Arrow arrow = (Arrow) event.getEntity();
|
||||
double damage = getArrowDamage(arrow);
|
||||
|
||||
if (arrow.getKnockbackStrength() > 10) {
|
||||
fired_countermeasure("ArrowKnockbackStrenght: " + arrow.getKnockbackStrength());
|
||||
arrow.setKnockbackStrength(10);
|
||||
}
|
||||
|
||||
if(arrow.getDamage() < 0 || arrow.getDamage() > 214748364) {
|
||||
fired_countermeasure("ArrowDamage: " + arrow.getDamage());
|
||||
arrow.setDamage(0);
|
||||
if(damage < 0 || damage > 214748364) {
|
||||
fired_countermeasure("ArrowDamage: " + damage);
|
||||
setArrowDamage(arrow, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -70,15 +70,16 @@ public class Arrows extends Patches implements Listener {
|
|||
public void onProjectileLaunchEvent(ProjectileLaunchEvent event) {
|
||||
if(blockedEntityTypes.contains(event.getEntity().getType())) {
|
||||
Arrow arrow = (Arrow) event.getEntity();
|
||||
double damage = getArrowDamage(arrow);
|
||||
|
||||
if (arrow.getKnockbackStrength() > 10) {
|
||||
fired_countermeasure("ArrowKnockbackStrenght: " + arrow.getKnockbackStrength());
|
||||
arrow.setKnockbackStrength(10);
|
||||
}
|
||||
|
||||
if(arrow.getDamage() < 0 || arrow.getDamage() > 214748364) {
|
||||
fired_countermeasure("ArrowDamage: " + arrow.getDamage());
|
||||
arrow.setDamage(0);
|
||||
if(damage < 0 || damage > 214748364) {
|
||||
fired_countermeasure("ArrowDamage: " + damage);
|
||||
setArrowDamage(arrow, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
package me.cooljwb.vulnerabilitypatcher.patches;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.EntitySpawnEvent;
|
||||
|
||||
public class Blocks extends Patches {
|
||||
|
||||
|
|
|
@ -1,10 +1,5 @@
|
|||
package me.cooljwb.vulnerabilitypatcher.patches;
|
||||
|
||||
import me.cooljwb.vulnerabilitypatcher.SMG;
|
||||
import net.minecraft.server.v1_13_R2.ChatMessageException;
|
||||
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
@ -13,9 +8,7 @@ import org.bukkit.event.block.Action;
|
|||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.inventory.EquipmentSlot;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.BookMeta;
|
||||
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/*
|
||||
|
@ -89,22 +82,5 @@ public class Books extends Patches implements Listener {
|
|||
}
|
||||
}
|
||||
|
||||
public void resetMeta(Player player, ItemStack hand_item, boolean mainhand) {
|
||||
net.minecraft.server.v1_13_R2.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(hand_item);
|
||||
|
||||
if(nmsItemStack.hasTag() && nmsItemStack.getTag().hasKey("pages")) {
|
||||
if (nmsItemStack.getTag().getList("pages", 8).toString().contains("run_command")) {
|
||||
BookMeta meta = (BookMeta) hand_item.getItemMeta();
|
||||
ItemStack book = new ItemStack(Material.WRITTEN_BOOK);
|
||||
|
||||
meta.setPages(meta.getPages());
|
||||
book.setItemMeta(meta);
|
||||
|
||||
if (mainhand)
|
||||
player.getInventory().setItemInMainHand(book);
|
||||
else
|
||||
player.getInventory().setItemInOffHand(book);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,19 +1,14 @@
|
|||
package me.cooljwb.vulnerabilitypatcher.patches;
|
||||
|
||||
import me.cooljwb.vulnerabilitypatcher.SMG;
|
||||
import net.minecraft.server.v1_13_R2.NBTTagCompound;
|
||||
import net.minecraft.server.v1_13_R2.NBTTagList;
|
||||
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.block.Container;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockDispenseEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.EntityDeathEvent;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryType;
|
||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||
|
@ -21,7 +16,6 @@ import org.bukkit.event.player.PlayerInteractEvent;
|
|||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.scheduler.BukkitScheduler;
|
||||
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/*
|
||||
|
@ -159,41 +153,4 @@ public class Crash_Items extends Patches implements Listener {
|
|||
|
||||
debug(event);
|
||||
}
|
||||
|
||||
public boolean isCrashItem(ItemStack item) {
|
||||
if(item != null) {
|
||||
net.minecraft.server.v1_13_R2.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack.getTag() != null) {
|
||||
NBTTagCompound itemtag = nmsItemStack.getTag();
|
||||
|
||||
if(itemtag.toString().contains("translation.test.invalid")) {
|
||||
fired_countermeasure("isCrashItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean containsCrashItem(ItemStack item) {
|
||||
if(item != null) {
|
||||
net.minecraft.server.v1_13_R2.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack.getTag() != null) {
|
||||
NBTTagCompound blockentitytag = nmsItemStack.getTag().getCompound("BlockEntityTag");
|
||||
NBTTagList itemlist = blockentitytag.getList("Items", 10);
|
||||
|
||||
for(int a = 0; a <= itemlist.size(); a++) {
|
||||
NBTTagCompound itemtag = itemlist.getCompound(a).getCompound("tag");
|
||||
|
||||
if(itemtag.toString().contains("translation.test.invalid")) {
|
||||
fired_countermeasure("containsCrashItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,8 @@
|
|||
package me.cooljwb.vulnerabilitypatcher.patches;
|
||||
|
||||
import me.cooljwb.vulnerabilitypatcher.SMG;
|
||||
import net.minecraft.server.v1_13_R2.NBTTagCompound;
|
||||
import net.minecraft.server.v1_13_R2.NBTTagList;
|
||||
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.block.Container;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
@ -19,7 +15,6 @@ import org.bukkit.event.player.PlayerDropItemEvent;
|
|||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.scheduler.BukkitScheduler;
|
||||
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/*
|
||||
|
@ -133,59 +128,4 @@ public class Death_Items extends Patches implements Listener {
|
|||
|
||||
debug(event);
|
||||
}
|
||||
|
||||
/* Check if an item is a death item. */
|
||||
public boolean isDeathItem(ItemStack item) {
|
||||
net.minecraft.server.v1_13_R2.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack != null && nmsItemStack.hasTag())
|
||||
return isDeathItem(nmsItemStack.getTag());
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Check if a NBTTagCompound is a death item. */
|
||||
public boolean isDeathItem(NBTTagCompound item) {
|
||||
if(item != null) {
|
||||
NBTTagList attrlist = item.getList("AttributeModifiers", 10);
|
||||
|
||||
if(attrlist != null) {
|
||||
for(int i = 0; i < attrlist.size(); i++) {
|
||||
NBTTagCompound compound = (NBTTagCompound)attrlist.get(i);
|
||||
if((compound.getString("Name").equalsIgnoreCase("MAX_HEALTH") || compound.getString("AttributeName").equalsIgnoreCase("generic.maxHealth")) && compound.getDouble("Amount") <= 0) {
|
||||
fired_countermeasure("isDeathItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Check if an item such as a chest contains a death item. */
|
||||
public boolean containsDeathItem(ItemStack item) {
|
||||
if(item != null) {
|
||||
net.minecraft.server.v1_13_R2.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack.getTag() != null) {
|
||||
NBTTagCompound blockentitytag = nmsItemStack.getTag().getCompound("BlockEntityTag");
|
||||
NBTTagList itemlist = blockentitytag.getList("Items", 10);
|
||||
|
||||
for(int a = 0; a <= itemlist.size(); a++) {
|
||||
NBTTagList attrlist = itemlist.getCompound(a).getCompound("tag").getList("AttributeModifiers", 10);
|
||||
|
||||
for(int b = 0; b <= attrlist.size(); b++) {
|
||||
String attribute_name = attrlist.getCompound(b).getString("AttributeName");
|
||||
String name = attrlist.getCompound(b).getString("Name");
|
||||
Double amount = attrlist.getCompound(b).getDouble("Amount");
|
||||
|
||||
if((name.equalsIgnoreCase("MAX_HEALTH") || attribute_name.equalsIgnoreCase("generic.maxHealth")) && amount <= 0) {
|
||||
fired_countermeasure("containsDeathItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +1,6 @@
|
|||
package me.cooljwb.vulnerabilitypatcher.patches;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import me.cooljwb.vulnerabilitypatcher.SMG;
|
||||
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
@ -18,6 +11,10 @@ import org.bukkit.event.player.PlayerItemConsumeEvent;
|
|||
import org.bukkit.inventory.meta.PotionMeta;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/*
|
||||
* Copyright 2019 CoolJWB
|
||||
*
|
||||
|
@ -66,7 +63,7 @@ public class Death_Potions extends Patches implements Listener {
|
|||
event.setCancelled(true);
|
||||
|
||||
Player player = null;
|
||||
if(event.getPotion().getShooter() instanceof CraftPlayer) {
|
||||
if(isPlayer(event.getPotion().getShooter())) {
|
||||
player = (Player) event.getEntity().getShooter();
|
||||
msg(player, SMG.ITEM.msg);
|
||||
}
|
||||
|
@ -83,7 +80,7 @@ public class Death_Potions extends Patches implements Listener {
|
|||
event.setCancelled(true);
|
||||
|
||||
Player player = null;
|
||||
if(event.getEntity().getShooter() instanceof CraftPlayer) {
|
||||
if(isPlayer(event.getEntity().getShooter())) {
|
||||
player = (Player) event.getEntity().getShooter();
|
||||
msg(player, SMG.ITEM.msg);
|
||||
}
|
||||
|
|
|
@ -1,32 +1,26 @@
|
|||
package me.cooljwb.vulnerabilitypatcher.patches;
|
||||
|
||||
import me.cooljwb.vulnerabilitypatcher.SMG;
|
||||
import me.cooljwb.vulnerabilitypatcher.Variables;
|
||||
import net.minecraft.server.v1_13_R2.*;
|
||||
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.Container;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.CraftWorld;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.block.CraftBlock;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.entity.CraftPlayer;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemStack;
|
||||
import org.bukkit.block.Jukebox;
|
||||
import org.bukkit.entity.ArmorStand;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.block.BlockDispenseEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.EntitySpawnEvent;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryType;
|
||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.potion.Potion;
|
||||
import org.bukkit.scheduler.BukkitScheduler;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/*
|
||||
|
@ -51,31 +45,8 @@ import java.util.logging.Logger;
|
|||
|
||||
public class Disconnect_Items extends Patches implements Listener {
|
||||
|
||||
private Logger log = Logger.getLogger("Minecraft");
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onPlayerInteractEvent(PlayerInteractEvent event) {
|
||||
if(event.getClickedBlock() != null) {
|
||||
if (event.getClickedBlock().getState() instanceof Container) {
|
||||
Block block = event.getClickedBlock();
|
||||
Container container = (Container) block.getState();
|
||||
|
||||
String invstr = "";
|
||||
for (ItemStack item : container.getInventory().getContents()) {
|
||||
if(isDisconnectItem(item))
|
||||
clearItemMeta(item);
|
||||
invstr = invstr + itemToString(item);
|
||||
}
|
||||
|
||||
if(invstr.length() > 50000) {
|
||||
event.setCancelled(true);
|
||||
clearItemMeta(container.getInventory().getContents());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
debug(event);
|
||||
}
|
||||
// TODO: Possibly fix disconnect items once for all, otherwise add more patches.
|
||||
// TODO: Add /give disconnect items.
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onBlockDispenseEvent(BlockDispenseEvent event) {
|
||||
|
@ -125,9 +96,46 @@ public class Disconnect_Items extends Patches implements Listener {
|
|||
}
|
||||
}
|
||||
|
||||
else if(event.getBlockPlaced().getState() instanceof Jukebox) {
|
||||
Jukebox box = (Jukebox) event.getBlockPlaced().getState();
|
||||
boolean violation = false;
|
||||
|
||||
try {
|
||||
box.getPlaying();
|
||||
} catch(IllegalArgumentException ignored) {
|
||||
event.setCancelled(true);
|
||||
violation = true;
|
||||
}
|
||||
|
||||
if(violation) {
|
||||
Player player = event.getPlayer();
|
||||
msg(player, SMG.ITEM_IN_CONTAINER.msg);
|
||||
notifyViolation(player, "place", event.getBlock().getType() + " with disconnect item in it", event.getPlayer().getLocation());
|
||||
}
|
||||
}
|
||||
|
||||
debug(event);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onEntitySpawnEvent(EntitySpawnEvent event) {
|
||||
if(event.getEntity() instanceof ArmorStand) {
|
||||
ArmorStand armorStand = (ArmorStand) event.getEntity();
|
||||
boolean violation = false;
|
||||
|
||||
try {
|
||||
armorStand.getBoots(); armorStand.getLeggings(); armorStand.getChestplate(); armorStand.getHelmet(); armorStand.getItemInHand();
|
||||
} catch(IllegalArgumentException ignored) {
|
||||
event.setCancelled(true);
|
||||
violation = true;
|
||||
}
|
||||
|
||||
if(violation) {
|
||||
notifyViolation("Unknown", "place", " with a disconnect item", event.getEntity().getLocation());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onInventoryClickEvent(InventoryClickEvent event) {
|
||||
if(isDisconnectItem(event.getCursor()) || containsDisconnectItem(event.getCursor())) {
|
||||
|
@ -159,6 +167,7 @@ public class Disconnect_Items extends Patches implements Listener {
|
|||
ItemStack item = event.getItemDrop().getItemStack();
|
||||
|
||||
if(isDisconnectItem(item) || containsDisconnectItem(item)) {
|
||||
event.getItemDrop().remove();
|
||||
event.setCancelled(true);
|
||||
clearItemMeta(event.getItemDrop().getItemStack());
|
||||
|
||||
|
@ -170,90 +179,27 @@ public class Disconnect_Items extends Patches implements Listener {
|
|||
debug(event);
|
||||
}
|
||||
|
||||
public boolean isDisconnectItem(ItemStack item) {
|
||||
net.minecraft.server.v1_13_R2.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onPlayerInteractEvent(PlayerInteractEvent event) {
|
||||
if(event.getClickedBlock() != null) {
|
||||
if (event.getClickedBlock().getState() instanceof Container) {
|
||||
Block block = event.getClickedBlock();
|
||||
Container container = (Container) block.getState();
|
||||
|
||||
if(nmsItemStack != null && nmsItemStack.hasTag())
|
||||
return isDisconnectItem(nmsItemStack.getTag());
|
||||
return false;
|
||||
}
|
||||
String invstr = "";
|
||||
for (ItemStack item : container.getInventory().getContents()) {
|
||||
if(isDisconnectItem(item))
|
||||
clearItemMeta(item);
|
||||
invstr = invstr + itemToString(item);
|
||||
}
|
||||
|
||||
public boolean isDisconnectItem(NBTTagCompound item) {
|
||||
if(item != null) {
|
||||
if(item.hasKey("CustomPotionColor") && item.getInt("CustomPotionColor") < 0) {
|
||||
fired_countermeasure("isCustomPotionColorDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
|
||||
else if(item.getCompound("display").hasKey("color") && item.getCompound("display").getInt("color") < 0) {
|
||||
fired_countermeasure("isDisplayColorDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
|
||||
else if(item.toString().length() > 60000 || isMovementDisconnectItem(item) || isInvalidAttributeName(item)) {
|
||||
fired_countermeasure("isLargeNBTDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean containsDisconnectItem(ItemStack item) {
|
||||
if(item != null) {
|
||||
net.minecraft.server.v1_13_R2.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack != null && nmsItemStack.getTag() != null) {
|
||||
NBTTagList items = nmsItemStack.getTag().getCompound("BlockEntityTag").getList("Items", 10);
|
||||
|
||||
if(items != null) {
|
||||
for (int a = 0; a <= items.size(); a++) {
|
||||
NBTTagCompound nmsitem = items.getCompound(a);
|
||||
return isDisconnectItem(nmsitem.getCompound("tag"));
|
||||
}
|
||||
if(invstr.length() > 50000) {
|
||||
event.setCancelled(true);
|
||||
clearItemMeta(container.getInventory().getContents());
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isMovementDisconnectItem(NBTTagCompound tag) {
|
||||
if(tag != null) {
|
||||
NBTTagList attrlist = tag.getList("AttributeModifiers", 10);
|
||||
if(attrlist != null) {
|
||||
HashMap<String, Float> attributes = new HashMap<>();
|
||||
|
||||
for(int a = 0; a <= attrlist.size(); a++) {
|
||||
NBTTagCompound attribute = attrlist.getCompound(a);
|
||||
|
||||
if(attribute.getString("AttributeName").equalsIgnoreCase("generic.movementspeed") && attributes.containsKey(attribute.getString("AttributeName").toLowerCase()) && !Float.isFinite(attribute.getFloat("Amount"))) {
|
||||
fired_countermeasure("isMovementDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
|
||||
attributes.put(attribute.getString("AttributeName").toLowerCase(), attribute.getFloat("Amount"));
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isInvalidAttributeName(NBTTagCompound tag) {
|
||||
if(tag != null) {
|
||||
NBTTagList attrlist = tag.getList("AttributeModifiers", 10);
|
||||
|
||||
if(attrlist != null) {
|
||||
for(int a = 0; a <= attrlist.size(); a++) {
|
||||
NBTTagCompound attribute = attrlist.getCompound(a);
|
||||
|
||||
if(attribute != null && attribute.getString("AttributeName").toLowerCase() != "") {
|
||||
if(!Variables.Attributes.liststr.contains(attribute.getString("AttributeName").toLowerCase())) {
|
||||
fired_countermeasure("isInvalidAttributeNameDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
debug(event);
|
||||
}
|
||||
}
|
|
@ -1,8 +1,6 @@
|
|||
package me.cooljwb.vulnerabilitypatcher.patches;
|
||||
|
||||
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
|
||||
import org.bukkit.block.Container;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemStack;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
|
@ -10,11 +8,8 @@ import org.bukkit.event.block.BlockDispenseEvent;
|
|||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import static org.apache.commons.lang3.StringUtils.containsIgnoreCase;
|
||||
|
||||
public class Entity_Tag extends Patches implements Listener {
|
||||
|
||||
private Logger log = Logger.getLogger("Minecraft");
|
||||
|
@ -51,14 +46,4 @@ public class Entity_Tag extends Patches implements Listener {
|
|||
|
||||
debug(event);
|
||||
}
|
||||
|
||||
public boolean isDangerousEgg(ItemStack item) {
|
||||
if (item != null && containsIgnoreCase(item.getType().name(), "spawn_egg")) {
|
||||
net.minecraft.server.v1_13_R2.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if (nmsItemStack.hasTag() && main.getConfig().getStringList("BlockedEntityTags").contains(nmsItemStack.getTag().getCompound("EntityTag").getString("id").replaceAll("minecraft:", "")))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
package me.cooljwb.vulnerabilitypatcher.patches;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerSwapHandItemsEvent;
|
||||
import org.bukkit.scheduler.BukkitScheduler;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class Handswitch extends Patches implements Listener {
|
||||
|
||||
// TODO: Improve this.
|
||||
|
||||
private static HashMap<Player, Integer> switches = new HashMap<>();
|
||||
private static ArrayList<Player> cooldown = new ArrayList<>();
|
||||
int its = 0;
|
||||
|
||||
public void runnable() {
|
||||
BukkitScheduler scheduler = Bukkit.getServer().getScheduler();
|
||||
scheduler.scheduleSyncRepeatingTask(main, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
switches.clear();
|
||||
its++;
|
||||
if(its >= 30) {
|
||||
for(Player player : cooldown)
|
||||
msg(player, ChatColor.RED + "Please do not switch items repeatedly.");
|
||||
|
||||
cooldown = new ArrayList<>();
|
||||
its = 0;
|
||||
}
|
||||
}
|
||||
}, 20L, 0);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void PlayerSwapHandItems(PlayerSwapHandItemsEvent event) {
|
||||
if(cooldown.contains(event.getPlayer())) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
if(!switches.containsKey(event.getPlayer()))
|
||||
switches.put(event.getPlayer(), 1);
|
||||
else {
|
||||
int playerSwitches = switches.get(event.getPlayer());
|
||||
if(playerSwitches > 3) {
|
||||
event.setCancelled(true);
|
||||
cooldown.add(event.getPlayer());
|
||||
}
|
||||
|
||||
else
|
||||
switches.put(event.getPlayer(), playerSwitches + 1);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -25,7 +25,9 @@ public class Item_Frames extends Patches implements Listener {
|
|||
|
||||
@EventHandler
|
||||
public void onEntitySpawn(EntitySpawnEvent event) {
|
||||
if(!entities.contains(event.getEntity()))
|
||||
if(entities.contains(event.getEntity())) {
|
||||
event.setCancelled(true); // Cancels any item frame that hasn't been placed.
|
||||
fired_countermeasure("ItemFrameEntity");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,33 +1,24 @@
|
|||
package me.cooljwb.vulnerabilitypatcher.patches;
|
||||
|
||||
import me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher;
|
||||
import me.cooljwb.vulnerabilitypatcher.SMG;
|
||||
import me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher;
|
||||
import me.cooljwb.vulnerabilitypatcher.modifiers.NBTModifier;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import net.md_5.bungee.api.chat.*;
|
||||
import net.minecraft.server.v1_13_R2.AttributeModifier;
|
||||
import net.minecraft.server.v1_13_R2.ChatMessageException;
|
||||
import net.minecraft.server.v1_13_R2.NBTTagCompound;
|
||||
import net.minecraft.server.v1_13_R2.NBTTagList;
|
||||
|
||||
//import net.minecraft.server.v1_14_R1.ChatMessageException;
|
||||
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.attribute.Attribute;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.entity.CraftEntity;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.PlayerInventory;
|
||||
import org.bukkit.scheduler.BukkitScheduler;
|
||||
import org.fusesource.jansi.Ansi;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
|
@ -53,7 +44,7 @@ import java.util.logging.Logger;
|
|||
* @author CoolJWB
|
||||
*/
|
||||
|
||||
public class Patches implements Listener {
|
||||
public class Patches extends NBTModifier implements Listener {
|
||||
|
||||
// TODO: Add violation runnable that checks if it should send a violation each second for players that tries to use exploits.
|
||||
|
||||
|
@ -74,16 +65,16 @@ public class Patches implements Listener {
|
|||
|
||||
public Patches() {}
|
||||
public Patches(VulnerabilityPatcher main) {
|
||||
this.main = main;
|
||||
Patches.main = main;
|
||||
listeners = main.getConfig().getStringList("Patches");
|
||||
runnable();
|
||||
}
|
||||
|
||||
public void initialize() {
|
||||
this.pluginName = main.getName();
|
||||
this.pluginVersion = main.getDescription().getVersion();
|
||||
this.notify = main.getConfig().getBoolean("Notify.Enabled");
|
||||
this.devmode = main.getConfig().getBoolean("DevMode");
|
||||
pluginName = main.getName();
|
||||
pluginVersion = main.getDescription().getVersion();
|
||||
notify = main.getConfig().getBoolean("Notify.Enabled");
|
||||
devmode = main.getConfig().getBoolean("DevMode");
|
||||
this.mode = mode(main.getConfig().getString("SecurityMode"));
|
||||
|
||||
this.death_items = main.death_items;
|
||||
|
@ -97,14 +88,14 @@ public class Patches implements Listener {
|
|||
@Override
|
||||
public void run() {
|
||||
for(Player player : Bukkit.getOnlinePlayers()) {
|
||||
if(player.getLocation().getY() <= -29999999)
|
||||
if(player.getLocation().getY() <= -29999999) // Fixes invalid movement disconnection.
|
||||
player.getLocation().setY(-29999999);
|
||||
else if(player.getLocation().getY() >= 29999999)
|
||||
else if(player.getLocation().getY() >= 29999999) // Fixes invalid movement disconnection.
|
||||
player.getLocation().setY(29999999);
|
||||
|
||||
for(ItemStack item : player.getInventory()) {
|
||||
/*if(listeners.contains("DisconnectItems") && itemInVisibleSlot(player.getInventory(), item)) {
|
||||
|
||||
if(listeners.contains("DisconnectItems") && itemInVisibleSlot(player.getInventory(), item)) {
|
||||
NBTTagList item_attributes = getNBTAttributeList(item);
|
||||
|
||||
if(item_attributes != null) {
|
||||
|
@ -124,7 +115,7 @@ public class Patches implements Listener {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
for(String listener : listeners) {
|
||||
switch(listener) {
|
||||
|
@ -160,16 +151,15 @@ public class Patches implements Listener {
|
|||
entity.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} // Remove Spawner Minecarts.
|
||||
}
|
||||
}, 20L, 0); // Made the delay 20 ticks cause it's easier on the server.
|
||||
}
|
||||
|
||||
public void msg(Player player, String msg) {
|
||||
void msg(Player player, String msg) {
|
||||
player.sendMessage(msg);
|
||||
}
|
||||
public void msg(CommandSender sender, String msg) {
|
||||
protected void msg(CommandSender sender, String msg) {
|
||||
sender.sendMessage(msg);
|
||||
}
|
||||
|
||||
|
@ -181,7 +171,7 @@ public class Patches implements Listener {
|
|||
}
|
||||
}
|
||||
}
|
||||
public void notify(BaseComponent msg) {
|
||||
private void notify(BaseComponent msg) {
|
||||
if(notify) {
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
if (player.hasPermission(main.getConfig().getString("Notify.Permission")))
|
||||
|
@ -189,7 +179,7 @@ public class Patches implements Listener {
|
|||
}
|
||||
}
|
||||
}
|
||||
public void notifyViolation(Player player, String violation_form, String violation_name, Location loc) {
|
||||
void notifyViolation(Player player, String violation_form, String violation_name, Location loc) {
|
||||
if(player != null) {
|
||||
TextComponent notification = new TextComponent(String.format(SMG.ITEM_NOTIFY.msg, player.getName(), violation_form, violation_name, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
|
||||
|
||||
|
@ -210,7 +200,7 @@ public class Patches implements Listener {
|
|||
notify(notification);
|
||||
}
|
||||
}
|
||||
public void notifyViolation(String violator, String violation_form, String violation_name, Location loc) {
|
||||
void notifyViolation(String violator, String violation_form, String violation_name, Location loc) {
|
||||
TextComponent notification = new TextComponent(String.format(SMG.ITEM_NOTIFY.msg, violator, violation_form, violation_name, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
|
||||
|
||||
notification.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder(ChatColor.DARK_GRAY + "[" + ChatColor.GOLD + "Teleport" + ChatColor.DARK_GRAY + "]").create()));
|
||||
|
@ -220,21 +210,16 @@ public class Patches implements Listener {
|
|||
notify(notification);
|
||||
}
|
||||
|
||||
public void debug(Event event) {
|
||||
try {
|
||||
if (devmode)
|
||||
log.log(Level.INFO, String.format("[%s] Event in %s: %s", pluginName, getClass().getName(), ReflectionToStringBuilder.toString(event)));
|
||||
} catch(ChatMessageException e) {
|
||||
log.log(Level.INFO, String.format("[%s] Could not debug event in %s.", pluginName, getClass().getName()));
|
||||
}
|
||||
public void log(Level level, String message) {
|
||||
log.log(level, String.format("[%s] %s", VulnerabilityPatcher.pluginName, message));
|
||||
}
|
||||
public void fired_countermeasure(String reason) {
|
||||
try {
|
||||
if (devmode)
|
||||
log.log(Level.INFO, String.format("[%s] Fired countermeasure in %s reason: %s", pluginName, getClass().getName(), reason));
|
||||
} catch(ChatMessageException e) {
|
||||
log.log(Level.INFO, String.format("[%s] Could not debug event in %s.", pluginName, getClass().getName()));
|
||||
}
|
||||
public void debug(Event event) {
|
||||
if (devmode)
|
||||
log(Level.INFO, String.format("Event in %s: %s", getClass().getName(), ReflectionToStringBuilder.toString(event)));
|
||||
}
|
||||
void fired_countermeasure(String reason) {
|
||||
if (devmode)
|
||||
log(Level.INFO, String.format("Fired countermeasure in %s reason: %s", getClass().getName(), reason));
|
||||
}
|
||||
private byte mode(String mode) {
|
||||
switch(mode) {
|
||||
|
@ -249,48 +234,16 @@ public class Patches implements Listener {
|
|||
}
|
||||
}
|
||||
|
||||
public void clearItemMeta(ItemStack item) {
|
||||
void clearItemMeta(ItemStack item) {
|
||||
item.setItemMeta(null);
|
||||
}
|
||||
public void clearItemMeta(ItemStack[] items) {
|
||||
void clearItemMeta(ItemStack[] items) {
|
||||
for(ItemStack item : items) {
|
||||
if(item != null)
|
||||
item.setItemMeta(null);
|
||||
}
|
||||
}
|
||||
|
||||
public NBTTagCompound getNBTItemTag(ItemStack item) {
|
||||
if(item != null) {
|
||||
net.minecraft.server.v1_13_R2.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
if(nmsItemStack != null)
|
||||
return nmsItemStack.getTag();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public NBTTagCompound getEntityNMS(Entity entity) {
|
||||
net.minecraft.server.v1_13_R2.Entity nmsEntity = ((CraftEntity)entity).getHandle();
|
||||
NBTTagCompound tag = new NBTTagCompound();
|
||||
nmsEntity.save(tag);
|
||||
return tag;
|
||||
}
|
||||
public NBTTagList getNBTAttributeList(ItemStack item) {
|
||||
NBTTagCompound itemtag = getNBTItemTag(item);
|
||||
|
||||
if(item != null && itemtag != null && itemtag.hasKey("AttributeModifiers"))
|
||||
return getNBTItemTag(item).getList("AttributeModifiers", 10);
|
||||
return null;
|
||||
}
|
||||
|
||||
public String itemToString(ItemStack item) {
|
||||
if(item != null) {
|
||||
net.minecraft.server.v1_13_R2.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
|
||||
|
||||
if(nmsItemStack.hasTag())
|
||||
return nmsItemStack.getTag().toString();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public boolean itemInVisibleSlot(PlayerInventory inv, ItemStack item) {
|
||||
ItemStack mainhand = inv.getItemInMainHand();
|
||||
ItemStack offhand = inv.getItemInOffHand();
|
||||
|
|
|
@ -56,7 +56,7 @@ public class Rouge_Entity extends Patches implements Listener {
|
|||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEntityKnockback(EntityKnockbackByEntityEvent event) {
|
||||
public void onEntityKnockback(EntityKnockbackByEntityEvent event) { // Add Spigot support?
|
||||
if(event.getKnockbackStrength() > 50) {
|
||||
event.getAcceleration().multiply(50/event.getKnockbackStrength());
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ Patches:
|
|||
- StructureBlocks
|
||||
- Chunks
|
||||
- ItemFrames
|
||||
- Handswitch
|
||||
|
||||
# All entities added below will be blocked to use in a spawn egg.
|
||||
BlockedEntityTags:
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
name: VulnerabilityPatcher
|
||||
version: 0.4
|
||||
version: 0.5
|
||||
main: me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher
|
||||
api-version: 1.13
|
||||
authors: [CoolJWB]
|
||||
description: The brand new v0.4 VulnerabilityPatcher for Paper 1.13.2 servers.
|
||||
description: The brand new v0.4 VulnerabilityPatcher for 1.13.2 and 1.14 servers.
|
||||
commands:
|
||||
vulnerabilitypatcher:
|
||||
aliases: [vp]
|
||||
|
|
Loading…
Reference in a new issue