Commit v0.2.1

Fixed issues with disconnect items.
This commit is contained in:
CoolJWB 2019-02-01 19:00:50 +01:00
parent 755c1b8240
commit 9ab7948625
21 changed files with 396 additions and 319 deletions

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

8
.idea/modules.xml Normal file
View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/VulnerabilityPatcher.iml" filepath="$PROJECT_DIR$/.idea/VulnerabilityPatcher.iml" />
</modules>
</component>
</project>

View file

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="4936b74f-7f02-49b6-ab4a-bce2a5ed4ff7" name="Default Changelist" comment="" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="-10" />
<option name="y" value="-10" />
<option name="width" value="1750" />
<option name="height" value="980" />
</component>
<component name="ProjectView">
<navigator proportions="" version="1">
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="PackagesPane" />
<pane id="Scope" />
<pane id="ProjectPane" />
</panes>
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="4936b74f-7f02-49b6-ab4a-bce2a5ed4ff7" name="Default Changelist" comment="" />
<created>1548667472501</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1548667472501</updated>
</task>
<servers />
</component>
<component name="ToolWindowManager">
<frame x="-7" y="-7" width="1550" height="838" extended-state="6" />
<layout>
<window_info id="Designer" />
<window_info id="UI Designer" />
<window_info id="Favorites" side_tool="true" />
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.24966443" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info anchor="bottom" id="Version Control" />
<window_info anchor="bottom" id="Terminal" />
<window_info anchor="bottom" id="Event Log" side_tool="true" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" />
<window_info anchor="bottom" id="Run" order="2" />
<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 anchor="right" id="Palette" />
<window_info anchor="right" id="Maven" />
<window_info anchor="right" id="Palette&#9;" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
</layout>
</component>
</project>

View file

@ -1,31 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="1f395f0b-1a62-4de7-8311-18be358f8f46" name="Default Changelist" comment=""> <list default="true" id="3d5d2873-4535-445c-81cf-26429875d278" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/bin/main/config.yml" beforeDir="false" afterPath="$PROJECT_DIR$/bin/main/config.yml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/bin/main/config.yml" beforeDir="false" afterPath="$PROJECT_DIR$/bin/main/config.yml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/bin/main/plugin.yml" beforeDir="false" afterPath="$PROJECT_DIR$/bin/main/plugin.yml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/bin/main/plugin.yml" beforeDir="false" afterPath="$PROJECT_DIR$/bin/main/plugin.yml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gradle.properties" beforeDir="false" afterPath="$PROJECT_DIR$/gradle.properties" afterDir="false" /> <change beforePath="$PROJECT_DIR$/gradle.properties" beforeDir="false" afterPath="$PROJECT_DIR$/gradle.properties" 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/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/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/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/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/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/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_Egg.java" beforeDir="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/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_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/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/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/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/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/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/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/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/Player_Knockback.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/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/java/me/cooljwb/vulnerabilitypatcher/patches/Trident_Riptide.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Trident_Riptide.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Trident_Riptide.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Trident_Riptide.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" /> <change beforePath="$PROJECT_DIR$/src/main/resources/plugin.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/plugin.yml" afterDir="false" />
</list> </list>
<ignored path="$PROJECT_DIR$/out/" />
<ignored path="$PROJECT_DIR$/.gradle/" />
<ignored path="$PROJECT_DIR$/build/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -40,52 +35,34 @@
<component name="FileEditorManager"> <component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300" /> <leaf SIDE_TABS_SIZE_LIMIT_KEY="300" />
</component> </component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Enum" />
</list>
</option>
</component>
<component name="Git.Settings"> <component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component> </component>
<component name="IdeDocumentHistory"> <component name="IdeDocumentHistory">
<option name="CHANGED_PATHS"> <option name="CHANGED_PATHS">
<list> <list>
<option value="$PROJECT_DIR$/README.md" /> <option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Entity_Tag.java" />
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/SMG.java" />
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Entity_IDs.java" />
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/commands/CommandGetNBT.java" />
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/ConfigManager.java" />
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/Items.java" />
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Crash_Egg.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/Death_Potions.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/Books.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/Crash_Items.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/Death_Items.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/patches/Follow_Range.java" />
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Player_Knockback.java" />
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Trident_Riptide.java" /> <option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Trident_Riptide.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/Patches.java" />
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Disconnect_Items.java" /> <option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Disconnect_Items.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/patches/Arrows.java" />
<option value="$PROJECT_DIR$/src/main/resources/config.yml" />
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Rouge_Entity.java" />
<option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/VulnerabilityPatcher.java" /> <option value="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/VulnerabilityPatcher.java" />
<option value="$PROJECT_DIR$/src/main/resources/plugin.yml" />
<option value="$PROJECT_DIR$/gradle.properties" /> <option value="$PROJECT_DIR$/gradle.properties" />
<option value="$PROJECT_DIR$/src/main/resources/plugin.yml" />
</list> </list>
</option> </option>
</component> </component>
<component name="ProjectFrameBounds" extendedState="6"> <component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="324" /> <option name="x" value="62" />
<option name="y" value="100" /> <option name="y" value="46" />
<option name="width" value="1440" /> <option name="width" value="1750" />
<option name="height" value="780" /> <option name="height" value="980" />
</component> </component>
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectView"> <component name="ProjectView">
<navigator proportions="" version="1"> <navigator proportions="" version="1">
<foldersAlwaysOnTop value="true" /> <foldersAlwaysOnTop value="true" />
@ -99,48 +76,6 @@
<item name="VulnerabilityPatcher" type="b2602c69:ProjectViewProjectNode" /> <item name="VulnerabilityPatcher" type="b2602c69:ProjectViewProjectNode" />
<item name="VulnerabilityPatcher" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" /> <item name="VulnerabilityPatcher" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
</path> </path>
<path>
<item name="VulnerabilityPatcher" type="b2602c69:ProjectViewProjectNode" />
<item name="VulnerabilityPatcher" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="VulnerabilityPatcher" type="b2602c69:ProjectViewProjectNode" />
<item name="VulnerabilityPatcher" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
</path>
<path>
<item name="VulnerabilityPatcher" type="b2602c69:ProjectViewProjectNode" />
<item name="VulnerabilityPatcher" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="VulnerabilityPatcher" type="b2602c69:ProjectViewProjectNode" />
<item name="VulnerabilityPatcher" 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" />
</path>
<path>
<item name="VulnerabilityPatcher" type="b2602c69:ProjectViewProjectNode" />
<item name="VulnerabilityPatcher" 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="patches" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="VulnerabilityPatcher" type="b2602c69:ProjectViewProjectNode" />
<item name="VulnerabilityPatcher" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="resources" type="462c0819:PsiDirectoryNode" />
</path>
</expand> </expand>
<select /> <select />
</subPane> </subPane>
@ -148,9 +83,6 @@
<pane id="Scope" /> <pane id="Scope" />
</panes> </panes>
</component> </component>
<component name="PropertiesComponent">
<property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1548451724817" />
</component>
<component name="RunDashboard"> <component name="RunDashboard">
<option name="ruleStates"> <option name="ruleStates">
<list> <list>
@ -168,241 +100,174 @@
</component> </component>
<component name="TaskManager"> <component name="TaskManager">
<task active="true" id="Default" summary="Default task"> <task active="true" id="Default" summary="Default task">
<changelist id="1f395f0b-1a62-4de7-8311-18be358f8f46" name="Default Changelist" comment="" /> <changelist id="3d5d2873-4535-445c-81cf-26429875d278" name="Default Changelist" comment="" />
<created>1547829118400</created> <created>1549009858370</created>
<option name="number" value="Default" /> <option name="number" value="Default" />
<option name="presentableId" value="Default" /> <option name="presentableId" value="Default" />
<updated>1547829118400</updated> <updated>1549009858370</updated>
</task> </task>
<servers /> <servers />
</component> </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"> <component name="ToolWindowManager">
<frame x="-8" y="-8" width="1936" height="1056" extended-state="6" /> <frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
<layout> <layout>
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.15724947" /> <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.25746268" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" /> <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info id="Image Layers" order="2" /> <window_info id="Designer" order="2" />
<window_info id="Designer" order="3" /> <window_info id="UI Designer" order="3" />
<window_info id="Capture Tool" order="4" /> <window_info id="Favorites" order="4" side_tool="true" />
<window_info id="UI Designer" order="5" /> <window_info id="Image Layers" order="5" />
<window_info id="Favorites" order="6" side_tool="true" /> <window_info id="Capture Tool" order="6" />
<window_info anchor="bottom" id="Build" />
<window_info anchor="bottom" id="Message" order="0" /> <window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" weight="0.32936078" /> <window_info anchor="bottom" id="Find" order="1" />
<window_info anchor="bottom" id="Run" order="2" /> <window_info anchor="bottom" id="Run" order="2" />
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" /> <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="Cvs" order="4" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" /> <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
<window_info anchor="bottom" id="TODO" order="6" /> <window_info anchor="bottom" id="TODO" order="6" weight="0.32936078" />
<window_info anchor="bottom" id="Terminal" order="7" /> <window_info anchor="bottom" id="Version Control" order="7" />
<window_info anchor="bottom" id="Event Log" order="8" side_tool="true" /> <window_info anchor="bottom" id="Terminal" order="8" />
<window_info anchor="bottom" id="Version Control" order="9" /> <window_info anchor="bottom" id="Event Log" order="9" side_tool="true" />
<window_info anchor="bottom" id="Build" order="10" weight="0.32936078" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" /> <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" /> <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" /> <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
<window_info anchor="right" id="Palette" order="3" /> <window_info anchor="right" id="Palette" order="3" />
<window_info anchor="right" id="Maven" order="4" /> <window_info anchor="right" id="Maven" order="4" />
<window_info anchor="right" id="Gradle" order="5" /> <window_info anchor="right" id="Palette&#9;" order="5" />
<window_info anchor="right" id="Theme Preview" order="6" /> <window_info anchor="right" id="Capture Analysis" order="6" />
<window_info anchor="right" id="Capture Analysis" order="7" /> <window_info anchor="right" id="Gradle" order="7" />
<window_info anchor="right" id="Palette&#9;" order="8" /> <window_info anchor="right" id="Theme Preview" order="8" />
</layout> </layout>
</component> </component>
<component name="editorHistoryManager"> <component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/LICENSE.md">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-663" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gradlew">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-2397" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="187">
<caret line="11" column="76" lean-forward="true" selection-start-line="11" selection-start-column="76" selection-end-line="11" selection-end-column="76" />
</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/SMG.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="561"> <state relative-caret-position="408">
<caret line="33" column="71" lean-forward="true" selection-start-line="33" selection-start-column="71" selection-end-line="33" selection-end-column="71" /> <caret line="24" column="12" selection-start-line="24" selection-start-column="12" selection-end-line="24" selection-end-column="12" />
</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="493">
<caret line="43" column="105" lean-forward="true" selection-start-line="43" selection-start-column="105" selection-end-line="43" selection-end-column="105" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/ConfigManager.java" />
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/Items.java" />
<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="130">
<caret line="30" column="13" selection-start-line="30" selection-start-column="13" selection-end-line="30" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/libs/spigot-1.13.2.jar!/net/minecraft/server/v1_13_R2/EntityArrow.class">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="306">
<caret line="307" column="10" lean-forward="true" selection-start-line="307" selection-start-column="10" selection-end-line="307" selection-end-column="10" />
</state>
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/libs/spigot-1.13.2.jar!/net/minecraft/server/v1_13_R2/GeneratorAccess.class">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="102">
<caret line="10" column="17" selection-start-line="10" selection-start-column="17" selection-end-line="10" selection-end-column="17" />
</state>
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/libs/spigot-1.13.2.jar!/net/minecraft/server/v1_13_R2/Block.class">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-187">
<caret line="25" column="13" selection-start-line="25" selection-start-column="13" selection-end-line="25" selection-end-column="13" />
</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="476">
<caret line="62" column="57" selection-start-line="62" selection-start-column="57" selection-end-line="62" selection-end-column="57" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Crash_Egg.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="286">
<caret line="47" column="41" lean-forward="true" selection-start-line="47" selection-start-column="41" selection-end-line="47" selection-end-column="41" />
</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="2329">
<caret line="159" column="57" selection-start-line="159" selection-start-column="57" selection-end-line="159" selection-end-column="57" />
</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="-357">
<caret line="107" column="19" lean-forward="true" selection-start-line="107" selection-start-column="19" selection-end-line="107" selection-end-column="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="17">
<caret line="59" column="57" selection-start-line="59" selection-start-column="57" selection-end-line="59" selection-end-column="57" />
</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="34">
<caret line="2" column="7" selection-start-line="2" selection-start-column="7" selection-end-line="2" selection-end-column="7" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Arrows.java"> <entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Arrows.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="116"> <state relative-caret-position="722">
<caret line="35" selection-start-line="35" selection-end-line="35" /> <caret line="73" column="21" selection-start-line="73" selection-start-column="21" selection-end-line="73" selection-end-column="21" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/main/resources/config.yml"> <entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Books.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="170"> <state relative-caret-position="-43">
<caret line="10" column="10" selection-start-line="10" selection-start-column="10" selection-end-line="10" selection-end-column="10" /> <caret line="62" column="21" selection-start-line="62" selection-start-column="21" selection-end-line="62" selection-end-column="21" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Patches.java"> <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="147">
<caret line="159" column="21" selection-start-line="159" selection-start-column="21" selection-end-line="159" selection-end-column="21" />
</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="537">
<caret line="93" column="21" selection-start-line="93" selection-start-column="21" selection-end-line="93" selection-end-column="21" />
</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"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="680"> <state relative-caret-position="680">
<caret line="104" column="44" selection-start-line="104" selection-start-column="44" selection-end-line="104" selection-end-column="44" /> <caret line="48" column="21" selection-start-line="48" selection-start-column="8" selection-end-line="48" selection-end-column="21" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Rouge_Entity.java"> <entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Rouge_Entity.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="368"> <state relative-caret-position="283">
<caret line="40" lean-forward="true" selection-start-line="40" selection-end-line="40" /> <caret line="35" column="13" selection-start-line="35" selection-start-column="13" selection-end-line="35" selection-end-column="13" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Trident_Riptide.java"> <entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Trident_Riptide.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="195"> <state relative-caret-position="722">
<caret line="39" column="66" selection-start-line="39" selection-start-column="66" selection-end-line="39" selection-end-column="66" /> <caret line="72" column="21" selection-start-line="72" selection-start-column="21" selection-end-line="72" selection-end-column="21" />
</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="640">
<caret line="51" column="21" selection-start-line="51" selection-start-column="21" selection-end-line="51" selection-end-column="21" />
</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="1357">
<caret line="126" column="21" selection-start-line="126" selection-start-column="21" selection-end-line="126" 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="782">
<caret line="110" column="64" selection-start-line="110" selection-start-column="64" selection-end-line="110" selection-end-column="64" />
<folding>
<element signature="e#6590#6591#0" expanded="true" />
<element signature="e#6686#6687#0" expanded="true" />
<element signature="e#9970#9971#0" expanded="true" />
</folding>
</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="78">
<caret line="24" column="45" lean-forward="true" selection-start-line="24" selection-start-column="45" selection-end-line="24" selection-end-column="45" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Disconnect_Items.java"> <entry file="file://$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Disconnect_Items.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2170"> <state relative-caret-position="-1502">
<caret line="164" column="32" selection-start-line="164" selection-start-column="32" selection-end-line="164" selection-end-column="32" /> <caret line="73" column="13" lean-forward="true" selection-start-line="73" selection-start-column="13" selection-end-line="73" selection-end-column="13" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/build.gradle"> <entry file="file://$PROJECT_DIR$/build.gradle">
<provider selected="true" editor-type-id="text-editor" /> <provider selected="true" editor-type-id="text-editor" />
</entry> </entry>
<entry file="file://$PROJECT_DIR$/gradlew">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/gradle.properties"> <entry file="file://$PROJECT_DIR$/gradle.properties">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="17"> <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="20" selection-start-line="1" selection-start-column="20" selection-end-line="1" selection-end-column="20" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/src/main/resources/plugin.yml"> <entry file="file://$PROJECT_DIR$/src/main/resources/plugin.yml">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="17"> <state relative-caret-position="17">
<caret line="1" column="12" selection-start-line="1" selection-start-column="12" selection-end-line="1" selection-end-column="12" /> <caret line="1" column="14" selection-start-line="1" selection-start-column="14" selection-end-line="1" selection-end-column="14" />
</state> </state>
</provider> </provider>
</entry> </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="272">
<caret line="29" column="5" lean-forward="true" selection-start-line="29" selection-start-column="5" selection-end-line="29" selection-end-column="5" />
</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="586">
<caret line="125" selection-start-line="125" selection-end-line="125" />
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>
<state key="ProjectJDKs.UI">
<settings>
<last-edited>1.8</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
</states>
</component> </component>
</project> </project>

View file

@ -4,8 +4,7 @@ VulnerabilityPatcher is a light weight Spigot plugin that runs on 1.13.2 servers
Its task is to prevent bugs in Spigot to cause issues for both the server and the players. Its task is to prevent bugs in Spigot to cause issues for both the server and the players.
**Patches:** **Patches:**
It currently prevents 4 server crash bugs, 2 client crash bugs, 2 disconnect bugs, It currently prevents 15+ vulnerabilities from being executed.
2 bugs that kills creative users and 1 that causes commands to run when clicking in books.
**Planned:** **Planned:**
- More security patches. - More security patches.

View file

@ -1,6 +1,6 @@
# VulnerabilityPatcher by CoolJWB. # VulnerabilityPatcher by CoolJWB.
# Patches: DeathPotions, DeathItems, CrashItems, Books, RougeEntity, Knockback, Riptide, FollowRange, DisconnectItems, CrashEgg, EntityTag. # Patches: DeathPotions, DeathItems, CrashItems, Books, RougeEntity, Arrows, Riptide, FollowRange, DisconnectItems, EntityTag.
# All patches added in the list below will be activated on server startup. # All patches added in the list below will be activated on server startup.
Patches: Patches:
- DeathPotions - DeathPotions
@ -8,11 +8,10 @@ Patches:
- CrashItems - CrashItems
- Books - Books
- RougeEntity - RougeEntity
- Knockback - Arrows
- Riptide - Riptide
- FollowRange - FollowRange
- DisconnectItems - DisconnectItems
- CrashEgg
- EntityTag - EntityTag
# All entities added below will be blocked to use in a spawn egg. # All entities added below will be blocked to use in a spawn egg.

View file

@ -1,5 +1,5 @@
name: VulnerabilityPatcher name: VulnerabilityPatcher
version: 0.1.2 version: 0.2
main: me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher main: me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher
api-version: 1.13 api-version: 1.13
authors: [CoolJWB] authors: [CoolJWB]

View file

@ -1,2 +1,2 @@
pluginGroup=me.CoolJWB.VulnerabilityPatcher pluginGroup=me.CoolJWB.VulnerabilityPatcher
pluginVersion=v0.2 pluginVersion=v0.2.1

View file

@ -32,6 +32,7 @@ public enum SMG {
"&8 - &7/getnbt &aPrint the item in hands NBT."), "&8 - &7/getnbt &aPrint the item in hands NBT."),
ITEM(SMG.VULNERABILITYPATCHER.msg + "&cThis item is not allowed."), ITEM(SMG.VULNERABILITYPATCHER.msg + "&cThis item is not allowed."),
ITEMS(SMG.VULNERABILITYPATCHER.msg + "&cAn item in your inventory has been cleared for being potentially dangerous."),
ITEM_IN_CONTAINER(SMG.VULNERABILITYPATCHER.msg + "&cAn item in this container is not allowed."), ITEM_IN_CONTAINER(SMG.VULNERABILITYPATCHER.msg + "&cAn item in this container is not allowed."),
ITEM_NOTIFY(SMG.VULNERABILITYPATCHER.msg + "&c%s tried to %s a %s at x:%s y:%s z:%s"), ITEM_NOTIFY(SMG.VULNERABILITYPATCHER.msg + "&c%s tried to %s a %s at x:%s y:%s z:%s"),

View file

@ -38,6 +38,10 @@ import java.util.logging.Logger;
public final class VulnerabilityPatcher extends JavaPlugin { public final class VulnerabilityPatcher extends JavaPlugin {
/* /*
* TODO: Fix that disconnect item shulkers return null in dispensers.
* TODO: Issues with potions?
* TODO: Fix command signs.
* TODO: Fix ReflectionToStringBuilder parse error in shulker.
* Patches: Books with commands, Invalid translations (crashes both client and server), Death Items, Death Potions, Rouge Entities, Arrow knockback, Trident speed, * Patches: Books with commands, Invalid translations (crashes both client and server), Death Items, Death Potions, Rouge Entities, Arrow knockback, Trident speed,
* Large follow range, Disconnect Items, Crash Eggs, Knowledge Books, Negative Damage Arrows, much more. * Large follow range, Disconnect Items, Crash Eggs, Knowledge Books, Negative Damage Arrows, much more.
*/ */
@ -121,7 +125,28 @@ public final class VulnerabilityPatcher extends JavaPlugin {
String confstr = FileUtils.readFileToString(conf); String confstr = FileUtils.readFileToString(conf);
if(confstr.contains("ConfVersion")) { if(confstr.contains("ConfVersion")) {
// Foundation of automatic update system. // Check if this prints the real config version.
//switch(main.getConfig().getInt("ConfVersion")) { // Switch the versions, and try to update all versions forward.
// This won't be needed yet, since all versions before this will trigger the config.yml reset.
// This is now generating ConfVersion 0. Next version will need to update from ConfVersion 0 to 1.
/*
case 0:
if(confstr.contains("CrashSigns"))
confstr = confstr.replaceAll("CrashSigns", "CrashItems");
if(!confstr.contains("EntityTag"))
// Does this really work if you have changed the config.yml so it has no spacing/new lines or?
if(!confstr.contains("BlockedEntityTags")) {
confstr = new StringBuilder(confstr).insert((confstr.indexOf("Commands") - 2), "\n# All entity tags that are added here are blocked to use in a monster spawn egg.\n" +
"BlockedEntityTags:\n" +
" - lightning_bolt\n" +
" - falling_block\n").toString();
}
*/
//}
//FileUtils.write(conf, confstr);
} }
else { else {

View file

@ -41,7 +41,7 @@ public class Arrows extends Patches implements Listener {
if(event.getVelocity().getX() > 10 || event.getVelocity().getY() > 10 || event.getVelocity().getZ() > 10) if(event.getVelocity().getX() > 10 || event.getVelocity().getY() > 10 || event.getVelocity().getZ() > 10)
event.setCancelled(true); event.setCancelled(true);
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
@EventHandler @EventHandler
@ -56,7 +56,7 @@ public class Arrows extends Patches implements Listener {
arrow.setDamage(0); arrow.setDamage(0);
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
@ -71,6 +71,6 @@ public class Arrows extends Patches implements Listener {
arrow.setDamage(0); arrow.setDamage(0);
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
} }

View file

@ -60,7 +60,7 @@ public class Books extends Patches implements Listener {
} }
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
public void writtenBook(Player player, EquipmentSlot hand) { public void writtenBook(Player player, EquipmentSlot hand) {

View file

@ -80,7 +80,7 @@ public class Crash_Items extends Patches implements Listener {
notifyViolation(event.getBlock().getType().toString(), "drop", event.getItem().getType() + " with crash item in it", event.getBlock().getLocation()); notifyViolation(event.getBlock().getType().toString(), "drop", event.getItem().getType() + " with crash item in it", event.getBlock().getLocation());
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
@ -96,7 +96,7 @@ public class Crash_Items extends Patches implements Listener {
notifyViolation(player, "interact with", "crash item", player.getLocation()); notifyViolation(player, "interact with", "crash item", player.getLocation());
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
@ -115,7 +115,7 @@ public class Crash_Items extends Patches implements Listener {
} }
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
@ -141,7 +141,7 @@ public class Crash_Items extends Patches implements Listener {
}, 0L); }, 0L);
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
@ -157,7 +157,7 @@ public class Crash_Items extends Patches implements Listener {
notifyViolation(player, "drop", "crash item", player.getLocation()); notifyViolation(player, "drop", "crash item", player.getLocation());
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
public static boolean isCrashItem(ItemStack item) { public static boolean isCrashItem(ItemStack item) {

View file

@ -62,7 +62,7 @@ public class Death_Items extends Patches implements Listener {
notifyViolation("Dispenser", "place", event.getItem().getType() + " with death item in it", event.getBlock().getLocation()); notifyViolation("Dispenser", "place", event.getItem().getType() + " with death item in it", event.getBlock().getLocation());
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
@ -82,7 +82,7 @@ public class Death_Items extends Patches implements Listener {
} }
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
@ -108,7 +108,7 @@ public class Death_Items extends Patches implements Listener {
}, 0L); }, 0L);
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
@ -124,22 +124,26 @@ public class Death_Items extends Patches implements Listener {
notifyViolation(player, "drop", "death item", player.getLocation()); notifyViolation(player, "drop", "death item", player.getLocation());
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
public static boolean isDeathItem(ItemStack item) { public static 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;
}
public static boolean isDeathItem(NBTTagCompound item) {
if(item != null) { if(item != null) {
net.minecraft.server.v1_13_R2.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item); NBTTagList attrlist = item.getList("AttributeModifiers", 10);
if(nmsItemStack.getTag() != null) { if(attrlist != null) {
NBTTagList attrlist = nmsItemStack.getTag().getList("AttributeModifiers", 10); for(int i = 0; i < attrlist.size(); i++) {
NBTTagCompound compound = (NBTTagCompound)attrlist.get(i);
if(attrlist != null) { if((compound.getString("Name").equalsIgnoreCase("MAX_HEALTH") || compound.getString("AttributeName").equalsIgnoreCase("generic.maxHealth")) && compound.getDouble("Amount") <= 0)
for(int i = 0; i < attrlist.size(); i++) { return true;
NBTTagCompound compound = (NBTTagCompound)attrlist.get(i);
if((compound.getString("Name").equalsIgnoreCase("MAX_HEALTH") || compound.getString("AttributeName").equalsIgnoreCase("generic.maxHealth")) && compound.getDouble("Amount") <= 0)
return true;
}
} }
} }
} }

View file

@ -57,7 +57,7 @@ public class Death_Potions extends Patches implements Listener {
} }
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
@ -74,7 +74,7 @@ public class Death_Potions extends Patches implements Listener {
notifyViolation(player, "splash", "death potion", player.getLocation()); notifyViolation(player, "splash", "death potion", player.getLocation());
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
@ -91,7 +91,7 @@ public class Death_Potions extends Patches implements Listener {
notifyViolation(player, "splash", "death potion", player.getLocation()); notifyViolation(player, "splash", "death potion", player.getLocation());
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
public static boolean isDeathPotion(List<PotionEffect> effects) { public static boolean isDeathPotion(List<PotionEffect> effects) {

View file

@ -62,6 +62,8 @@ public class Disconnect_Items extends Patches implements Listener {
String invstr = ""; String invstr = "";
for (ItemStack item : container.getInventory().getContents()) { for (ItemStack item : container.getInventory().getContents()) {
if(isDisconnectItem(item))
clearItemMeta(item);
invstr = invstr + itemToString(item); invstr = invstr + itemToString(item);
} }
@ -72,26 +74,33 @@ public class Disconnect_Items extends Patches implements Listener {
} }
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
public void onBlockDispenseEvent(BlockDispenseEvent event) { public void onBlockDispenseEvent(BlockDispenseEvent event) {
if(containsDisconnectItem(event.getItem())) { ItemStack item = event.getItem();
if(isDisconnectItem(item)) {
event.setCancelled(true);
clearItemMeta(item);
}
if(containsDisconnectItem(item)) {
event.setCancelled(true); event.setCancelled(true);
Container container = (Container) event.getBlock().getState(); Container container = (Container) event.getBlock().getState();
for(int c = 0; c < container.getInventory().getSize(); c++) { for(int c = 0; c < container.getInventory().getSize(); c++) {
if(container.getInventory().getItem(c) != null) { if(container.getInventory().getItem(c) != null) {
if (container.getInventory().getItem(c).isSimilar(event.getItem())) if (container.getInventory().getItem(c).isSimilar(event.getItem()))
container.getInventory().getItem(c).setItemMeta(null); clearItemMeta(container.getInventory().getItem(c));
} }
} }
notifyViolation("Dispenser", "place", event.getItem().getType() + " with disconnect item in it", event.getBlock().getLocation()); notifyViolation("Dispenser", "place", event.getItem().getType() + " with disconnect item in it", event.getBlock().getLocation());
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
@ -111,7 +120,7 @@ public class Disconnect_Items extends Patches implements Listener {
} }
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
@ -137,7 +146,7 @@ public class Disconnect_Items extends Patches implements Listener {
}, 0L); }, 0L);
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
@ -153,17 +162,25 @@ public class Disconnect_Items extends Patches implements Listener {
notifyViolation(player, "drop", "disconnect item", player.getLocation()); notifyViolation(player, "drop", "disconnect item", player.getLocation());
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
public boolean isDisconnectItem(ItemStack item) { public boolean isDisconnectItem(ItemStack item) {
if(item != null) { net.minecraft.server.v1_13_R2.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
net.minecraft.server.v1_13_R2.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
if(nmsItemStack != null && nmsItemStack.getTag() != null) { if(nmsItemStack != null && nmsItemStack.hasTag())
if((nmsItemStack.getTag().getInt("CustomPotionColor") < 0) || (nmsItemStack.getTag().getCompound("display").getInt("color") < 0) || (nmsItemStack.getTag().toString().length() > 50000) || isMovementDisconnectItem(nmsItemStack) || isInvalidAttributeName(nmsItemStack)) return isDisconnectItem(nmsItemStack.getTag());
return true; return false;
} }
public boolean isDisconnectItem(NBTTagCompound item) {
if(item != null) {
if(item.hasKey("CustomPotionColor") && item.getInt("CustomPotionColor") <= 0)
return true;
else if(item.getCompound("display").hasKey("color") && item.getCompound("display").getInt("color") <= 0)
return true;
else if(item.toString().length() > 50000 || isMovementDisconnectItem(item) || isInvalidAttributeName(item))
return true;
} }
return false; return false;
} }
@ -177,8 +194,8 @@ public class Disconnect_Items extends Patches implements Listener {
if(items != null) { if(items != null) {
for (int a = 0; a <= items.size(); a++) { for (int a = 0; a <= items.size(); a++) {
if((nmsItemStack.getTag().getInt("CustomPotionColor") < 0) || (nmsItemStack.getTag().getCompound("display").getInt("color") < 0) || (nmsItemStack.getTag().toString().length() > 50000) || isMovementDisconnectItem(nmsItemStack) || isInvalidAttributeName(nmsItemStack)) NBTTagCompound nmsitem = items.getCompound(a);
return true; return isDisconnectItem(nmsitem.getCompound("tag"));
} }
} }
} }
@ -186,9 +203,9 @@ public class Disconnect_Items extends Patches implements Listener {
return false; return false;
} }
public boolean isMovementDisconnectItem(net.minecraft.server.v1_13_R2.ItemStack nmsItemStack) { public boolean isMovementDisconnectItem(NBTTagCompound tag) {
if(nmsItemStack != null) { if(tag != null) {
NBTTagList attrlist = nmsItemStack.getTag().getList("AttributeModifiers", 10); NBTTagList attrlist = tag.getList("AttributeModifiers", 10);
if(attrlist != null) { if(attrlist != null) {
HashMap<String, Float> attributes = new HashMap<>(); HashMap<String, Float> attributes = new HashMap<>();
@ -204,13 +221,15 @@ public class Disconnect_Items extends Patches implements Listener {
} }
return false; return false;
} }
public boolean isInvalidAttributeName(NBTTagCompound tag) {
if(tag != null) {
NBTTagList attrlist = tag.getList("AttributeModifiers", 10);
public boolean isInvalidAttributeName(net.minecraft.server.v1_13_R2.ItemStack nmsItemStack) {
if(nmsItemStack != null) {
NBTTagList attrlist = nmsItemStack.getTag().getList("AttributeModifiers", 10);
if(attrlist != null) { if(attrlist != null) {
for(int a = 0; a <= attrlist.size(); a++) { for(int a = 0; a <= attrlist.size(); a++) {
NBTTagCompound attribute = attrlist.getCompound(a); NBTTagCompound attribute = attrlist.getCompound(a);
if(attribute != null && attribute.getString("AttributeName").toLowerCase() != "") { if(attribute != null && attribute.getString("AttributeName").toLowerCase() != "") {
if(!Variables.Attributes.liststr.contains(attribute.getString("AttributeName").toLowerCase())) if(!Variables.Attributes.liststr.contains(attribute.getString("AttributeName").toLowerCase()))
return true; return true;

View file

@ -26,7 +26,7 @@ public class Entity_Tag extends Patches implements Listener {
if(isDangerousEgg(item)) if(isDangerousEgg(item))
clearItemMeta(event.getItem()); clearItemMeta(event.getItem());
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
@ -49,7 +49,7 @@ public class Entity_Tag extends Patches implements Listener {
} }
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
public boolean isDangerousEgg(ItemStack item) { public boolean isDangerousEgg(ItemStack item) {

View file

@ -46,6 +46,6 @@ public class Follow_Range extends Patches implements Listener {
} }
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
} }

View file

@ -4,20 +4,29 @@ import me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher;
import me.cooljwb.vulnerabilitypatcher.SMG; import me.cooljwb.vulnerabilitypatcher.SMG;
import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.*; 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.NBTTagCompound;
import net.minecraft.server.v1_13_R2.NBTTagList;
import org.apache.commons.lang.builder.ReflectionToStringBuilder; import org.apache.commons.lang.builder.ReflectionToStringBuilder;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.attribute.Attribute;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.craftbukkit.v1_13_R2.entity.CraftEntity; import org.bukkit.craftbukkit.v1_13_R2.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemStack; import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemStack;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.scheduler.BukkitScheduler; import org.bukkit.scheduler.BukkitScheduler;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -55,6 +64,7 @@ public class Patches implements Listener {
private Rouge_Entity rouge_entity; private Rouge_Entity rouge_entity;
private Logger log = Logger.getLogger("Minecraft"); private Logger log = Logger.getLogger("Minecraft");
private HashMap<String, Float> active_attributes = new HashMap<>();
public Patches() {} public Patches() {}
public Patches(VulnerabilityPatcher main) { public Patches(VulnerabilityPatcher main) {
@ -81,31 +91,55 @@ public class Patches implements Listener {
public void run() { public void run() {
for(Player player : Bukkit.getOnlinePlayers()) { for(Player player : Bukkit.getOnlinePlayers()) {
for(ItemStack item : player.getInventory()) { for(ItemStack item : player.getInventory()) {
if(listeners.contains("DisconnectItems") && itemInVisibleSlot(player.getInventory(), item)) {
NBTTagList item_attributes = getNBTAttributeList(item);
if(item_attributes != null) {
for(int a = 0; a <= item_attributes.size(); a++) {
NBTTagCompound attribute = item_attributes.getCompound(a);
if(attribute != null && !attribute.isEmpty()) {
String attr_name = attribute.getString("AttributeName").toLowerCase();
float attr_amount = attribute.getFloat("Amount");
if((active_attributes.containsKey("generic.movementspeed") && attr_name.equalsIgnoreCase("generic.movementspeed")) && (Float.isFinite(active_attributes.get("generic.movementspeed")) || Float.isInfinite(active_attributes.get("generic.movementspeed")) || active_attributes.get("generic.movementspeed") == Float.NEGATIVE_INFINITY) && (Float.isFinite(attr_amount) || Float.isInfinite(attr_amount) || attr_amount == Float.NEGATIVE_INFINITY)) {
msg(player, SMG.ITEMS.msg);
clearItemMeta(item);
}
active_attributes.put(attr_name, attr_amount);
}
}
}
}
for(String listener : listeners) { for(String listener : listeners) {
switch(listener) { switch(listener) {
case "DeathItems": case "DeathItems":
if(death_items.isDeathItem(item) || death_items.containsDeathItem(item)) { if(death_items.isDeathItem(item) || death_items.containsDeathItem(item)) {
clearItemMeta(item); clearItemMeta(item);
notifyViolation(player, "acquire", "death item", player.getLocation()); notifyViolation(player, "acquire", "death item", player.getLocation());
msg(player, SMG.ITEM.msg); msg(player, SMG.ITEMS.msg);
} } break;
case "DisconnectItems": case "DisconnectItems":
if(disconnect_items.isDisconnectItem(item) || disconnect_items.containsDisconnectItem(item)) { if(disconnect_items.isDisconnectItem(item) || disconnect_items.containsDisconnectItem(item)) {
clearItemMeta(item); clearItemMeta(item);
notifyViolation(player, "acquire", "disconnect item", player.getLocation()); notifyViolation(player, "acquire", "disconnect item", player.getLocation());
msg(player, SMG.ITEM.msg); msg(player, SMG.ITEMS.msg);
} break; } break;
case "CrashItems": case "CrashItems":
if(crash_items.isCrashItem(item) || crash_items.containsCrashItem(item)) { if(crash_items.isCrashItem(item) || crash_items.containsCrashItem(item)) {
clearItemMeta(item); clearItemMeta(item);
notifyViolation(player.getName(), "acquire", "crash item", player.getLocation()); notifyViolation(player.getName(), "acquire", "crash item", player.getLocation());
msg(player, SMG.ITEM.msg); msg(player, SMG.ITEMS.msg);
} break; } break;
} }
} }
} }
active_attributes.clear();
} }
} }
}, 0L, 0); }, 0L, 0);
@ -170,9 +204,13 @@ public class Patches implements Listener {
notify(notification); notify(notification);
} }
public void debug(String event) { public void debug(Event event) {
if(devmode) try {
log.log(Level.INFO, String.format("[%s] Event in %s: %s", pluginName, getClass().getName(), event)); 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 clearItemMeta(ItemStack item) { public void clearItemMeta(ItemStack item) {
@ -186,6 +224,30 @@ public class Patches implements Listener {
} }
} }
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) { public String itemToString(ItemStack item) {
if(item != null) { if(item != null) {
net.minecraft.server.v1_13_R2.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item); net.minecraft.server.v1_13_R2.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
@ -195,11 +257,22 @@ public class Patches implements Listener {
} }
return ""; return "";
} }
public boolean itemInVisibleSlot(PlayerInventory inv, ItemStack item) {
ItemStack mainhand = inv.getItemInMainHand();
ItemStack offhand = inv.getItemInOffHand();
public NBTTagCompound getEntityNMS(Entity entity) { if(item != null && inv != null && mainhand != null && offhand != null) {
net.minecraft.server.v1_13_R2.Entity nmsEntity = ((CraftEntity)entity).getHandle(); if(inv.getItemInMainHand().isSimilar(item) || inv.getItemInOffHand().isSimilar(item))
NBTTagCompound tag = new NBTTagCompound(); return true;
nmsEntity.save(tag);
return tag; else {
for(ItemStack items : inv.getArmorContents()) {
if(items != null && items.isSimilar(item))
return true;
}
}
}
return false;
} }
} }

View file

@ -57,7 +57,7 @@ public class Trident_Riptide extends Patches implements Listener {
} }
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
@EventHandler @EventHandler
@ -70,6 +70,6 @@ public class Trident_Riptide extends Patches implements Listener {
item.addUnsafeEnchantment(Enchantment.RIPTIDE, enchantlevel.get(player)); item.addUnsafeEnchantment(Enchantment.RIPTIDE, enchantlevel.get(player));
} }
debug(ReflectionToStringBuilder.toString(event)); debug(event);
} }
} }

View file

@ -1,5 +1,5 @@
name: VulnerabilityPatcher name: VulnerabilityPatcher
version: 0.2 version: 0.2.1
main: me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher main: me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher
api-version: 1.13 api-version: 1.13
authors: [CoolJWB] authors: [CoolJWB]