Merge pull request '0.5.8 refactor of all files, party, yml based system, damage listener' (#2) from unurled/Raxen:plugin into plugin
Reviewed-on: #2
This commit is contained in:
commit
9cfd556405
178 changed files with 12699 additions and 6199 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -1,6 +1,6 @@
|
||||||
# User-specific stuff
|
# User-specific stuff
|
||||||
server/
|
server/
|
||||||
.idea/
|
# .idea/
|
||||||
.vscode/
|
.vscode/
|
||||||
.settings/
|
.settings/
|
||||||
.factorypath
|
.factorypath
|
||||||
|
@ -131,3 +131,5 @@ run/
|
||||||
/gradle/
|
/gradle/
|
||||||
|
|
||||||
resource_pack/raxen/assets/minecraft/
|
resource_pack/raxen/assets/minecraft/
|
||||||
|
|
||||||
|
.idea/codeStyles/codeStyleConfig.xml
|
||||||
|
|
92
.idea/.gitignore
vendored
Normal file
92
.idea/.gitignore
vendored
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
|
compiler.xml
|
||||||
|
discord.xml
|
||||||
|
gradle.xml
|
||||||
|
codeStyles/codeStylesConfig.xml
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
||||||
|
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||||
|
|
||||||
|
# User-specific stuff
|
||||||
|
.idea/**/workspace.xml
|
||||||
|
.idea/**/tasks.xml
|
||||||
|
.idea/**/usage.statistics.xml
|
||||||
|
.idea/**/dictionaries
|
||||||
|
.idea/**/shelf
|
||||||
|
|
||||||
|
# AWS User-specific
|
||||||
|
.idea/**/aws.xml
|
||||||
|
|
||||||
|
# Generated files
|
||||||
|
.idea/**/contentModel.xml
|
||||||
|
|
||||||
|
# Sensitive or high-churn files
|
||||||
|
.idea/**/dataSources/
|
||||||
|
.idea/**/dataSources.ids
|
||||||
|
.idea/**/dataSources.local.xml
|
||||||
|
.idea/**/sqlDataSources.xml
|
||||||
|
.idea/**/dynamic.xml
|
||||||
|
.idea/**/uiDesigner.xml
|
||||||
|
.idea/**/dbnavigator.xml
|
||||||
|
|
||||||
|
# Gradle
|
||||||
|
.idea/**/gradle.xml
|
||||||
|
.idea/**/libraries
|
||||||
|
|
||||||
|
# Gradle and Maven with auto-import
|
||||||
|
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||||
|
# since they will be recreated, and may cause churn. Uncomment if using
|
||||||
|
# auto-import.
|
||||||
|
# .idea/artifacts
|
||||||
|
# .idea/compiler.xml
|
||||||
|
# .idea/jarRepositories.xml
|
||||||
|
# .idea/modules.xml
|
||||||
|
# .idea/*.iml
|
||||||
|
# .idea/modules
|
||||||
|
# *.iml
|
||||||
|
# *.ipr
|
||||||
|
|
||||||
|
# CMake
|
||||||
|
cmake-build-*/
|
||||||
|
|
||||||
|
# Mongo Explorer plugin
|
||||||
|
.idea/**/mongoSettings.xml
|
||||||
|
|
||||||
|
# File-based project format
|
||||||
|
*.iws
|
||||||
|
|
||||||
|
# IntelliJ
|
||||||
|
out/
|
||||||
|
|
||||||
|
# mpeltonen/sbt-idea plugin
|
||||||
|
.idea_modules/
|
||||||
|
|
||||||
|
# JIRA plugin
|
||||||
|
atlassian-ide-plugin.xml
|
||||||
|
|
||||||
|
# Cursive Clojure plugin
|
||||||
|
.idea/replstate.xml
|
||||||
|
|
||||||
|
# SonarLint plugin
|
||||||
|
.idea/sonarlint/
|
||||||
|
|
||||||
|
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||||
|
com_crashlytics_export_strings.xml
|
||||||
|
crashlytics.properties
|
||||||
|
crashlytics-build.properties
|
||||||
|
fabric.properties
|
||||||
|
|
||||||
|
# Editor-based Rest Client
|
||||||
|
.idea/httpRequests
|
||||||
|
|
||||||
|
# Android studio 3.1+ serialized cache file
|
||||||
|
.idea/caches/build_file_checksums.ser
|
1
.idea/.name
Normal file
1
.idea/.name
Normal file
|
@ -0,0 +1 @@
|
||||||
|
raxen
|
581
.idea/codeStyles/Project.xml
Normal file
581
.idea/codeStyles/Project.xml
Normal file
|
@ -0,0 +1,581 @@
|
||||||
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
|
<code_scheme name="Project" version="173">
|
||||||
|
<option name="OTHER_INDENT_OPTIONS">
|
||||||
|
<value>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||||
|
<option name="TAB_SIZE" value="2" />
|
||||||
|
</value>
|
||||||
|
</option>
|
||||||
|
<option name="LINE_SEPARATOR" />
|
||||||
|
<option name="RIGHT_MARGIN" value="100" />
|
||||||
|
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" />
|
||||||
|
<option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="0" />
|
||||||
|
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
|
||||||
|
<option name="ALIGN_MULTILINE_FOR" value="false" />
|
||||||
|
<option name="SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE" value="true" />
|
||||||
|
<option name="CALL_PARAMETERS_WRAP" value="1" />
|
||||||
|
<option name="METHOD_PARAMETERS_WRAP" value="1" />
|
||||||
|
<option name="EXTENDS_LIST_WRAP" value="1" />
|
||||||
|
<option name="THROWS_KEYWORD_WRAP" value="1" />
|
||||||
|
<option name="METHOD_CALL_CHAIN_WRAP" value="1" />
|
||||||
|
<option name="BINARY_OPERATION_WRAP" value="1" />
|
||||||
|
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" />
|
||||||
|
<option name="TERNARY_OPERATION_WRAP" value="1" />
|
||||||
|
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
|
||||||
|
<option name="FOR_STATEMENT_WRAP" value="1" />
|
||||||
|
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
|
||||||
|
<option name="WRAP_COMMENTS" value="true" />
|
||||||
|
<option name="IF_BRACE_FORCE" value="3" />
|
||||||
|
<option name="DOWHILE_BRACE_FORCE" value="3" />
|
||||||
|
<option name="WHILE_BRACE_FORCE" value="3" />
|
||||||
|
<option name="FOR_BRACE_FORCE" value="3" />
|
||||||
|
<option name="SOFT_MARGINS" value="80,100,120" />
|
||||||
|
<AndroidXmlCodeStyleSettings>
|
||||||
|
<option name="USE_CUSTOM_SETTINGS" value="true" />
|
||||||
|
<option name="LAYOUT_SETTINGS">
|
||||||
|
<value>
|
||||||
|
<option name="INSERT_BLANK_LINE_BEFORE_TAG" value="false" />
|
||||||
|
</value>
|
||||||
|
</option>
|
||||||
|
</AndroidXmlCodeStyleSettings>
|
||||||
|
<JSCodeStyleSettings version="0">
|
||||||
|
<option name="INDENT_CHAINED_CALLS" value="false" />
|
||||||
|
</JSCodeStyleSettings>
|
||||||
|
<JavaCodeStyleSettings>
|
||||||
|
<option name="INSERT_INNER_CLASS_IMPORTS" value="true" />
|
||||||
|
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
|
||||||
|
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
|
||||||
|
<option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
|
||||||
|
<value />
|
||||||
|
</option>
|
||||||
|
<option name="IMPORT_LAYOUT_TABLE">
|
||||||
|
<value>
|
||||||
|
<package name="" withSubpackages="true" static="true" />
|
||||||
|
<emptyLine />
|
||||||
|
<package name="" withSubpackages="true" static="false" />
|
||||||
|
</value>
|
||||||
|
</option>
|
||||||
|
</JavaCodeStyleSettings>
|
||||||
|
<Objective-C>
|
||||||
|
<option name="INDENT_NAMESPACE_MEMBERS" value="0" />
|
||||||
|
<option name="INDENT_C_STRUCT_MEMBERS" value="2" />
|
||||||
|
<option name="INDENT_CLASS_MEMBERS" value="2" />
|
||||||
|
<option name="INDENT_VISIBILITY_KEYWORDS" value="1" />
|
||||||
|
<option name="INDENT_INSIDE_CODE_BLOCK" value="2" />
|
||||||
|
<option name="KEEP_STRUCTURES_IN_ONE_LINE" value="true" />
|
||||||
|
<option name="FUNCTION_PARAMETERS_WRAP" value="5" />
|
||||||
|
<option name="FUNCTION_CALL_ARGUMENTS_WRAP" value="5" />
|
||||||
|
<option name="TEMPLATE_CALL_ARGUMENTS_WRAP" value="5" />
|
||||||
|
<option name="TEMPLATE_CALL_ARGUMENTS_ALIGN_MULTILINE" value="true" />
|
||||||
|
<option name="ALIGN_INIT_LIST_IN_COLUMNS" value="false" />
|
||||||
|
<option name="SPACE_BEFORE_SUPERCLASS_COLON" value="false" />
|
||||||
|
</Objective-C>
|
||||||
|
<Objective-C-extensions>
|
||||||
|
<option name="GENERATE_INSTANCE_VARIABLES_FOR_PROPERTIES" value="ASK" />
|
||||||
|
<option name="RELEASE_STYLE" value="IVAR" />
|
||||||
|
<option name="TYPE_QUALIFIERS_PLACEMENT" value="BEFORE" />
|
||||||
|
<file>
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
|
||||||
|
</file>
|
||||||
|
<class>
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
|
||||||
|
</class>
|
||||||
|
<extensions>
|
||||||
|
<pair source="cc" header="h" />
|
||||||
|
<pair source="c" header="h" />
|
||||||
|
</extensions>
|
||||||
|
</Objective-C-extensions>
|
||||||
|
<Python>
|
||||||
|
<option name="USE_CONTINUATION_INDENT_FOR_ARGUMENTS" value="true" />
|
||||||
|
</Python>
|
||||||
|
<TypeScriptCodeStyleSettings version="0">
|
||||||
|
<option name="INDENT_CHAINED_CALLS" value="false" />
|
||||||
|
</TypeScriptCodeStyleSettings>
|
||||||
|
<XML>
|
||||||
|
<option name="XML_ALIGN_ATTRIBUTES" value="false" />
|
||||||
|
</XML>
|
||||||
|
<codeStyleSettings language="CSS">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||||
|
<option name="TAB_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="ECMA Script Level 4">
|
||||||
|
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
|
||||||
|
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
|
||||||
|
<option name="ALIGN_MULTILINE_FOR" value="false" />
|
||||||
|
<option name="CALL_PARAMETERS_WRAP" value="1" />
|
||||||
|
<option name="METHOD_PARAMETERS_WRAP" value="1" />
|
||||||
|
<option name="EXTENDS_LIST_WRAP" value="1" />
|
||||||
|
<option name="BINARY_OPERATION_WRAP" value="1" />
|
||||||
|
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" />
|
||||||
|
<option name="TERNARY_OPERATION_WRAP" value="1" />
|
||||||
|
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
|
||||||
|
<option name="FOR_STATEMENT_WRAP" value="1" />
|
||||||
|
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
|
||||||
|
<option name="IF_BRACE_FORCE" value="3" />
|
||||||
|
<option name="DOWHILE_BRACE_FORCE" value="3" />
|
||||||
|
<option name="WHILE_BRACE_FORCE" value="3" />
|
||||||
|
<option name="FOR_BRACE_FORCE" value="3" />
|
||||||
|
<option name="PARENT_SETTINGS_INSTALLED" value="true" />
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="HTML">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||||
|
<option name="TAB_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="JAVA">
|
||||||
|
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" />
|
||||||
|
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
|
||||||
|
<option name="BLANK_LINES_AFTER_CLASS_HEADER" value="1" />
|
||||||
|
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
|
||||||
|
<option name="ALIGN_MULTILINE_RESOURCES" value="false" />
|
||||||
|
<option name="ALIGN_MULTILINE_FOR" value="false" />
|
||||||
|
<option name="CALL_PARAMETERS_WRAP" value="1" />
|
||||||
|
<option name="METHOD_PARAMETERS_WRAP" value="1" />
|
||||||
|
<option name="EXTENDS_LIST_WRAP" value="1" />
|
||||||
|
<option name="THROWS_KEYWORD_WRAP" value="1" />
|
||||||
|
<option name="METHOD_CALL_CHAIN_WRAP" value="1" />
|
||||||
|
<option name="BINARY_OPERATION_WRAP" value="1" />
|
||||||
|
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" />
|
||||||
|
<option name="TERNARY_OPERATION_WRAP" value="1" />
|
||||||
|
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
|
||||||
|
<option name="FOR_STATEMENT_WRAP" value="1" />
|
||||||
|
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
|
||||||
|
<option name="WRAP_COMMENTS" value="true" />
|
||||||
|
<option name="IF_BRACE_FORCE" value="3" />
|
||||||
|
<option name="DOWHILE_BRACE_FORCE" value="3" />
|
||||||
|
<option name="WHILE_BRACE_FORCE" value="3" />
|
||||||
|
<option name="FOR_BRACE_FORCE" value="3" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="JSON">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||||
|
<option name="TAB_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="JavaScript">
|
||||||
|
<option name="RIGHT_MARGIN" value="80" />
|
||||||
|
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
|
||||||
|
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
|
||||||
|
<option name="ALIGN_MULTILINE_FOR" value="false" />
|
||||||
|
<option name="CALL_PARAMETERS_WRAP" value="1" />
|
||||||
|
<option name="METHOD_PARAMETERS_WRAP" value="1" />
|
||||||
|
<option name="BINARY_OPERATION_WRAP" value="1" />
|
||||||
|
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" />
|
||||||
|
<option name="TERNARY_OPERATION_WRAP" value="1" />
|
||||||
|
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
|
||||||
|
<option name="FOR_STATEMENT_WRAP" value="1" />
|
||||||
|
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
|
||||||
|
<option name="IF_BRACE_FORCE" value="3" />
|
||||||
|
<option name="DOWHILE_BRACE_FORCE" value="3" />
|
||||||
|
<option name="WHILE_BRACE_FORCE" value="3" />
|
||||||
|
<option name="FOR_BRACE_FORCE" value="3" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="TAB_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="ObjectiveC">
|
||||||
|
<option name="RIGHT_MARGIN" value="80" />
|
||||||
|
<option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="1" />
|
||||||
|
<option name="BLANK_LINES_BEFORE_IMPORTS" value="0" />
|
||||||
|
<option name="BLANK_LINES_AFTER_IMPORTS" value="0" />
|
||||||
|
<option name="BLANK_LINES_AROUND_CLASS" value="0" />
|
||||||
|
<option name="BLANK_LINES_AROUND_METHOD" value="0" />
|
||||||
|
<option name="BLANK_LINES_AROUND_METHOD_IN_INTERFACE" value="0" />
|
||||||
|
<option name="ALIGN_MULTILINE_BINARY_OPERATION" value="false" />
|
||||||
|
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" />
|
||||||
|
<option name="FOR_STATEMENT_WRAP" value="1" />
|
||||||
|
<option name="ASSIGNMENT_WRAP" value="1" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="PROTO">
|
||||||
|
<option name="RIGHT_MARGIN" value="80" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
||||||
|
<option name="TAB_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="Python">
|
||||||
|
<option name="RIGHT_MARGIN" value="80" />
|
||||||
|
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||||
|
<option name="TAB_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="SASS">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||||
|
<option name="TAB_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="SCSS">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||||
|
<option name="TAB_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="TypeScript">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="TAB_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="XML">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
||||||
|
<option name="TAB_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
<arrangement>
|
||||||
|
<rules>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>xmlns:android</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>xmlns:.*</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:id</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>style</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:.*Style</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_width</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_height</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_weight</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_margin</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_marginTop</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_marginBottom</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_marginStart</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_marginEnd</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_marginLeft</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_marginRight</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_.*</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:padding</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:paddingTop</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:paddingBottom</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:paddingStart</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:paddingEnd</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:paddingLeft</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:paddingRight</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res-auto</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/tools</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_NAMESPACE>.*</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
</rules>
|
||||||
|
</arrangement>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="protobuf">
|
||||||
|
<option name="RIGHT_MARGIN" value="80" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
</code_scheme>
|
||||||
|
</component>
|
85
.idea/jarRepositories.xml
Normal file
85
.idea/jarRepositories.xml
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="RemoteRepositoriesConfiguration">
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="central" />
|
||||||
|
<option name="name" value="Maven Central repository" />
|
||||||
|
<option name="url" value="https://repo1.maven.org/maven2" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="jboss.community" />
|
||||||
|
<option name="name" value="JBoss Community repository" />
|
||||||
|
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="maven8" />
|
||||||
|
<option name="name" value="maven8" />
|
||||||
|
<option name="url" value="https://repo.maven.apache.org/maven2/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="maven4" />
|
||||||
|
<option name="name" value="maven4" />
|
||||||
|
<option name="url" value="https://s01.oss.sonatype.org/content/repositories/snapshots/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="paperweightDecompilerRepository" />
|
||||||
|
<option name="name" value="paperweightDecompilerRepository" />
|
||||||
|
<option name="url" value="https://repo.papermc.io/repository/maven-public/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="PaperMc" />
|
||||||
|
<option name="name" value="PaperMc" />
|
||||||
|
<option name="url" value="https://papermc.io/repo/repository/maven-public/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="PlaceHolderApi" />
|
||||||
|
<option name="name" value="PlaceHolderApi" />
|
||||||
|
<option name="url" value="https://repo.extendedclip.com/content/repositories/placeholderapi/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="maven3" />
|
||||||
|
<option name="name" value="maven3" />
|
||||||
|
<option name="url" value="https://repo.dmulloy2.net/repository/public/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="MavenLocal" />
|
||||||
|
<option name="name" value="MavenLocal" />
|
||||||
|
<option name="url" value="file:$MAVEN_REPOSITORY$/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="Citizens" />
|
||||||
|
<option name="name" value="Citizens" />
|
||||||
|
<option name="url" value="https://repo.citizensnpcs.co/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="maven2" />
|
||||||
|
<option name="name" value="maven2" />
|
||||||
|
<option name="url" value="https://oss.sonatype.org/content/groups/public/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="maven6" />
|
||||||
|
<option name="name" value="maven6" />
|
||||||
|
<option name="url" value="https://repo.onarandombox.com/content/groups/public/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="maven" />
|
||||||
|
<option name="name" value="maven" />
|
||||||
|
<option name="url" value="https://jitpack.io" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="EssentialsX" />
|
||||||
|
<option name="name" value="EssentialsX" />
|
||||||
|
<option name="url" value="https://repo.essentialsx.net/releases/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="CodeMC" />
|
||||||
|
<option name="name" value="CodeMC" />
|
||||||
|
<option name="url" value="https://repo.codemc.org/repository/maven-public/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="Worldedit" />
|
||||||
|
<option name="name" value="Worldedit" />
|
||||||
|
<option name="url" value="https://maven.enginehub.org/repo/" />
|
||||||
|
</remote-repository>
|
||||||
|
</component>
|
||||||
|
</project>
|
13
.idea/misc.xml
Normal file
13
.idea/misc.xml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="EntryPointsManager">
|
||||||
|
<list size="1">
|
||||||
|
<item index="0" class="java.lang.String" itemvalue="org.bukkit.event.EventHandler" />
|
||||||
|
</list>
|
||||||
|
</component>
|
||||||
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
|
<component name="FrameworkDetectionExcludesConfiguration">
|
||||||
|
<file type="web" url="file://$PROJECT_DIR$" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK" />
|
||||||
|
</project>
|
9
.idea/modules.xml
Normal file
9
.idea/modules.xml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/modules/raxen.main.iml" filepath="$PROJECT_DIR$/.idea/modules/raxen.main.iml" />
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/modules/raxen.test.iml" filepath="$PROJECT_DIR$/.idea/modules/raxen.test.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
6
.idea/vcs.xml
Normal file
6
.idea/vcs.xml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
10
.prettierrc.yml
Normal file
10
.prettierrc.yml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# Prettier configuration
|
||||||
|
overrides:
|
||||||
|
- files:
|
||||||
|
- "*.java"
|
||||||
|
options:
|
||||||
|
printWidth: 80
|
||||||
|
tabWidth: 4
|
||||||
|
useTabs: false
|
||||||
|
trailingComma: "none"
|
||||||
|
endOfLine: "lf"
|
|
@ -28,9 +28,10 @@ pipeline:
|
||||||
- api_key
|
- api_key
|
||||||
commands:
|
commands:
|
||||||
- export PRERELEASE=true
|
- export PRERELEASE=true
|
||||||
|
- cd scripts
|
||||||
- chmod +x git_release.py
|
- chmod +x git_release.py
|
||||||
- pip install giteapy
|
- pip install giteapy
|
||||||
- python git_release.py --token "$API_KEY" --message "${DRONE_COMMIT_MESSAGE}" --prerelease $PRERELEASE --tag "${DRONE_TAG}"
|
- python git_release.py --token "$API_KEY" --message "${CI_COMMIT_MESSAGE}" --prerelease $PRERELEASE --tag "${CI_COMMIT_TAG}"
|
||||||
when:
|
when:
|
||||||
event: tag
|
event: tag
|
||||||
|
|
||||||
|
|
14
README.md
14
README.md
|
@ -1,4 +1,5 @@
|
||||||
# Raxen [![Build Status](https://drone.unurled.me/api/badges/Elixium/Raxen/status.svg)](https://drone.unurled.me/Elixium/Raxen)
|
# Raxen [![Build Status](https://ci.unurled.me/api/badges/Elixium/Raxen/status.svg)](https://drone.unurled.me/Elixium/Raxen)
|
||||||
|
|
||||||
Project made by unurled.
|
Project made by unurled.
|
||||||
|
|
||||||
Minecraft Plugin that do multiple stuff. (cutsom items, custom mobs...)
|
Minecraft Plugin that do multiple stuff. (cutsom items, custom mobs...)
|
||||||
|
@ -13,14 +14,19 @@ Minecraft Plugin that do multiple stuff. (cutsom items, custom mobs...)
|
||||||
|
|
||||||
no build and no running info atm.
|
no build and no running info atm.
|
||||||
|
|
||||||
to use custom texture for items, modify the custom data model => [Example](https://www.youtube.com/watch?v=XGxn_Mb8VzI)
|
to use custom texture for items, modify the custom data
|
||||||
|
model => [Example](https://www.youtube.com/watch?v=XGxn_Mb8VzI)
|
||||||
|
|
||||||
for more info contact me.
|
for more info contact me.
|
||||||
@unurled#0149\
|
@unurled#0149\
|
||||||
or create an [issue](https://git.unurled.me/Elixium/Raxen/issues/new)
|
or create an [issue](https://git.unurled.me/Elixium/Raxen/issues/new)
|
||||||
|
|
||||||
custom Items uses custom model data to work => need to update in model/item/item.json [Example](https://github.com/elBukkit/MagicPlugin/wiki/ResourcePack#customizing)
|
|
||||||
|
see [Examples](/Elixium/raxen/docs/examples) for some config examples
|
||||||
|
model/item/item.json [Example](https://github.com/elBukkit/MagicPlugin/wiki/ResourcePack#customizing)
|
||||||
|
custom Items uses custom model data to work => need to update in
|
||||||
|
|
||||||
## Developing
|
## Developing
|
||||||
|
|
||||||
you can see [TODO.md](/Elixium/raxen/src/branch/plugin/docs/TODO.md) in which I did a list of what we must do
|
you can see [TODO.md](/Elixium/raxen/src/branch/plugin/docs/TODO.md) in which I did a list of what
|
||||||
|
we must do
|
69
build.gradle
69
build.gradle
|
@ -7,6 +7,7 @@ plugins {
|
||||||
|
|
||||||
apply plugin: "java"
|
apply plugin: "java"
|
||||||
apply plugin: "io.papermc.paperweight.userdev"
|
apply plugin: "io.papermc.paperweight.userdev"
|
||||||
|
apply plugin: "com.github.johnrengelman.shadow"
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenLocal()
|
mavenLocal()
|
||||||
|
@ -48,41 +49,48 @@ repositories {
|
||||||
maven {
|
maven {
|
||||||
url = "https://repo.onarandombox.com/content/groups/public/"
|
url = "https://repo.onarandombox.com/content/groups/public/"
|
||||||
}
|
}
|
||||||
|
maven {
|
||||||
|
name = "Worldedit"
|
||||||
|
url = 'https://maven.enginehub.org/repo/'
|
||||||
|
}
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
// lombok stuff
|
// lombok stuff
|
||||||
implementation 'org.projectlombok:lombok:1.18.24'
|
implementation 'org.projectlombok:lombok:1.18.26'
|
||||||
annotationProcessor 'org.projectlombok:lombok:1.18.24'
|
annotationProcessor 'org.projectlombok:lombok:1.18.26'
|
||||||
testCompileOnly 'org.projectlombok:lombok:1.18.24'
|
testCompileOnly 'org.projectlombok:lombok:1.18.26'
|
||||||
|
|
||||||
|
implementation 'org.apache.httpcomponents:httpclient:4.5.13'
|
||||||
|
implementation 'org.apache.httpcomponents:httpmime:4.5.13'
|
||||||
|
|
||||||
// mongo stuff
|
// mongo stuff
|
||||||
implementation 'org.mongodb:mongodb-driver-sync:4.7.2'
|
implementation 'org.mongodb:mongodb-driver-sync:4.9.1'
|
||||||
implementation 'org.mongodb:bson:4.7.2'
|
implementation 'org.mongodb:bson:4.9.1'
|
||||||
implementation 'org.mongodb:mongodb-driver-core:4.7.2'
|
implementation 'org.mongodb:mongodb-driver-core:4.9.1'
|
||||||
|
|
||||||
|
implementation 'redis.clients:jedis:4.3.1'
|
||||||
|
|
||||||
compileOnly 'io.papermc.paper:paper-api:1.19.4-R0.1-SNAPSHOT'
|
compileOnly 'io.papermc.paper:paper-api:1.19.4-R0.1-SNAPSHOT'
|
||||||
implementation 'de.tr7zw:item-nbt-api-plugin:2.11.2'
|
implementation 'de.tr7zw:item-nbt-api-plugin:2.11.2'
|
||||||
// compileOnly 'de.tr7zw:item-nbt-api:2.11.2'
|
// compileOnly 'de.tr7zw:item-nbt-api:2.11.2'
|
||||||
compileOnly 'com.comphenix.protocol:ProtocolLib:4.8.0'
|
compileOnly 'com.comphenix.protocol:ProtocolLib:5.0.0'
|
||||||
compileOnly 'net.luckperms:api:5.4'
|
|
||||||
compileOnly 'com.github.MilkBowl:VaultAPI:1.7.1'
|
compileOnly 'com.github.MilkBowl:VaultAPI:1.7.1'
|
||||||
compileOnly 'net.essentialsx:EssentialsX:2.19.7'
|
compileOnly 'net.essentialsx:EssentialsX:2.19.7'
|
||||||
//compileOnly 'com.fastasyncworldedit:FastAsyncWorldEdit-Core:2.3.0'
|
compileOnly 'com.sk89q.worldedit:worldedit-core:7.2.14'
|
||||||
//compileOnly 'com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit:2.3.0'
|
compileOnly 'com.sk89q.worldedit:worldedit-bukkit:7.2.14'
|
||||||
compileOnly 'me.clip:placeholderapi:2.11.2'
|
compileOnly 'me.clip:placeholderapi:2.11.3'
|
||||||
compileOnly('net.citizensnpcs:citizens-main:2.0.31-SNAPSHOT') {
|
compileOnly('net.citizensnpcs:citizens-main:2.0.31-SNAPSHOT') {
|
||||||
exclude group: '*', module: '*'
|
exclude group: '*', module: '*'
|
||||||
}
|
}
|
||||||
compileOnly 'com.onarandombox.multiversecore:Multiverse-Core:4.3.1'
|
compileOnly 'com.onarandombox.multiversecore:Multiverse-Core:4.3.1'
|
||||||
// compileOnly 'me.filoghost.holographicdisplays:holographicdisplays-api:3.0.1'
|
implementation 'com.github.decentsoftware-eu:decentholograms:2.8.1'
|
||||||
// compileOnly fileTree(dir: 'libs', include: '*.jar')
|
|
||||||
paperweightDevelopmentBundle("io.papermc.paper:dev-bundle:1.19.4-R0.1-SNAPSHOT")
|
paperweightDevelopmentBundle("io.papermc.paper:dev-bundle:1.19.4-R0.1-SNAPSHOT")
|
||||||
}
|
}
|
||||||
|
|
||||||
group = 'me.unurled'
|
group = 'me.unurled'
|
||||||
version = '0.5.7'
|
version = '0.6.0'
|
||||||
description = 'Raxen'
|
description = 'Raxen'
|
||||||
|
|
||||||
java {
|
java {
|
||||||
|
@ -91,19 +99,10 @@ java {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
publishing {
|
|
||||||
publications {
|
|
||||||
maven(MavenPublication) {
|
|
||||||
from(components.java)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.withType(JavaCompile) {
|
tasks.withType(JavaCompile) {
|
||||||
options.encoding = 'UTF-8'
|
options.encoding = 'UTF-8'
|
||||||
options.release = 17
|
options.release = 17
|
||||||
options.compilerArgs += ["-Xlint:unchecked", "-Xlint:deprecation"]
|
options.compilerArgs += ["-Xlint:unchecked", "-Xlint:deprecation"]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks {
|
tasks {
|
||||||
|
@ -119,16 +118,34 @@ shadowJar {
|
||||||
dependencies {
|
dependencies {
|
||||||
include dependency('de.tr7zw:item-nbt-api-plugin:2.11.2')
|
include dependency('de.tr7zw:item-nbt-api-plugin:2.11.2')
|
||||||
include dependency('de.tr7zw:item-nbt-api:2.11.2')
|
include dependency('de.tr7zw:item-nbt-api:2.11.2')
|
||||||
include dependency('org.mongodb:mongodb-driver-sync:4.7.2')
|
include dependency('org.mongodb:mongodb-driver-sync:4.9.1')
|
||||||
include dependency('org.mongodb:bson:4.7.2')
|
include dependency('org.mongodb:bson:4.9.1')
|
||||||
include dependency('org.mongodb:mongodb-driver-core:4.7.2')
|
include dependency('org.mongodb:mongodb-driver-core:4.9.1')
|
||||||
|
include dependency('com.github.decentsoftware-eu:decentholograms:2.8.1')
|
||||||
|
include dependency('org.apache.httpcomponents:httpclient:4.5.13')
|
||||||
|
include dependency('org.apache.httpcomponents:httpmime:4.5.13')
|
||||||
|
include dependency('redis.clients:jedis:4.3.1')
|
||||||
}
|
}
|
||||||
relocate("de.tr7zw", "me.unurled.libs.de.tr7zw")
|
relocate("de.tr7zw", "me.unurled.libs.de.tr7zw")
|
||||||
relocate("com.mongodb", 'me.unurled.libs.com.mongodb')
|
relocate("com.mongodb", 'me.unurled.libs.com.mongodb')
|
||||||
relocate("org.bson", 'me.unurled.libs.org.bson')
|
relocate("org.bson", 'me.unurled.libs.org.bson')
|
||||||
|
relocate('eu.decentsoftware', 'me.unurled.libs.eu.decentsoftware')
|
||||||
|
relocate('org.apache', 'me.unurled.libs.org.apache')
|
||||||
|
relocate('redis.clients', 'me.unurled.libs.redis.clients')
|
||||||
processResources {
|
processResources {
|
||||||
expand version: project.version
|
expand version: project.version
|
||||||
}
|
}
|
||||||
minimize()
|
minimize()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
main {
|
||||||
|
resources {
|
||||||
|
srcDirs = ['src/main/resources']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
processResources {
|
||||||
|
exclude '**/*.schem'
|
||||||
|
}
|
|
@ -9,18 +9,25 @@ Some RPG thing :
|
||||||
- Raxen must do :
|
- Raxen must do :
|
||||||
- some survival and RPG(Class) thing
|
- some survival and RPG(Class) thing
|
||||||
- need some sort of action => pve, pvp maybe ?
|
- need some sort of action => pve, pvp maybe ?
|
||||||
- need custom mobs => some are made => not definitive need more => ~~juste made the damage system and persistentdatacontainer on entities outside of Player, might consider to switch to persistentdatacontainer on player instead of having an hashmap (ProfileManager.java)~~ already done
|
- need custom mobs => some are made => not definitive need more => ~~juste made the damage
|
||||||
|
system and persistentdatacontainer on entities outside of Player, might consider to switch to
|
||||||
|
persistentdatacontainer on player instead of having an hashmap (ProfileManager.java)~~ already
|
||||||
|
done
|
||||||
- need custom items => partialy made => need custom resource pack support
|
- need custom items => partialy made => need custom resource pack support
|
||||||
- can use custom texture pack => in making
|
- can use custom texture pack => in making
|
||||||
- protection and logging feature => coreprotect
|
- protection and logging feature => coreprotect
|
||||||
- solo leveling inspired thing with player being mc of his onw world, can do side quest with every1, and can make a party to play, max of 4?:
|
- solo leveling inspired thing with player being mc of his onw world, can do side quest with
|
||||||
|
every1, and can make a party to play, max of 4?, more player means more difficulty:
|
||||||
- Gates:
|
- Gates:
|
||||||
- power: ranked from F, E, D, C, B, A, S, SS, SSS, world, unbeatable and so on
|
- power: ranked from F, E, D, C, B, A, S, SS, SSS, world, unbeatable and so on
|
||||||
- Dungunes:
|
- Dungunes:
|
||||||
- differents types => labirynth, graves,abandoned castle, openfiled like jungles, forest, plains => all of them with night variant and many days to complete
|
- differents types => labirynth, graves,abandoned castle, openfiled like jungles,
|
||||||
|
forest, plains => all of them with night variant and many days to complete
|
||||||
- Monster:
|
- Monster:
|
||||||
- basic isekai manga sort of monster and also high leveled op monster king of something => bosses
|
- basic isekai manga sort of monster and also high leveled op monster king of
|
||||||
|
something => bosses
|
||||||
- outbreak if gate isn't closed in time
|
- outbreak if gate isn't closed in time
|
||||||
- loots:
|
- loots:
|
||||||
- items of different rarities with multiple purpose => medicinal, combat related types, defensive etc...
|
- items of different rarities with multiple purpose => medicinal, combat related
|
||||||
|
types, defensive etc...
|
||||||
- leveling system for the player
|
- leveling system for the player
|
48
docs/TODO.md
48
docs/TODO.md
|
@ -1,8 +1,42 @@
|
||||||
- [x] refactor all abilities to make them compatible between entities and also making it easier to add them.
|
- [x] refactor all abilities to make them compatible between entities and also making it easier to
|
||||||
- [ ] make custom items (hard coded)
|
add them.
|
||||||
- [ ] make custom class (hard coded)
|
- [ ] make custom items (hard coded) / or all in db/json in Raxen plugin folder (like a serialized
|
||||||
- [ ] make custom abilities (hard coded)
|
version of it)
|
||||||
- [ ] make custom mods (hard coded)
|
- [ ] custom items effects (hard coded) / or all in db/json in Raxen plugin (have some sort of
|
||||||
- [ ] make gates
|
serliazed
|
||||||
- [ ] a map
|
version of it)
|
||||||
|
- [ ] make custom class (hard coded) / or all in db/json in Raxen plugin (have some sort of
|
||||||
|
serliazed
|
||||||
|
version of it)
|
||||||
|
- [ ] make custom abilities/skills (hard coded) / or all in db/json in Raxen plugin (can't have a
|
||||||
|
separate
|
||||||
|
file, must be in java files)
|
||||||
|
- [ ] make custom mods (hard coded) / or all in db/json in Raxen plugin (can have some of the infos
|
||||||
|
in db/json but not all)
|
||||||
|
- [ ] make gates (appears randomly in the world)
|
||||||
|
- [ ] a map (more wynncrafty than hypixel + dynnmap/bettermap)
|
||||||
- [ ] a leveling system
|
- [ ] a leveling system
|
||||||
|
- [ ] spells (hard coded)
|
||||||
|
- [-] party
|
||||||
|
- [ ] boss monster
|
||||||
|
- [ ] guilds
|
||||||
|
- [ ] quests (hard coded) and db/json
|
||||||
|
- [ ] filter chat
|
||||||
|
- [ ] resource pack (host, upload, compress)
|
||||||
|
|
||||||
|
## tests
|
||||||
|
|
||||||
|
- [ ] party
|
||||||
|
- [ ] combat
|
||||||
|
- [ ] class
|
||||||
|
- [ ] items
|
||||||
|
- [ ] item effects
|
||||||
|
- [ ] mobs
|
||||||
|
- [ ] skills
|
||||||
|
- [ ] abilities
|
||||||
|
- [ ] gates
|
||||||
|
- [ ] leveling system
|
||||||
|
- [ ] spells
|
||||||
|
- [ ] boss monster
|
||||||
|
- [ ] quests
|
||||||
|
- [ ] filter chat
|
||||||
|
|
17
docs/examples/Effects.md
Normal file
17
docs/examples/Effects.md
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# Effects
|
||||||
|
|
||||||
|
### Simple Effects
|
||||||
|
|
||||||
|
this is an example of a simple effect, it will spawn an armor stand with an item in its hand, for 1
|
||||||
|
duration then will change to the second item, after 4 delay it will remove the armor stand
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
testEffect:
|
||||||
|
type: armor_stand
|
||||||
|
Pose:
|
||||||
|
RightArm: 0, 0, 0
|
||||||
|
effects:
|
||||||
|
- item=testItem_1:0;delay=0;duration=1
|
||||||
|
- item=testItem_2:0;delay=3;duration=1
|
||||||
|
- remove;delay=4
|
||||||
|
```
|
12
docs/examples/Glyphs.md
Normal file
12
docs/examples/Glyphs.md
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# Glyphs
|
||||||
|
|
||||||
|
this is an example of a simple glyph
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
testGlyph:
|
||||||
|
Pack:
|
||||||
|
model: raxen/testGlyph
|
||||||
|
texture: raxen/testGlyph
|
||||||
|
char: "\uE000"
|
||||||
|
placeholder: ":test:"
|
||||||
|
```
|
21
docs/examples/Items.md
Normal file
21
docs/examples/Items.md
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# Items
|
||||||
|
|
||||||
|
## Simple Item
|
||||||
|
|
||||||
|
see an example of a simple item
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
testItem:
|
||||||
|
Pack:
|
||||||
|
custom_model_data: 1
|
||||||
|
model: raxen/testItem
|
||||||
|
display_name: '<aqua>Test Item'
|
||||||
|
material: DIAMOND
|
||||||
|
lore:
|
||||||
|
- '<gray>Test Item'
|
||||||
|
- '<gray>Custom Model Data: <aqua>1'
|
||||||
|
enchantments:
|
||||||
|
- 'DURABILITY:1'
|
||||||
|
effect:
|
||||||
|
- 'testEffect'
|
||||||
|
```
|
32
docs/examples/Mobs.md
Normal file
32
docs/examples/Mobs.md
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
# Mobs
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
testMob:
|
||||||
|
type: ZOMBIE
|
||||||
|
display_name: "<aqua>Test Mob"
|
||||||
|
health: 20
|
||||||
|
speed: 100
|
||||||
|
damage_min: 1
|
||||||
|
damage_max: 2
|
||||||
|
options:
|
||||||
|
show_health: true
|
||||||
|
persistent: true
|
||||||
|
despawn: true
|
||||||
|
prevent_other_drops: true
|
||||||
|
slient: true
|
||||||
|
prevent_sunburn: true
|
||||||
|
AI:
|
||||||
|
target:
|
||||||
|
- "NONE"
|
||||||
|
- "PLAYER"
|
||||||
|
goal:
|
||||||
|
- "NONE"
|
||||||
|
- "MOVE_TO_TARGET"
|
||||||
|
- "ATTACK_TARGET"
|
||||||
|
effect:
|
||||||
|
- model=testModel ~spawn
|
||||||
|
- sound=raxen:raxen.testSound;volume=1.0;pitch=1.0 ~timer:140 0.35
|
||||||
|
- sound=raxen:raxen.testSoundDeath;volume=1.0;pitch=1.0 ~death
|
||||||
|
- skill=testSkillDamage ~damaged
|
||||||
|
- skill=
|
||||||
|
```
|
10
docs/examples/README.md
Normal file
10
docs/examples/README.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# Exemples
|
||||||
|
|
||||||
|
see all the exemples in this folder :
|
||||||
|
|
||||||
|
to create any of the following, create a new file in the folder type of your choice (e.g. `
|
||||||
|
plugins/Raxen/items/exampleItem.yml`)
|
||||||
|
|
||||||
|
- [Effects.md](/Elixium/raxen/src/branch/plugin/docs/examples/Effects.md)
|
||||||
|
- [Items.md](/Elixium/raxen/src/branch/plugin/docs/examples/Items.md)
|
||||||
|
- [Mobs.md](/Elixium/raxen/src/branch/plugin/docs/examples/Mobs.md)
|
3
scripts/.gitignore
vendored
Normal file
3
scripts/.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
node_modules/
|
||||||
|
main.js
|
||||||
|
package-lock.json
|
|
@ -23,10 +23,10 @@ owner = "Elixium"
|
||||||
repo = "Raxen"
|
repo = "Raxen"
|
||||||
body = giteapy.CreateReleaseOption(body=doc['message'], draft=False, name=doc['tag'], prerelease=doc['prerelease'], tag_name=doc['tag'], target_commitish="string")
|
body = giteapy.CreateReleaseOption(body=doc['message'], draft=False, name=doc['tag'], prerelease=doc['prerelease'], tag_name=doc['tag'], target_commitish="string")
|
||||||
attachments = []
|
attachments = []
|
||||||
for file in os.listdir(os.getcwd() +"/build/libs"):
|
for file in os.listdir(os.getcwd() +"../build/libs"):
|
||||||
if file.endswith('.jar'):
|
if file.endswith('.jar'):
|
||||||
if file.startswith('raxen'):
|
if file.startswith('raxen'):
|
||||||
attachments.append(os.getcwd() + '/build/libs/' + file)
|
attachments.append(os.getcwd() + '../build/libs/' + file)
|
||||||
print(attachments)
|
print(attachments)
|
||||||
attachment1 = attachments[0]
|
attachment1 = attachments[0]
|
||||||
attachment2 = attachments[1]
|
attachment2 = attachments[1]
|
56
scripts/main.ts
Normal file
56
scripts/main.ts
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
import { giteaApi, CreatePullReviewOptions } from 'gitea-js';
|
||||||
|
import fetch from 'cross-fetch'; // You have to use a fetch compatible polyfill like cross-fetch for Node.JS
|
||||||
|
import fs = require('fs');
|
||||||
|
import path = require('path');
|
||||||
|
|
||||||
|
const api = giteaApi('https://git.unurled.me', {
|
||||||
|
token: process.env.TOKEN,
|
||||||
|
customFetch: fetch,
|
||||||
|
});
|
||||||
|
|
||||||
|
const todo: { [file: string]: string[]} = {};
|
||||||
|
|
||||||
|
function searchTodo(file: string): void {
|
||||||
|
let compteur = 0;
|
||||||
|
const lines: string[] = fs.readFileSync(file, 'utf-8').split('\n');
|
||||||
|
for (const line of lines) {
|
||||||
|
compteur += 1;
|
||||||
|
if (line.match(/[\S\s]*\btodo\b/i)) {
|
||||||
|
if (file in todo) {
|
||||||
|
todo[file].push(line.trim() + " (line " + compteur + ")");
|
||||||
|
} else {
|
||||||
|
todo[file] = [line.trim() + " (line " + compteur + ")"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function searchTodoInDir(dir: string): void {
|
||||||
|
fs.readdirSync(dir).forEach(file => {
|
||||||
|
const filePath = path.join(dir, file);
|
||||||
|
if (fs.statSync(filePath).isDirectory()) {
|
||||||
|
searchTodoInDir(filePath);
|
||||||
|
}
|
||||||
|
if (file.endsWith(".java")) {
|
||||||
|
searchTodo(filePath);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function searchTodoInProject(): void {
|
||||||
|
const pwd = path.dirname(path.dirname(path.resolve(__filename)));
|
||||||
|
searchTodoInDir(path.join(pwd, "src/main/java/me/unurled/raxen"));
|
||||||
|
}
|
||||||
|
|
||||||
|
searchTodoInProject();
|
||||||
|
|
||||||
|
console.log();
|
||||||
|
const index: number = Number.parseInt(process.env.CI_COMMIT_PULL_REQUEST);
|
||||||
|
const body: CreatePullReviewOptions = {
|
||||||
|
body: "# TODO that needs to be done by next big release :\n```json\n" + JSON.stringify(todo, null, "\t") + "\n```",
|
||||||
|
commit_id: process.env.CI_COMMIT_SHA,
|
||||||
|
};
|
||||||
|
|
||||||
|
const pr_review = api.repos.repoCreatePullReview(process.env.CI_REPO_OWNER, process.env.CI_REPO_NAME, index, body, {});
|
||||||
|
pr_review.then(res => console.log(res)).catch(err => console.log(err));
|
20
scripts/package.json
Normal file
20
scripts/package.json
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"name": "scripts",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "a script for pull request comment",
|
||||||
|
"main": "main.js",
|
||||||
|
"author": "unurled",
|
||||||
|
"license": "MIT",
|
||||||
|
"scripts": {
|
||||||
|
"build": "tsc",
|
||||||
|
"start": "node main.js"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"cross-fetch": "^3.1.5",
|
||||||
|
"gitea-js": "^1.19.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "^18.16.0",
|
||||||
|
"typescript": "^5.0.4"
|
||||||
|
}
|
||||||
|
}
|
8
scripts/tsconfig.json
Normal file
8
scripts/tsconfig.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"module": "CommonJS"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"main.ts"
|
||||||
|
]
|
||||||
|
}
|
|
@ -16,153 +16,167 @@ import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
public final class Raxen extends JavaPlugin {
|
public final class Raxen extends JavaPlugin {
|
||||||
|
|
||||||
private static final String prefix =
|
private static final String prefix =
|
||||||
"<aqua>Rx</aqua><light_purple>></light_purple> ";
|
"<aqua>Rx</aqua><light_purple>></light_purple> ";
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private static String version = "0.5.7";
|
private static String version = "0.6.0";
|
||||||
|
|
||||||
private boolean loading = true;
|
private boolean loading = true;
|
||||||
private final PluginManager pm = getServer().getPluginManager();
|
private final PluginManager pm = getServer().getPluginManager();
|
||||||
|
|
||||||
private static Raxen plugin;
|
private static Raxen plugin;
|
||||||
|
|
||||||
private static Logger logger;
|
private static Logger logger;
|
||||||
|
|
||||||
private static Config config;
|
private static Config config;
|
||||||
|
|
||||||
private static PlayerConfig playerConfig;
|
private static PlayerConfig playerConfig;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private ProtocolManager protocolManager;
|
private ProtocolManager protocolManager;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private Manager manager;
|
private Manager manager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method when the server launch the plugin.
|
* Method when the server launch the plugin.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
plugin = this;
|
plugin = this;
|
||||||
logger = getLogger();
|
logger = getLogger();
|
||||||
|
|
||||||
version = this.getPluginMeta().getVersion();
|
version = this.getPluginMeta().getVersion();
|
||||||
|
|
||||||
manager = new Manager();
|
manager = new Manager();
|
||||||
manager.set(plugin);
|
manager.set(plugin);
|
||||||
|
|
||||||
// Config
|
// Config
|
||||||
config = new Config(plugin);
|
config = new Config(plugin);
|
||||||
|
|
||||||
protocolManager = ProtocolLibrary.getProtocolManager();
|
protocolManager = ProtocolLibrary.getProtocolManager();
|
||||||
|
|
||||||
playerConfig = new PlayerConfig(plugin);
|
playerConfig = new PlayerConfig(plugin);
|
||||||
|
|
||||||
//register Commands and Events
|
//register Commands and Events
|
||||||
registerCommands();
|
registerCommands();
|
||||||
registerEvents();
|
registerEvents();
|
||||||
|
|
||||||
Bukkit
|
Bukkit
|
||||||
.getConsoleSender()
|
.getConsoleSender()
|
||||||
.sendMessage(
|
.sendMessage(
|
||||||
colorComp(prefix + "<green>Server Started Successfully!</green>")
|
colorComp(
|
||||||
);
|
prefix + "<green>Server Started Successfully!</green>"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
manager.getListenerManager().getServerPingEvent().setLoading(false);
|
manager.getListenerManager().getServerPingEvent().setLoading(false);
|
||||||
loading = false;
|
loading = false;
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* register the command in the command manager class.
|
|
||||||
*/
|
|
||||||
private void registerCommands() {
|
|
||||||
manager.getCommandManager().register();
|
|
||||||
|
|
||||||
Bukkit
|
|
||||||
.getConsoleSender()
|
|
||||||
.sendMessage(colorComp(prefix + "<green>Commands Registered!</green>"));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* register the events in the event manager class.
|
|
||||||
*/
|
|
||||||
private void registerEvents() {
|
|
||||||
manager.getListenerManager().register();
|
|
||||||
|
|
||||||
Bukkit
|
|
||||||
.getConsoleSender()
|
|
||||||
.sendMessage(colorComp(prefix + "<green>Events Registered!</green>"));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Method when the server stops the plugin.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void onDisable() {
|
|
||||||
if (!loading) {
|
|
||||||
manager.getListenerManager().getServerPingEvent().setLoading(true);
|
|
||||||
Reload.kickAll();
|
|
||||||
|
|
||||||
playerConfig.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Bukkit
|
/**
|
||||||
.getConsoleSender()
|
* register the command in the command manager class.
|
||||||
.sendMessage(
|
*/
|
||||||
colorComp(prefix + "<red>Server Stopped Successfully!</red>")
|
private void registerCommands() {
|
||||||
);
|
manager.getCommandManager().register();
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
Bukkit
|
||||||
* getter for the logger
|
.getConsoleSender()
|
||||||
* @return the plugin logger
|
.sendMessage(
|
||||||
*/
|
colorComp(prefix + "<green>Commands Registered!</green>")
|
||||||
public Logger getPluginLogger() {
|
);
|
||||||
return logger;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* getter for the bukkit's plugin manager
|
* register the events in the event manager class.
|
||||||
* @return plugin manager
|
*/
|
||||||
*/
|
private void registerEvents() {
|
||||||
public PluginManager getPm() {
|
manager.getListenerManager().register();
|
||||||
return pm;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
Bukkit
|
||||||
* return the instance which is launched.
|
.getConsoleSender()
|
||||||
* @return main instance
|
.sendMessage(
|
||||||
*/
|
colorComp(prefix + "<green>Events Registered!</green>")
|
||||||
public Raxen getPlugin() {
|
);
|
||||||
return plugin;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* getter for the raxen prefix
|
* Method when the server stops the plugin.
|
||||||
* @return string prefix
|
*/
|
||||||
*/
|
@Override
|
||||||
public static String getPrefix() {
|
public void onDisable() {
|
||||||
return prefix;
|
if (!loading) {
|
||||||
}
|
manager.getListenerManager().getServerPingEvent().setLoading(true);
|
||||||
|
Reload.kickAll();
|
||||||
|
|
||||||
/**
|
playerConfig.close();
|
||||||
* getter for the yml's player configs.
|
}
|
||||||
* @return player config instance
|
|
||||||
*/
|
|
||||||
public PlayerConfig getPlayerConfig() {
|
|
||||||
return playerConfig;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
// save tutorial state
|
||||||
* getter for an instance of the config utility class
|
|
||||||
* @return raxen's config
|
|
||||||
*/
|
|
||||||
public Config getConf() {
|
|
||||||
return config;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void disable() {
|
Bukkit
|
||||||
this.setEnabled(false);
|
.getConsoleSender()
|
||||||
}
|
.sendMessage(
|
||||||
|
colorComp(prefix + "<red>Server Stopped Successfully!</red>")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* getter for the logger
|
||||||
|
*
|
||||||
|
* @return the plugin logger
|
||||||
|
*/
|
||||||
|
public Logger getPluginLogger() {
|
||||||
|
return logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* getter for the bukkit's plugin manager
|
||||||
|
*
|
||||||
|
* @return plugin manager
|
||||||
|
*/
|
||||||
|
public PluginManager getPm() {
|
||||||
|
return pm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return the instance which is launched.
|
||||||
|
*
|
||||||
|
* @return main instance
|
||||||
|
*/
|
||||||
|
public Raxen getPlugin() {
|
||||||
|
return plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* getter for the raxen prefix
|
||||||
|
*
|
||||||
|
* @return string prefix
|
||||||
|
*/
|
||||||
|
public static String getPrefix() {
|
||||||
|
return prefix;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* getter for the yml's player configs.
|
||||||
|
*
|
||||||
|
* @return player config instance
|
||||||
|
*/
|
||||||
|
public PlayerConfig getPlayerConfig() {
|
||||||
|
return playerConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* getter for an instance of the config utility class
|
||||||
|
*
|
||||||
|
* @return raxen's config
|
||||||
|
*/
|
||||||
|
public Config getConf() {
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void disable() {
|
||||||
|
this.setEnabled(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
package me.unurled.raxen.commands;
|
package me.unurled.raxen.commands;
|
||||||
|
|
||||||
import static me.unurled.raxen.utils.Utils.*;
|
import static me.unurled.raxen.utils.Utils.colorComp;
|
||||||
|
import static me.unurled.raxen.utils.Utils.colorTextComp;
|
||||||
|
import static me.unurled.raxen.utils.Utils.coloredString;
|
||||||
|
import static me.unurled.raxen.utils.Utils.debug;
|
||||||
|
import static me.unurled.raxen.utils.Utils.msgPlayer;
|
||||||
|
import static me.unurled.raxen.utils.Utils.msgSender;
|
||||||
|
import static me.unurled.raxen.utils.Utils.stringToComp;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import me.unurled.raxen.Raxen;
|
import me.unurled.raxen.Raxen;
|
||||||
|
@ -16,207 +22,220 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class RaxenCommand implements TabExecutor {
|
public class RaxenCommand implements TabExecutor {
|
||||||
|
|
||||||
private Raxen main;
|
private Raxen main;
|
||||||
|
|
||||||
public RaxenCommand(Raxen main) {
|
public RaxenCommand(Raxen main) {
|
||||||
this.main = main;
|
this.main = main;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(
|
public boolean onCommand(
|
||||||
@NotNull CommandSender sender,
|
@NotNull CommandSender sender,
|
||||||
@NotNull Command cmd,
|
@NotNull Command cmd,
|
||||||
@NotNull String msg,
|
@NotNull String msg,
|
||||||
@NotNull String[] args
|
@NotNull String[] args
|
||||||
) {
|
) {
|
||||||
if (sender instanceof Player) {
|
if (sender instanceof Player) {
|
||||||
Player player = (Player) sender;
|
Player player = (Player) sender;
|
||||||
if (!(player.hasPermission("raxen."))) {
|
if (!(player.hasPermission("raxen."))) {
|
||||||
msgPlayer(
|
msgPlayer(
|
||||||
player,
|
player,
|
||||||
coloredString(Raxen.getPrefix()) +
|
coloredString(Raxen.getPrefix()) +
|
||||||
colorTextComp(
|
colorTextComp(
|
||||||
"<red>You can't execute this command. Insufficient permission."
|
"<red>You can't execute this command. Insufficient permission."
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
|
||||||
switch (args.length) {
|
|
||||||
case 0 -> msgPl(player, 0);
|
|
||||||
case 1 -> {
|
|
||||||
switch (args[0]) {
|
|
||||||
case "mongodb", "mongo", "MONGODB", "MONGO" -> {
|
|
||||||
//print info about connection
|
|
||||||
sender.sendMessage(
|
|
||||||
stringToComp(
|
|
||||||
Raxen.getPrefix() +
|
|
||||||
colorTextComp(
|
|
||||||
"<gold>Printing About Raxen's MongoDB connection..."
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
msgPlayer(
|
|
||||||
player,
|
|
||||||
coloredString(Raxen.getPrefix()) +
|
|
||||||
colorTextComp(
|
|
||||||
"<gold>---------------------------------------------"
|
|
||||||
)
|
|
||||||
);
|
|
||||||
msgPlayer(player, colorTextComp("<red>MONGO DB<white>"));
|
|
||||||
msgPlayer(
|
|
||||||
player,
|
|
||||||
StorageManager
|
|
||||||
.getMongodb()
|
|
||||||
.getMongoClient()
|
|
||||||
.getClusterDescription()
|
|
||||||
.toString()
|
|
||||||
);
|
|
||||||
msgPlayer(
|
|
||||||
player,
|
|
||||||
StorageManager.getMongodb().getMongoDatabase().getName()
|
|
||||||
);
|
|
||||||
msgPlayer(
|
|
||||||
player,
|
|
||||||
StorageManager
|
|
||||||
.getMongodb()
|
|
||||||
.getMongoCollection()
|
|
||||||
.getNamespace()
|
|
||||||
.toString()
|
|
||||||
);
|
|
||||||
msgPlayer(
|
|
||||||
player,
|
|
||||||
"<gold>---------------------------------------------"
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
case "v", "version", "ver" -> {
|
switch (args.length) {
|
||||||
msgPlayer(player, Raxen.getVersion());
|
case 0 -> msgPl(player, 0);
|
||||||
|
case 1 -> {
|
||||||
|
switch (args[0]) {
|
||||||
|
case "mongodb", "mongo", "MONGODB", "MONGO" -> {
|
||||||
|
//print info about connection
|
||||||
|
sender.sendMessage(
|
||||||
|
stringToComp(
|
||||||
|
Raxen.getPrefix() +
|
||||||
|
colorTextComp(
|
||||||
|
"<gold>Printing About Raxen's MongoDB connection..."
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
msgPlayer(
|
||||||
|
player,
|
||||||
|
coloredString(Raxen.getPrefix()) +
|
||||||
|
colorTextComp(
|
||||||
|
"<gold>---------------------------------------------"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
msgPlayer(
|
||||||
|
player,
|
||||||
|
colorTextComp("<red>MONGO DB<white>")
|
||||||
|
);
|
||||||
|
msgPlayer(
|
||||||
|
player,
|
||||||
|
StorageManager
|
||||||
|
.getMongodb()
|
||||||
|
.getMongoClient()
|
||||||
|
.getClusterDescription()
|
||||||
|
.toString()
|
||||||
|
);
|
||||||
|
msgPlayer(
|
||||||
|
player,
|
||||||
|
StorageManager
|
||||||
|
.getMongodb()
|
||||||
|
.getMongoDatabase()
|
||||||
|
.getName()
|
||||||
|
);
|
||||||
|
msgPlayer(
|
||||||
|
player,
|
||||||
|
StorageManager
|
||||||
|
.getMongodb()
|
||||||
|
.getMongoCollection()
|
||||||
|
.getNamespace()
|
||||||
|
.toString()
|
||||||
|
);
|
||||||
|
msgPlayer(
|
||||||
|
player,
|
||||||
|
"<gold>---------------------------------------------"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
case "v", "version", "ver" -> {
|
||||||
|
msgPlayer(player, Raxen.getVersion());
|
||||||
|
}
|
||||||
|
case "hemlp", "?", "h" -> {
|
||||||
|
//print help
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
case "hemlp", "?", "h" -> {
|
} else {
|
||||||
//print help
|
switch (args.length) {
|
||||||
|
case 0 -> {
|
||||||
|
msgSender(
|
||||||
|
sender,
|
||||||
|
Raxen.getPrefix() + "<gold>Printing About Raxen...",
|
||||||
|
"<gold>---------------------------------------------",
|
||||||
|
"<dark_aqua> Raxen ",
|
||||||
|
"<dark_aqua> - Version: " + Raxen.getVersion(),
|
||||||
|
"<dark_aqua> - Author: <b><red>U<gold>n<yellow>u<dark_green>r<green>l<aqua>e<dark_aqua>d<reset>"
|
||||||
|
);
|
||||||
|
TextComponent txt = colorTextComp(
|
||||||
|
"<dark_aqua> - Website: https://unurled.me"
|
||||||
|
);
|
||||||
|
sender.sendMessage(txt);
|
||||||
|
sender.sendMessage(
|
||||||
|
colorComp(
|
||||||
|
"<gold>---------------------------------------------"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
case 1 -> {
|
||||||
|
switch (args[0]) {
|
||||||
|
case "mongodb", "mongo", "MONGODB", "MONGO" -> {
|
||||||
|
//print info about connection
|
||||||
|
msgSender(
|
||||||
|
sender,
|
||||||
|
Raxen.getPrefix() +
|
||||||
|
"<gold>Printing About Raxen's MongoDB connection...",
|
||||||
|
"<gold>---------------------------------------------" +
|
||||||
|
"<red>MONGO DB"
|
||||||
|
);
|
||||||
|
sender.sendMessage(
|
||||||
|
stringToComp(
|
||||||
|
StorageManager
|
||||||
|
.getMongodb()
|
||||||
|
.getMongoClient()
|
||||||
|
.getClusterDescription()
|
||||||
|
.toString()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
sender.sendMessage(
|
||||||
|
stringToComp(
|
||||||
|
StorageManager
|
||||||
|
.getMongodb()
|
||||||
|
.getMongoDatabase()
|
||||||
|
.getName()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
sender.sendMessage(
|
||||||
|
stringToComp(
|
||||||
|
StorageManager
|
||||||
|
.getMongodb()
|
||||||
|
.getMongoCollection()
|
||||||
|
.getNamespace()
|
||||||
|
.toString()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
sender.sendMessage(
|
||||||
|
stringToComp(
|
||||||
|
coloredString(
|
||||||
|
"<gold>---------------------------------------------"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
case "v", "version", "ver" -> {
|
||||||
|
msgSender(
|
||||||
|
sender,
|
||||||
|
Raxen.getPrefix() +
|
||||||
|
"<gold>Printing About Raxen...",
|
||||||
|
"<gold>---------------------------------------------",
|
||||||
|
"<dark_aqua> Raxen ",
|
||||||
|
"<dark_aqua> - Version: " + Raxen.getVersion(),
|
||||||
|
"<dark_aqua> - Author: <b><red>U<gold>n&eu<dark_green>r<green>l<aqua>e<dark_aqua>d<reset>"
|
||||||
|
);
|
||||||
|
TextComponent txt = colorTextComp(
|
||||||
|
"<dark_aqua> - Website: https://unurled.me"
|
||||||
|
);
|
||||||
|
sender.sendMessage(txt);
|
||||||
|
sender.sendMessage(
|
||||||
|
colorComp(
|
||||||
|
"<gold>---------------------------------------------"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
case "hemlp", "?", "h" -> debug(main, "print help"); //print help
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
return false;
|
||||||
} else {
|
}
|
||||||
switch (args.length) {
|
|
||||||
case 0 -> {
|
public void msgPl(Player player, Integer in) {
|
||||||
msgSender(
|
switch (in) {
|
||||||
sender,
|
case 0:
|
||||||
Raxen.getPrefix() + "<gold>Printing About Raxen...",
|
msgPlayer(
|
||||||
"<gold>---------------------------------------------",
|
player,
|
||||||
"<dark_aqua> Raxen ",
|
Raxen.getPrefix() + "<gold>Printing About Raxen...",
|
||||||
"<dark_aqua> - Version: " + Raxen.getVersion(),
|
"<gold>---------------------------------------------",
|
||||||
"<dark_aqua> - Author: <b><red>U<gold>n<yellow>u<dark_green>r<green>l<aqua>e<dark_aqua>d<reset>"
|
"<dark_aqua> Raxen ",
|
||||||
);
|
"<dark_aqua> - Version: " + Raxen.getVersion(),
|
||||||
TextComponent txt = colorTextComp(
|
"<dark_aqua> - Author: <b><red>U<gold>n&eu<dark_green>r<green>l<aqua>e<dark_aqua>d<reset>"
|
||||||
"<dark_aqua> - Website: https://unurled.me"
|
);
|
||||||
);
|
TextComponent txt = (TextComponent) colorComp(
|
||||||
sender.sendMessage(txt);
|
"<dark_aqua> - Website: https://unurled.me"
|
||||||
sender.sendMessage(
|
|
||||||
colorComp("<gold>---------------------------------------------")
|
|
||||||
);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
case 1 -> {
|
|
||||||
switch (args[0]) {
|
|
||||||
case "mongodb", "mongo", "MONGODB", "MONGO" -> {
|
|
||||||
//print info about connection
|
|
||||||
msgSender(
|
|
||||||
sender,
|
|
||||||
Raxen.getPrefix() +
|
|
||||||
"<gold>Printing About Raxen's MongoDB connection...",
|
|
||||||
"<gold>---------------------------------------------" +
|
|
||||||
"<red>MONGO DB"
|
|
||||||
);
|
|
||||||
sender.sendMessage(
|
|
||||||
stringToComp(
|
|
||||||
StorageManager
|
|
||||||
.getMongodb()
|
|
||||||
.getMongoClient()
|
|
||||||
.getClusterDescription()
|
|
||||||
.toString()
|
|
||||||
)
|
)
|
||||||
);
|
.clickEvent(ClickEvent.openUrl("https://unurled.me"));
|
||||||
sender.sendMessage(
|
player.sendMessage(txt);
|
||||||
stringToComp(
|
msgPlayer(
|
||||||
StorageManager.getMongodb().getMongoDatabase().getName()
|
player,
|
||||||
)
|
"",
|
||||||
);
|
|
||||||
sender.sendMessage(
|
|
||||||
stringToComp(
|
|
||||||
StorageManager
|
|
||||||
.getMongodb()
|
|
||||||
.getMongoCollection()
|
|
||||||
.getNamespace()
|
|
||||||
.toString()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
sender.sendMessage(
|
|
||||||
stringToComp(
|
|
||||||
coloredString(
|
|
||||||
"<gold>---------------------------------------------"
|
"<gold>---------------------------------------------"
|
||||||
)
|
);
|
||||||
)
|
|
||||||
);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
case "v", "version", "ver" -> {
|
|
||||||
msgSender(
|
|
||||||
sender,
|
|
||||||
Raxen.getPrefix() + "<gold>Printing About Raxen...",
|
|
||||||
"<gold>---------------------------------------------",
|
|
||||||
"<dark_aqua> Raxen ",
|
|
||||||
"<dark_aqua> - Version: " + Raxen.getVersion(),
|
|
||||||
"<dark_aqua> - Author: <b><red>U<gold>n&eu<dark_green>r<green>l<aqua>e<dark_aqua>d<reset>"
|
|
||||||
);
|
|
||||||
TextComponent txt = colorTextComp(
|
|
||||||
"<dark_aqua> - Website: https://unurled.me"
|
|
||||||
);
|
|
||||||
sender.sendMessage(txt);
|
|
||||||
sender.sendMessage(
|
|
||||||
colorComp("<gold>---------------------------------------------")
|
|
||||||
);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
case "hemlp", "?", "h" -> //print help
|
|
||||||
debug(main, "print help");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void msgPl(Player player, Integer in) {
|
@Override
|
||||||
switch (in) {
|
public @Nullable List<String> onTabComplete(
|
||||||
case 0:
|
@NotNull CommandSender sender,
|
||||||
msgPlayer(
|
@NotNull Command command,
|
||||||
player,
|
@NotNull String alias,
|
||||||
Raxen.getPrefix() + "<gold>Printing About Raxen...",
|
@NotNull String[] args
|
||||||
"<gold>---------------------------------------------",
|
) {
|
||||||
"<dark_aqua> Raxen ",
|
return null;
|
||||||
"<dark_aqua> - Version: " + Raxen.getVersion(),
|
|
||||||
"<dark_aqua> - Author: <b><red>U<gold>n&eu<dark_green>r<green>l<aqua>e<dark_aqua>d<reset>"
|
|
||||||
);
|
|
||||||
TextComponent txt = (TextComponent) colorComp(
|
|
||||||
"<dark_aqua> - Website: https://unurled.me"
|
|
||||||
)
|
|
||||||
.clickEvent(ClickEvent.openUrl("https://unurled.me"));
|
|
||||||
player.sendMessage(txt);
|
|
||||||
msgPlayer(
|
|
||||||
player,
|
|
||||||
"",
|
|
||||||
"<gold>---------------------------------------------"
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public @Nullable List<String> onTabComplete(
|
|
||||||
@NotNull CommandSender sender,
|
|
||||||
@NotNull Command command,
|
|
||||||
@NotNull String alias,
|
|
||||||
@NotNull String[] args
|
|
||||||
) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
108
src/main/java/me/unurled/raxen/commands/admin/BuildCommand.java
Normal file
108
src/main/java/me/unurled/raxen/commands/admin/BuildCommand.java
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
package me.unurled.raxen.commands.admin;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import me.unurled.raxen.Raxen;
|
||||||
|
import me.unurled.raxen.utils.Utils;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabExecutor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
public class BuildCommand implements TabExecutor {
|
||||||
|
|
||||||
|
private Raxen raxen;
|
||||||
|
|
||||||
|
List<String> complete = new ArrayList<>();
|
||||||
|
|
||||||
|
public BuildCommand(Raxen raxen) {
|
||||||
|
this.raxen = raxen;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command,
|
||||||
|
@NotNull String label, @NotNull String[] args) {
|
||||||
|
if (!(sender instanceof Player)) {
|
||||||
|
Utils.errorConsoleSender(sender);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
Player p = (Player) sender;
|
||||||
|
if (args.length == 0) {
|
||||||
|
p.sendMessage(Utils.colorComp(
|
||||||
|
"<reset><yellow>/build [discard|edit|hide|list|on|remove|save|show|tp]"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (args.length == 1) {
|
||||||
|
switch (args[0]) {
|
||||||
|
case "discard":
|
||||||
|
p.sendMessage(Utils.colorComp("<reset><yellow>Discarded build!"));
|
||||||
|
return true;
|
||||||
|
case "edit":
|
||||||
|
p.sendMessage(Utils.colorComp("<reset><yellow>Editing build!"));
|
||||||
|
return true;
|
||||||
|
case "hide":
|
||||||
|
p.sendMessage(Utils.colorComp("<reset><yellow>Hiding build!"));
|
||||||
|
return true;
|
||||||
|
case "list":
|
||||||
|
p.sendMessage(Utils.colorComp("<reset><yellow>Listing builds!"));
|
||||||
|
return true;
|
||||||
|
case "on":
|
||||||
|
p.sendMessage(Utils.colorComp("<reset><yellow>Build mode enabled!"));
|
||||||
|
return true;
|
||||||
|
case "remove":
|
||||||
|
p.sendMessage(Utils.colorComp("<reset><yellow>Removed build!"));
|
||||||
|
return true;
|
||||||
|
case "save":
|
||||||
|
p.sendMessage(Utils.colorComp("<reset><yellow>Saved build!"));
|
||||||
|
return true;
|
||||||
|
case "show":
|
||||||
|
p.sendMessage(Utils.colorComp("<reset><yellow>Showing build!"));
|
||||||
|
return true;
|
||||||
|
case "tp":
|
||||||
|
p.sendMessage(Utils.colorComp("<reset><yellow>Teleporting to build!"));
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
p.sendMessage(Utils.colorComp(
|
||||||
|
"<reset><yellow>/build [discard|edit|hide|list|on|remove|save|show|tp]"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender,
|
||||||
|
@NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||||
|
if (complete.isEmpty()) {
|
||||||
|
complete.add("discard");
|
||||||
|
complete.add("edit");
|
||||||
|
complete.add("hide");
|
||||||
|
complete.add("list");
|
||||||
|
complete.add("on");
|
||||||
|
complete.add("remove");
|
||||||
|
complete.add("save");
|
||||||
|
complete.add("show");
|
||||||
|
complete.add("tp");
|
||||||
|
}
|
||||||
|
List<String> result = new ArrayList<>();
|
||||||
|
if (args.length == 1) {
|
||||||
|
for (String s : complete) {
|
||||||
|
if (s.toLowerCase().startsWith(args[0].toLowerCase())) {
|
||||||
|
result.add(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
} else if (args.length == 2) {
|
||||||
|
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||||
|
if (p.getName().toLowerCase().startsWith(args[1].toLowerCase())) {
|
||||||
|
result.add(p.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +1,10 @@
|
||||||
package me.unurled.raxen.commands.admin;
|
package me.unurled.raxen.commands.admin;
|
||||||
|
|
||||||
import static me.unurled.raxen.utils.Items.customModelData;
|
import static me.unurled.raxen.utils.Items.customModelData;
|
||||||
import static me.unurled.raxen.utils.Utils.*;
|
import static me.unurled.raxen.utils.Utils.colorComp;
|
||||||
|
import static me.unurled.raxen.utils.Utils.errorConsoleSender;
|
||||||
|
import static me.unurled.raxen.utils.Utils.isInt;
|
||||||
|
import static me.unurled.raxen.utils.Utils.noPerms;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
@ -19,104 +22,109 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class CustomModelDataCommand implements TabExecutor {
|
public class CustomModelDataCommand implements TabExecutor {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* change custom model data of an item
|
* change custom model data of an item
|
||||||
* @param sender Source of the command
|
*
|
||||||
* @param command Command which was executed
|
* @param sender Source of the command
|
||||||
* @param label Alias of the command which was used
|
* @param command Command which was executed
|
||||||
* @param args Passed command arguments
|
* @param label Alias of the command which was used
|
||||||
* @return
|
* @param args Passed command arguments
|
||||||
*/
|
* @return
|
||||||
@Override
|
*/
|
||||||
public boolean onCommand(
|
@Override
|
||||||
@NotNull CommandSender sender,
|
public boolean onCommand(
|
||||||
@NotNull Command command,
|
@NotNull CommandSender sender,
|
||||||
@NotNull String label,
|
@NotNull Command command,
|
||||||
@NotNull String[] args
|
@NotNull String label,
|
||||||
) {
|
@NotNull String[] args
|
||||||
if (!(sender instanceof Player)) {
|
) {
|
||||||
errorConsoleSender(sender);
|
if (!(sender instanceof Player)) {
|
||||||
return true;
|
errorConsoleSender(sender);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
Player p = (Player) sender;
|
||||||
|
if (!(p.hasPermission("raxen.custommodeldata.cmd"))) {
|
||||||
|
p.sendMessage(noPerms());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
ItemStack it = p.getInventory().getItemInMainHand();
|
||||||
|
if (args.length == 0) {
|
||||||
|
p.sendMessage(
|
||||||
|
colorComp(
|
||||||
|
"<gold>Usage: /custommodeldata <model-data-value> <item-name></gold>"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!(isInt(args[0]))) {
|
||||||
|
Material material = Material.getMaterial(args[1]);
|
||||||
|
if (material != null) {
|
||||||
|
it =
|
||||||
|
customModelData(
|
||||||
|
new ItemStack(material),
|
||||||
|
Integer.parseInt(args[0])
|
||||||
|
);
|
||||||
|
p.getInventory().setItemInMainHand(it);
|
||||||
|
p.updateInventory();
|
||||||
|
} else {
|
||||||
|
p.sendMessage(
|
||||||
|
colorComp(
|
||||||
|
"<red>Please specify a valid Item Name or a valid Integer.</red>"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (it != null && it.getType() != Material.AIR) { // check if player has an item in hand
|
||||||
|
// has item in hand applying the custom model data
|
||||||
|
it = customModelData(it, Integer.parseInt(args[0]));
|
||||||
|
p.getInventory().setItemInMainHand(it);
|
||||||
|
p.updateInventory();
|
||||||
|
} else {
|
||||||
|
p.sendMessage(
|
||||||
|
colorComp(
|
||||||
|
"<red>Get an item in hand please or specify an item</red>"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
p.sendMessage(
|
||||||
|
colorComp(
|
||||||
|
"<gold>Usage: /custommodeldata <model-data-value> <item-name></gold>"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
Player p = (Player) sender;
|
|
||||||
if (!(p.hasPermission("raxen.custommodeldata.cmd"))) {
|
|
||||||
p.sendMessage(noPerms());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
ItemStack it = p.getInventory().getItemInMainHand();
|
|
||||||
if (args.length == 0) {
|
|
||||||
p.sendMessage(
|
|
||||||
colorComp(
|
|
||||||
"<gold>Usage: /custommodeldata <model-data-value> <item-name></gold>"
|
|
||||||
)
|
|
||||||
);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (!(isInt(args[0]))) {
|
|
||||||
Material material = Material.getMaterial(args[1]);
|
|
||||||
if (material != null) {
|
|
||||||
it =
|
|
||||||
customModelData(new ItemStack(material), Integer.parseInt(args[0]));
|
|
||||||
p.getInventory().setItemInMainHand(it);
|
|
||||||
p.updateInventory();
|
|
||||||
} else {
|
|
||||||
p.sendMessage(
|
|
||||||
colorComp(
|
|
||||||
"<red>Please specify a valid Item Name or a valid Integer.</red>"
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (it != null && it.getType() != Material.AIR) { // check if player has an item in hand
|
|
||||||
// has item in hand applying the custom model data
|
|
||||||
it = customModelData(it, Integer.parseInt(args[0]));
|
|
||||||
p.getInventory().setItemInMainHand(it);
|
|
||||||
p.updateInventory();
|
|
||||||
} else {
|
|
||||||
p.sendMessage(
|
|
||||||
colorComp("<red>Get an item in hand please or specify an item</red>")
|
|
||||||
);
|
|
||||||
p.sendMessage(
|
|
||||||
colorComp(
|
|
||||||
"<gold>Usage: /custommodeldata <model-data-value> <item-name></gold>"
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param sender Source of the command. For players tab-completing a
|
* @param sender Source of the command. For players tab-completing a command inside of a
|
||||||
* command inside of a command block, this will be the player, not
|
* command block, this will be the player, not the command block.
|
||||||
* the command block.
|
* @param command Command which was executed
|
||||||
* @param command Command which was executed
|
* @param label Alias of the command which was used
|
||||||
* @param label Alias of the command which was used
|
* @param args The arguments passed to the command, including final partial argument to be
|
||||||
* @param args The arguments passed to the command, including final
|
* completed
|
||||||
* partial argument to be completed
|
* @return
|
||||||
* @return
|
*/
|
||||||
*/
|
@Override
|
||||||
@Override
|
public @Nullable List<String> onTabComplete(
|
||||||
public @Nullable List<String> onTabComplete(
|
@NotNull CommandSender sender,
|
||||||
@NotNull CommandSender sender,
|
@NotNull Command command,
|
||||||
@NotNull Command command,
|
@NotNull String label,
|
||||||
@NotNull String label,
|
@NotNull String[] args
|
||||||
@NotNull String[] args
|
) {
|
||||||
) {
|
final List<String> completions = new ArrayList<>();
|
||||||
final List<String> completions = new ArrayList<>();
|
|
||||||
|
|
||||||
List<String> SUB_COMMANDS = new ArrayList<>();
|
List<String> SUB_COMMANDS = new ArrayList<>();
|
||||||
|
|
||||||
if (!(isInt(args[0]))) {
|
if (!(isInt(args[0]))) {
|
||||||
return Arrays.asList("§c" + args[0]);
|
return Arrays.asList("§c" + args[0]);
|
||||||
|
}
|
||||||
|
if (args.length == 2) {
|
||||||
|
for (Material mat : Material.values()) {
|
||||||
|
SUB_COMMANDS.add(mat.name());
|
||||||
|
}
|
||||||
|
StringUtil.copyPartialMatches(args[1], SUB_COMMANDS, completions);
|
||||||
|
Collections.sort(completions);
|
||||||
|
}
|
||||||
|
return completions;
|
||||||
}
|
}
|
||||||
if (args.length == 2) {
|
|
||||||
for (Material mat : Material.values()) {
|
|
||||||
SUB_COMMANDS.add(mat.name());
|
|
||||||
}
|
|
||||||
StringUtil.copyPartialMatches(args[1], SUB_COMMANDS, completions);
|
|
||||||
Collections.sort(completions);
|
|
||||||
}
|
|
||||||
return completions;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,41 +9,41 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class EntitiyCommand implements TabExecutor {
|
public class EntitiyCommand implements TabExecutor {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the egg spawn of a custom entity :)
|
* Get the egg spawn of a custom entity :)
|
||||||
* @param sender Source of the command
|
* @param sender Source of the command
|
||||||
* @param command Command which was executed
|
* @param command Command which was executed
|
||||||
* @param label Alias of the command which was used
|
* @param label Alias of the command which was used
|
||||||
* @param args Passed command arguments
|
* @param args Passed command arguments
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(
|
public boolean onCommand(
|
||||||
@NotNull CommandSender sender,
|
@NotNull CommandSender sender,
|
||||||
@NotNull Command command,
|
@NotNull Command command,
|
||||||
@NotNull String label,
|
@NotNull String label,
|
||||||
@NotNull String[] args
|
@NotNull String[] args
|
||||||
) {
|
) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param sender Source of the command. For players tab-completing a
|
* @param sender Source of the command. For players tab-completing a
|
||||||
* command inside a command block, this will be the player, not
|
* command inside a command block, this will be the player, not
|
||||||
* the command block.
|
* the command block.
|
||||||
* @param command Command which was executed
|
* @param command Command which was executed
|
||||||
* @param label Alias of the command which was used
|
* @param label Alias of the command which was used
|
||||||
* @param args The arguments passed to the command, including final
|
* @param args The arguments passed to the command, including final
|
||||||
* partial argument to be completed
|
* partial argument to be completed
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public @Nullable List<String> onTabComplete(
|
public @Nullable List<String> onTabComplete(
|
||||||
@NotNull CommandSender sender,
|
@NotNull CommandSender sender,
|
||||||
@NotNull Command command,
|
@NotNull Command command,
|
||||||
@NotNull String label,
|
@NotNull String label,
|
||||||
@NotNull String[] args
|
@NotNull String[] args
|
||||||
) {
|
) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package me.unurled.raxen.commands.admin;
|
package me.unurled.raxen.commands.admin;
|
||||||
|
|
||||||
import static me.unurled.raxen.utils.Utils.*;
|
import static me.unurled.raxen.utils.Utils.colorString;
|
||||||
|
import static me.unurled.raxen.utils.Utils.log;
|
||||||
|
import static me.unurled.raxen.utils.Utils.msgPlayer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
@ -15,49 +17,56 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class ItemListCommand implements TabExecutor {
|
public class ItemListCommand implements TabExecutor {
|
||||||
|
|
||||||
private Raxen main;
|
private Raxen main;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private ItemListGui itemListGui;
|
private ItemListGui itemListGui;
|
||||||
|
|
||||||
public ItemListCommand(Raxen main) {
|
public ItemListCommand(Raxen main) {
|
||||||
this.main = main;
|
this.main = main;
|
||||||
this.itemListGui = new ItemListGui(this.main);
|
this.itemListGui = new ItemListGui(this.main);
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onCommand(
|
|
||||||
@NotNull CommandSender sender,
|
|
||||||
@NotNull Command cmd,
|
|
||||||
@NotNull String msg,
|
|
||||||
@NotNull String[] args
|
|
||||||
) {
|
|
||||||
if (!(sender instanceof Player)) {
|
|
||||||
log("Console can't execute this command atm.");
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
Player player = (Player) sender;
|
|
||||||
if (!(player.hasPermission("raxen.itemlist.cmd"))) {
|
|
||||||
msgPlayer(
|
|
||||||
player,
|
|
||||||
colorString(
|
|
||||||
"<red>You'dont have the permission to execute this command."
|
|
||||||
)
|
|
||||||
);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
//openGui logic
|
|
||||||
player.openInventory(itemListGui.getInv());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable List<String> onTabComplete(
|
public boolean onCommand(
|
||||||
@NotNull CommandSender sender,
|
@NotNull CommandSender sender,
|
||||||
@NotNull Command command,
|
@NotNull Command cmd,
|
||||||
@NotNull String alias,
|
@NotNull String msg,
|
||||||
@NotNull String[] args
|
@NotNull String[] args
|
||||||
) {
|
) {
|
||||||
return null;
|
if (!(sender instanceof Player)) {
|
||||||
}
|
log("Console can't execute this command atm.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
Player player = (Player) sender;
|
||||||
|
if (!(player.hasPermission("raxen.itemlist.cmd"))) {
|
||||||
|
msgPlayer(
|
||||||
|
player,
|
||||||
|
colorString(
|
||||||
|
"<red>You'dont have the permission to execute this command."
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
int page = 1;
|
||||||
|
if (args.length > 0) {
|
||||||
|
try {
|
||||||
|
page = Integer.parseInt(args[0]);
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//openGui logic
|
||||||
|
itemListGui.openInventory(player, page);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable List<String> onTabComplete(
|
||||||
|
@NotNull CommandSender sender,
|
||||||
|
@NotNull Command command,
|
||||||
|
@NotNull String alias,
|
||||||
|
@NotNull String[] args
|
||||||
|
) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
package me.unurled.raxen.commands.admin;
|
package me.unurled.raxen.commands.admin;
|
||||||
|
|
||||||
import static me.unurled.raxen.utils.Items.itemTo64;
|
import static me.unurled.raxen.utils.Items.itemTo64;
|
||||||
import static me.unurled.raxen.utils.Utils.*;
|
import static me.unurled.raxen.utils.Utils.errorConsoleSender;
|
||||||
|
import static me.unurled.raxen.utils.Utils.msgPlayer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
|
@ -13,46 +14,45 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class ItemTo64Command implements TabExecutor {
|
public class ItemTo64Command implements TabExecutor {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param sender Source of the command
|
* @param sender Source of the command
|
||||||
* @param command Command which was executed
|
* @param command Command which was executed
|
||||||
* @param label Alias of the command which was used
|
* @param label Alias of the command which was used
|
||||||
* @param args Passed command arguments
|
* @param args Passed command arguments
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(
|
public boolean onCommand(
|
||||||
@NotNull CommandSender sender,
|
@NotNull CommandSender sender,
|
||||||
@NotNull Command command,
|
@NotNull Command command,
|
||||||
@NotNull String label,
|
@NotNull String label,
|
||||||
@NotNull String[] args
|
@NotNull String[] args
|
||||||
) {
|
) {
|
||||||
if (sender instanceof Player p) {
|
if (sender instanceof Player p) {
|
||||||
msgPlayer(p, itemTo64(p.getInventory().getItemInMainHand()));
|
msgPlayer(p, itemTo64(p.getInventory().getItemInMainHand()));
|
||||||
} else {
|
} else {
|
||||||
errorConsoleSender(sender);
|
errorConsoleSender(sender);
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param sender Source of the command. For players tab-completing a
|
* @param sender Source of the command. For players tab-completing a command inside of a
|
||||||
* command inside of a command block, this will be the player, not
|
* command block, this will be the player, not the command block.
|
||||||
* the command block.
|
* @param command Command which was executed
|
||||||
* @param command Command which was executed
|
* @param label Alias of the command which was used
|
||||||
* @param label Alias of the command which was used
|
* @param args The arguments passed to the command, including final partial argument to be
|
||||||
* @param args The arguments passed to the command, including final
|
* completed
|
||||||
* partial argument to be completed
|
* @return
|
||||||
* @return
|
*/
|
||||||
*/
|
@Override
|
||||||
@Override
|
public @Nullable List<String> onTabComplete(
|
||||||
public @Nullable List<String> onTabComplete(
|
@NotNull CommandSender sender,
|
||||||
@NotNull CommandSender sender,
|
@NotNull Command command,
|
||||||
@NotNull Command command,
|
@NotNull String label,
|
||||||
@NotNull String label,
|
@NotNull String[] args
|
||||||
@NotNull String[] args
|
) {
|
||||||
) {
|
return null;
|
||||||
return null;
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
package me.unurled.raxen.commands.admin;
|
package me.unurled.raxen.commands.admin;
|
||||||
|
|
||||||
import static me.unurled.raxen.components.entity.player.PlayerUtils.updateSkills;
|
import static me.unurled.raxen.components.entity.player.PlayerUtils.updateSkills;
|
||||||
import static me.unurled.raxen.utils.Utils.*;
|
import static me.unurled.raxen.utils.Utils.colorString;
|
||||||
|
import static me.unurled.raxen.utils.Utils.colorTextComp;
|
||||||
|
import static me.unurled.raxen.utils.Utils.debug;
|
||||||
|
import static me.unurled.raxen.utils.Utils.error;
|
||||||
|
import static me.unurled.raxen.utils.Utils.msgPlayer;
|
||||||
|
|
||||||
import de.tr7zw.nbtapi.NBTItem;
|
import de.tr7zw.nbtapi.NBTItem;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -17,123 +21,136 @@ import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.TabExecutor;
|
import org.bukkit.command.TabExecutor;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class NbtCommand implements TabExecutor {
|
public class NbtCommand implements TabExecutor {
|
||||||
|
|
||||||
private final Raxen main;
|
private final Raxen main;
|
||||||
|
|
||||||
public NbtCommand(Raxen main) {
|
public NbtCommand(Raxen main) {
|
||||||
this.main = main;
|
this.main = main;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(
|
public boolean onCommand(
|
||||||
@NotNull CommandSender sender,
|
@NotNull CommandSender sender,
|
||||||
@NotNull Command cmd,
|
@NotNull Command cmd,
|
||||||
@NotNull String msg,
|
@NotNull String msg,
|
||||||
@NotNull String[] args
|
@NotNull String[] args
|
||||||
) {
|
) {
|
||||||
if (!(sender instanceof Player player)) {
|
if (!(sender instanceof Player player)) {
|
||||||
error(
|
error(
|
||||||
(Raxen) Bukkit.getPluginManager().getPlugin("Raxen"),
|
(Raxen) Bukkit.getPluginManager().getPlugin("Raxen"),
|
||||||
colorString("<red>You can't execute this command as the Console!")
|
colorString(
|
||||||
);
|
"<red>You can't execute this command as the Console!"
|
||||||
return true;
|
)
|
||||||
}
|
);
|
||||||
if (player.getInventory().getItemInMainHand().getType() == Material.AIR) {
|
return true;
|
||||||
msgPlayer(player, colorTextComp("<red>You must hold an Item in hand."));
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
player.getInventory().getItemInMainHand();
|
|
||||||
}
|
|
||||||
switch (args.length) {
|
|
||||||
case 0, 1 -> msgPlayer(
|
|
||||||
player,
|
|
||||||
colorTextComp("<red>You must specify an nbt and an int.")
|
|
||||||
);
|
|
||||||
case 2 -> {
|
|
||||||
debug("'" + args[0] + "'", "'" + args[1] + "'");
|
|
||||||
ItemStack it = player.getInventory().getItemInMainHand();
|
|
||||||
NBTItem nbti = new NBTItem(it);
|
|
||||||
int a = 0;
|
|
||||||
if (nbti.hasTag(args[0])) {
|
|
||||||
a = nbti.getInteger(args[0]);
|
|
||||||
}
|
}
|
||||||
List<Component> lore = new ArrayList<>();
|
if (
|
||||||
// ItemMeta itm = it.getItemMeta();
|
player.getInventory().getItemInMainHand().getType() == Material.AIR
|
||||||
// lore.add((Component) itm.lore());
|
) {
|
||||||
boolean yes = false;
|
msgPlayer(
|
||||||
boolean ever = false;
|
player,
|
||||||
for (Component ct : lore) {
|
colorTextComp("<red>You must hold an Item in hand.")
|
||||||
if (ct != null) {
|
);
|
||||||
if (ct.contains(Component.text("Attributes:"))) {
|
return true;
|
||||||
yes = true;
|
} else {
|
||||||
ever = true;
|
player.getInventory().getItemInMainHand();
|
||||||
} else {
|
}
|
||||||
if (yes) {
|
switch (args.length) {
|
||||||
//ct.append(Component.text(colorString(attributes(args[0]) + ": " + (Integer.parseInt(args[1]) + a)))); deprecated
|
case 0, 1 -> msgPlayer(
|
||||||
yes = false;
|
player,
|
||||||
}
|
colorTextComp("<red>You must specify an nbt and an int.")
|
||||||
|
);
|
||||||
|
case 2 -> {
|
||||||
|
debug("'" + args[0] + "'", "'" + args[1] + "'");
|
||||||
|
ItemStack it = player.getInventory().getItemInMainHand();
|
||||||
|
NBTItem nbti = new NBTItem(it);
|
||||||
|
String a = "";
|
||||||
|
if (nbti.hasTag(args[0])) {
|
||||||
|
a = nbti.getString(args[0]);
|
||||||
|
}
|
||||||
|
List<Component> lore = new ArrayList<>();
|
||||||
|
// ItemMeta itm = it.getItemMeta();
|
||||||
|
// lore.add((Component) itm.lore());
|
||||||
|
boolean yes = false;
|
||||||
|
boolean ever = false;
|
||||||
|
for (Component ct : lore) {
|
||||||
|
if (ct != null) {
|
||||||
|
if (ct.contains(Component.text("Attributes:"))) {
|
||||||
|
yes = true;
|
||||||
|
ever = true;
|
||||||
|
} else {
|
||||||
|
if (yes) {
|
||||||
|
//ct.append(Component.text(colorString(attributes(args[0]) + ": " + (Integer.parseInt(args[1]) + a)))); deprecated
|
||||||
|
yes = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!ever) {
|
||||||
|
lore.add(colorTextComp("<red>Attributes:"));
|
||||||
|
//lore.add(colorTextComp(attributes(args[0]) + ": " + (Integer.parseInt(args[1]) + a))); deprecated
|
||||||
|
}
|
||||||
|
// itm.lore(lore);
|
||||||
|
// it.setItemMeta(itm);
|
||||||
|
PlayerManager pm =
|
||||||
|
(
|
||||||
|
(Raxen) Objects.requireNonNull(
|
||||||
|
Bukkit.getPluginManager().getPlugin("Raxen")
|
||||||
|
)
|
||||||
|
).getManager()
|
||||||
|
.getPlayerManager();
|
||||||
|
try {
|
||||||
|
nbti.setInteger(
|
||||||
|
args[0],
|
||||||
|
Integer.parseInt(args[1]) + Integer.parseInt(a)
|
||||||
|
);
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
nbti.setString(args[0], args[1]);
|
||||||
|
}
|
||||||
|
if (nbti.hasTag("SPEED")) {
|
||||||
|
pm.getSpeed().add(player, nbti.getInteger("SPEED"));
|
||||||
|
}
|
||||||
|
if (nbti.hasTag("HEALTH")) {
|
||||||
|
pm.getHealth().add(player, nbti.getInteger("HEALTH"));
|
||||||
|
}
|
||||||
|
if (nbti.hasTag("DEFENSE")) {
|
||||||
|
pm.getDefense().add(player, nbti.getInteger("DEFENSE"));
|
||||||
|
}
|
||||||
|
if (nbti.hasTag("STRENGTH")) {
|
||||||
|
pm.getStrength().add(player, nbti.getInteger("STRENGTH"));
|
||||||
|
}
|
||||||
|
it = nbti.getItem();
|
||||||
|
msgPlayer(
|
||||||
|
player,
|
||||||
|
colorTextComp(
|
||||||
|
Raxen.getPrefix() +
|
||||||
|
"<white>You successfully added the nbt " +
|
||||||
|
/*attributes(args[0])*/args[0] +
|
||||||
|
"<white>with " +
|
||||||
|
args[1] +
|
||||||
|
"<white>."
|
||||||
|
)
|
||||||
|
);
|
||||||
|
updateSkills(main, player);
|
||||||
|
player
|
||||||
|
.getInventory()
|
||||||
|
.setItem(player.getInventory().getHeldItemSlot(), it);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (!ever) {
|
return true;
|
||||||
lore.add(colorTextComp("<red>Attributes:"));
|
|
||||||
//lore.add(colorTextComp(attributes(args[0]) + ": " + (Integer.parseInt(args[1]) + a))); deprecated
|
|
||||||
}
|
|
||||||
// itm.lore(lore);
|
|
||||||
// it.setItemMeta(itm);
|
|
||||||
PlayerManager pm =
|
|
||||||
(
|
|
||||||
(Raxen) Objects.requireNonNull(
|
|
||||||
Bukkit.getPluginManager().getPlugin("Raxen")
|
|
||||||
)
|
|
||||||
).getManager()
|
|
||||||
.getPlayerManager();
|
|
||||||
nbti.setInteger(args[0], Integer.parseInt(args[1]) + a);
|
|
||||||
if (nbti.hasTag("SPEED")) {
|
|
||||||
pm.getSpeed().add(player, nbti.getInteger("SPEED"));
|
|
||||||
}
|
|
||||||
if (nbti.hasTag("HEALTH")) {
|
|
||||||
pm.getHealth().add(player, nbti.getInteger("HEALTH"));
|
|
||||||
}
|
|
||||||
if (nbti.hasTag("DEFENSE")) {
|
|
||||||
pm.getDefense().add(player, nbti.getInteger("DEFENSE"));
|
|
||||||
}
|
|
||||||
if (nbti.hasTag("STRENGTH")) {
|
|
||||||
pm.getStrength().add(player, nbti.getInteger("STRENGTH"));
|
|
||||||
}
|
|
||||||
it = nbti.getItem();
|
|
||||||
msgPlayer(
|
|
||||||
player,
|
|
||||||
colorTextComp(
|
|
||||||
Raxen.getPrefix() +
|
|
||||||
"<white>You successfully added the nbt " +
|
|
||||||
/*attributes(args[0])*/args[0] +
|
|
||||||
"<white>with " +
|
|
||||||
args[1] +
|
|
||||||
"<white>."
|
|
||||||
)
|
|
||||||
);
|
|
||||||
updateSkills(main, player);
|
|
||||||
player
|
|
||||||
.getInventory()
|
|
||||||
.setItem(player.getInventory().getHeldItemSlot(), it);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable List<String> onTabComplete(
|
public @Nullable List<String> onTabComplete(
|
||||||
@NotNull CommandSender sender,
|
@NotNull CommandSender sender,
|
||||||
@NotNull Command command,
|
@NotNull Command command,
|
||||||
@NotNull String alias,
|
@NotNull String alias,
|
||||||
@NotNull String[] args
|
@NotNull String[] args
|
||||||
) {
|
) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package me.unurled.raxen.commands.admin;
|
package me.unurled.raxen.commands.admin;
|
||||||
|
|
||||||
import static me.unurled.raxen.utils.Utils.*;
|
import static me.unurled.raxen.utils.Utils.colorString;
|
||||||
|
import static me.unurled.raxen.utils.Utils.log;
|
||||||
|
import static me.unurled.raxen.utils.Utils.noPerms;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import me.unurled.raxen.utils.Reload;
|
import me.unurled.raxen.utils.Reload;
|
||||||
|
@ -9,42 +11,48 @@ import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.TabExecutor;
|
import org.bukkit.command.TabExecutor;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class ReloadCommand implements TabExecutor {
|
public class ReloadCommand implements TabExecutor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(
|
public boolean onCommand(
|
||||||
@NotNull CommandSender sender,
|
@NotNull CommandSender sender,
|
||||||
@NotNull Command command,
|
@NotNull Command command,
|
||||||
@NotNull String msg,
|
@NotNull String msg,
|
||||||
@NotNull String[] args
|
@NotNull String[] args
|
||||||
) {
|
) {
|
||||||
if (sender instanceof Player) {
|
if (sender instanceof Player) {
|
||||||
Player player = (Player) sender;
|
Player player = (Player) sender;
|
||||||
if (!player.hasPermission("raxen.reload.cmd")) {
|
if (!player.hasPermission("raxen.reload.cmd")) {
|
||||||
player.sendMessage(noPerms());
|
player.sendMessage(noPerms());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
Reload.kickAll();
|
||||||
|
log(
|
||||||
|
colorString(
|
||||||
|
"<red>Server stopping!\n Using: /rlpl.\n Please wait a little bit."
|
||||||
|
)
|
||||||
|
);
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Bukkit.getServer().shutdown();
|
||||||
|
}
|
||||||
|
}.runTaskLater(Bukkit.getPluginManager().getPlugin("Raxen"), 80L);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
Reload.kickAll();
|
|
||||||
log(
|
|
||||||
colorString(
|
|
||||||
"<red>Server stopping!\n Using: /rlpl.\n Please wait a little bit."
|
|
||||||
)
|
|
||||||
);
|
|
||||||
Bukkit.getServer().shutdown();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable List<String> onTabComplete(
|
public @Nullable List<String> onTabComplete(
|
||||||
@NotNull CommandSender sender,
|
@NotNull CommandSender sender,
|
||||||
@NotNull Command command,
|
@NotNull Command command,
|
||||||
@NotNull String alias,
|
@NotNull String alias,
|
||||||
@NotNull String[] args
|
@NotNull String[] args
|
||||||
) {
|
) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,17 @@
|
||||||
package me.unurled.raxen.commands.admin;
|
package me.unurled.raxen.commands.admin;
|
||||||
|
|
||||||
import static me.unurled.raxen.components.entity.other.EntityUtils.setNameSpacedKeys;
|
|
||||||
import static me.unurled.raxen.utils.Items.itemFrom64;
|
import static me.unurled.raxen.utils.Items.itemFrom64;
|
||||||
import static me.unurled.raxen.utils.Utils.*;
|
import static me.unurled.raxen.utils.Utils.colorTextComp;
|
||||||
|
import static me.unurled.raxen.utils.Utils.error;
|
||||||
|
import static me.unurled.raxen.utils.Utils.getStringFromArg;
|
||||||
|
import static me.unurled.raxen.utils.Utils.log;
|
||||||
|
import static me.unurled.raxen.utils.Utils.noPerms;
|
||||||
|
import static me.unurled.raxen.utils.Utils.setNullInArgs;
|
||||||
|
import static me.unurled.raxen.utils.Utils.validateArgs;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
|
||||||
import me.unurled.raxen.Raxen;
|
import me.unurled.raxen.Raxen;
|
||||||
import me.unurled.raxen.components.entity.other.EntityNamespacedKey;
|
import me.unurled.raxen.components.entity.other.EntityNamespacedKey;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
@ -26,187 +30,190 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class SpawnEntity implements TabExecutor {
|
public class SpawnEntity implements TabExecutor {
|
||||||
|
|
||||||
private Raxen main;
|
private Raxen main;
|
||||||
private EntityNamespacedKey namespacedKey;
|
private EntityNamespacedKey namespacedKey;
|
||||||
|
|
||||||
public SpawnEntity(Raxen main) {
|
public SpawnEntity(Raxen main) {
|
||||||
this.main = main;
|
this.main = main;
|
||||||
this.namespacedKey = new EntityNamespacedKey(main);
|
this.namespacedKey = new EntityNamespacedKey(main);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(
|
public boolean onCommand(
|
||||||
@NotNull CommandSender sender,
|
@NotNull CommandSender sender,
|
||||||
@NotNull Command command,
|
@NotNull Command command,
|
||||||
@NotNull String label,
|
@NotNull String label,
|
||||||
@NotNull String[] args
|
@NotNull String[] args
|
||||||
) {
|
) {
|
||||||
if (!(sender instanceof Player)) {
|
if (!(sender instanceof Player)) {
|
||||||
log(colorTextComp("<red>Console can't execute this command!"));
|
log(colorTextComp("<red>Console can't execute this command!"));
|
||||||
try { // /entityspawn ZOMBIE "&cHello folks" x:0 y:0 z:0 level health defense speed strength itemStackBinary64: helmet, chestplate, leggings, boots, main-hand, off-hand
|
try { // /entityspawn ZOMBIE "&cHello folks" x:0 y:0 z:0 level health defense speed strength itemStackBinary64: helmet, chestplate, leggings, boots, main-hand, off-hand
|
||||||
if (validateArgs(args, 16)) {
|
if (validateArgs(args, 16)) {
|
||||||
args = setNullInArgs(args);
|
args = setNullInArgs(args);
|
||||||
} else {
|
} else {
|
||||||
log(
|
log(
|
||||||
colorTextComp(
|
colorTextComp(
|
||||||
"<red>Please use null if you don't want some parameters in the command.</red>"
|
"<red>Please use null if you don't want some parameters in the command.</red>"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
log(
|
log(
|
||||||
colorTextComp(
|
colorTextComp(
|
||||||
"<red>Follow this command: /entityspawn TYPE \"name\" x y z level health defense speed strength " +
|
"<red>Follow this command: /entityspawn TYPE \"name\" x y z level health defense speed strength "
|
||||||
"helmet(itemStackBinary64) chestplate(itemStackBinary64) leggings(itemStackBinary64) boots(itemStackBinary64) main-hand(itemStackBinary64) off-hand(itemStackBinary64)</red>"
|
+
|
||||||
)
|
"helmet(itemStackBinary64) chestplate(itemStackBinary64) leggings(itemStackBinary64) boots(itemStackBinary64) main-hand(itemStackBinary64) off-hand(itemStackBinary64)</red>"
|
||||||
);
|
)
|
||||||
return false;
|
);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
EntityType types = EntityType.valueOf(args[0]);
|
||||||
|
Location loc = new Location(
|
||||||
|
Bukkit.getWorld("world"),
|
||||||
|
Double.parseDouble(args[2]),
|
||||||
|
Double.parseDouble(args[3]),
|
||||||
|
Double.parseDouble(args[4])
|
||||||
|
);
|
||||||
|
Entity e = loc.getWorld().spawnEntity(loc, types, false);
|
||||||
|
/* setNameSpacedKeys(
|
||||||
|
e,
|
||||||
|
getStringFromArg(args),
|
||||||
|
Integer.parseInt(args[6]),
|
||||||
|
Integer.parseInt(args[7]),
|
||||||
|
0,
|
||||||
|
Integer.parseInt(args[8]),
|
||||||
|
0,
|
||||||
|
Integer.parseInt(args[9]),
|
||||||
|
0,
|
||||||
|
Integer.parseInt(args[10]),
|
||||||
|
0
|
||||||
|
); */
|
||||||
|
e.customName(colorTextComp(getStringFromArg(args)));
|
||||||
|
e.setCustomNameVisible(true);
|
||||||
|
if (e instanceof LivingEntity livingEntity) {
|
||||||
|
// livingEntity.getEquipment().set
|
||||||
|
ItemStack helmet = itemFrom64(args[11]);
|
||||||
|
ItemStack chestplate = itemFrom64(args[12]);
|
||||||
|
ItemStack leggins = itemFrom64(args[13]);
|
||||||
|
ItemStack boots = itemFrom64(args[14]);
|
||||||
|
ItemStack mainhand = itemFrom64(args[15]);
|
||||||
|
ItemStack offhand = itemFrom64(args[14]);
|
||||||
|
EntityEquipment equip = livingEntity.getEquipment();
|
||||||
|
equip.setHelmet(helmet);
|
||||||
|
equip.setChestplate(chestplate);
|
||||||
|
equip.setLeggings(leggins);
|
||||||
|
equip.setBoots(boots);
|
||||||
|
equip.setItemInMainHand(mainhand);
|
||||||
|
equip.setItemInOffHand(offhand);
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println(e.getName());
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
error("Something happened near the SpawnEntity command.");
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
} catch (IOException e) {
|
||||||
|
error(
|
||||||
|
"Could not deserialize item from the command EntitySpawn (command launched by "
|
||||||
|
+
|
||||||
|
sender.getName() +
|
||||||
|
")"
|
||||||
|
);
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (String arg : args) {
|
||||||
|
log(arg);
|
||||||
|
}
|
||||||
|
Player player = (Player) sender;
|
||||||
|
if (!player.hasPermission("raxen.entityspawn.cmd")) {
|
||||||
|
player.sendMessage(noPerms());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
try { // /entityspawn ZOMBIE "&cHello folks" x:0 y:0 z:0 level health defense speed strength itemStackBinary64: helmet, chestplate, leggings, boots, main-hand, off-hand
|
||||||
|
if (validateArgs(args, 16)) {
|
||||||
|
args = setNullInArgs(args);
|
||||||
|
} else {
|
||||||
|
log(
|
||||||
|
colorTextComp(
|
||||||
|
"<red>Please use null if you don't want some parameters in the command.</red>"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
log(
|
||||||
|
colorTextComp(
|
||||||
|
"<red>Follow this command: /entityspawn TYPE \"name\" x y z level health defense speed strength "
|
||||||
|
+
|
||||||
|
"helmet(itemStackBinary64) chestplate(itemStackBinary64) leggings(itemStackBinary64) boots(itemStackBinary64) main-hand(itemStackBinary64) off-hand(itemStackBinary64)</red>"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
EntityType types = EntityType.valueOf(args[0]);
|
||||||
|
Location loc = new Location(
|
||||||
|
Bukkit.getWorld("world"),
|
||||||
|
Double.parseDouble(args[2]),
|
||||||
|
Double.parseDouble(args[3]),
|
||||||
|
Double.parseDouble(args[4])
|
||||||
|
);
|
||||||
|
Entity e = loc.getWorld().spawnEntity(loc, types, false);
|
||||||
|
/* setNameSpacedKeys(
|
||||||
|
e,
|
||||||
|
getStringFromArg(args),
|
||||||
|
Integer.parseInt(args[6]),
|
||||||
|
Integer.parseInt(args[7]),
|
||||||
|
0,
|
||||||
|
Integer.parseInt(args[8]),
|
||||||
|
0,
|
||||||
|
Integer.parseInt(args[9]),
|
||||||
|
0,
|
||||||
|
Integer.parseInt(args[10]),
|
||||||
|
0
|
||||||
|
); */
|
||||||
|
e.customName(colorTextComp(getStringFromArg(args)));
|
||||||
|
e.setCustomNameVisible(true);
|
||||||
|
if (e instanceof LivingEntity livingEntity) {
|
||||||
|
// livingEntity.getEquipment().set
|
||||||
|
ItemStack helmet = itemFrom64(args[11]);
|
||||||
|
ItemStack chestplate = itemFrom64(args[12]);
|
||||||
|
ItemStack leggins = itemFrom64(args[13]);
|
||||||
|
ItemStack boots = itemFrom64(args[14]);
|
||||||
|
ItemStack mainhand = itemFrom64(args[15]);
|
||||||
|
ItemStack offhand = itemFrom64(args[14]);
|
||||||
|
EntityEquipment equip = livingEntity.getEquipment();
|
||||||
|
equip.setHelmet(helmet);
|
||||||
|
equip.setChestplate(chestplate);
|
||||||
|
equip.setLeggings(leggins);
|
||||||
|
equip.setBoots(boots);
|
||||||
|
equip.setItemInMainHand(mainhand);
|
||||||
|
equip.setItemInOffHand(offhand);
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println(e.getName());
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
error("Something happened near the SpawnEntity command.");
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
} catch (IOException e) {
|
||||||
|
error(
|
||||||
|
"Could not deserialize item from the command EntitySpawn (command launched by " +
|
||||||
|
sender.getName() +
|
||||||
|
")"
|
||||||
|
);
|
||||||
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
EntityType types = EntityType.valueOf(args[0]);
|
|
||||||
Location loc = new Location(
|
|
||||||
Bukkit.getWorld("world"),
|
|
||||||
Double.parseDouble(args[2]),
|
|
||||||
Double.parseDouble(args[3]),
|
|
||||||
Double.parseDouble(args[4])
|
|
||||||
);
|
|
||||||
Entity e = loc.getWorld().spawnEntity(loc, types, false);
|
|
||||||
setNameSpacedKeys(
|
|
||||||
e,
|
|
||||||
getStringFromArg(args),
|
|
||||||
Integer.parseInt(args[6]),
|
|
||||||
Integer.parseInt(args[7]),
|
|
||||||
0,
|
|
||||||
Integer.parseInt(args[8]),
|
|
||||||
0,
|
|
||||||
Integer.parseInt(args[9]),
|
|
||||||
0,
|
|
||||||
Integer.parseInt(args[10]),
|
|
||||||
0
|
|
||||||
);
|
|
||||||
e.customName(colorTextComp(getStringFromArg(args)));
|
|
||||||
e.setCustomNameVisible(true);
|
|
||||||
if (e instanceof LivingEntity livingEntity) {
|
|
||||||
// livingEntity.getEquipment().set
|
|
||||||
ItemStack helmet = itemFrom64(args[11]);
|
|
||||||
ItemStack chestplate = itemFrom64(args[12]);
|
|
||||||
ItemStack leggins = itemFrom64(args[13]);
|
|
||||||
ItemStack boots = itemFrom64(args[14]);
|
|
||||||
ItemStack mainhand = itemFrom64(args[15]);
|
|
||||||
ItemStack offhand = itemFrom64(args[14]);
|
|
||||||
EntityEquipment equip = livingEntity.getEquipment();
|
|
||||||
equip.setHelmet(helmet);
|
|
||||||
equip.setChestplate(chestplate);
|
|
||||||
equip.setLeggings(leggins);
|
|
||||||
equip.setBoots(boots);
|
|
||||||
equip.setItemInMainHand(mainhand);
|
|
||||||
equip.setItemInOffHand(offhand);
|
|
||||||
}
|
|
||||||
|
|
||||||
System.out.println(e.getName());
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
error("Something happened near the SpawnEntity command.");
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
} catch (IOException e) {
|
|
||||||
error(
|
|
||||||
"Could not deserialize item from the command EntitySpawn (command launched by " +
|
|
||||||
sender.getName() +
|
|
||||||
")"
|
|
||||||
);
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (String arg : args) {
|
|
||||||
log(arg);
|
|
||||||
}
|
|
||||||
Player player = (Player) sender;
|
|
||||||
if (!player.hasPermission("raxen.entityspawn.cmd")) {
|
|
||||||
player.sendMessage(noPerms());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
try { // /entityspawn ZOMBIE "&cHello folks" x:0 y:0 z:0 level health defense speed strength itemStackBinary64: helmet, chestplate, leggings, boots, main-hand, off-hand
|
|
||||||
if (validateArgs(args, 16)) {
|
|
||||||
args = setNullInArgs(args);
|
|
||||||
} else {
|
|
||||||
log(
|
|
||||||
colorTextComp(
|
|
||||||
"<red>Please use null if you don't want some parameters in the command.</red>"
|
|
||||||
)
|
|
||||||
);
|
|
||||||
log(
|
|
||||||
colorTextComp(
|
|
||||||
"<red>Follow this command: /entityspawn TYPE \"name\" x y z level health defense speed strength " +
|
|
||||||
"helmet(itemStackBinary64) chestplate(itemStackBinary64) leggings(itemStackBinary64) boots(itemStackBinary64) main-hand(itemStackBinary64) off-hand(itemStackBinary64)</red>"
|
|
||||||
)
|
|
||||||
);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
EntityType types = EntityType.valueOf(args[0]);
|
|
||||||
Location loc = new Location(
|
|
||||||
Bukkit.getWorld("world"),
|
|
||||||
Double.parseDouble(args[2]),
|
|
||||||
Double.parseDouble(args[3]),
|
|
||||||
Double.parseDouble(args[4])
|
|
||||||
);
|
|
||||||
Entity e = loc.getWorld().spawnEntity(loc, types, false);
|
|
||||||
setNameSpacedKeys(
|
|
||||||
e,
|
|
||||||
getStringFromArg(args),
|
|
||||||
Integer.parseInt(args[6]),
|
|
||||||
Integer.parseInt(args[7]),
|
|
||||||
0,
|
|
||||||
Integer.parseInt(args[8]),
|
|
||||||
0,
|
|
||||||
Integer.parseInt(args[9]),
|
|
||||||
0,
|
|
||||||
Integer.parseInt(args[10]),
|
|
||||||
0
|
|
||||||
);
|
|
||||||
e.customName(colorTextComp(getStringFromArg(args)));
|
|
||||||
e.setCustomNameVisible(true);
|
|
||||||
if (e instanceof LivingEntity livingEntity) {
|
|
||||||
// livingEntity.getEquipment().set
|
|
||||||
ItemStack helmet = itemFrom64(args[11]);
|
|
||||||
ItemStack chestplate = itemFrom64(args[12]);
|
|
||||||
ItemStack leggins = itemFrom64(args[13]);
|
|
||||||
ItemStack boots = itemFrom64(args[14]);
|
|
||||||
ItemStack mainhand = itemFrom64(args[15]);
|
|
||||||
ItemStack offhand = itemFrom64(args[14]);
|
|
||||||
EntityEquipment equip = livingEntity.getEquipment();
|
|
||||||
equip.setHelmet(helmet);
|
|
||||||
equip.setChestplate(chestplate);
|
|
||||||
equip.setLeggings(leggins);
|
|
||||||
equip.setBoots(boots);
|
|
||||||
equip.setItemInMainHand(mainhand);
|
|
||||||
equip.setItemInOffHand(offhand);
|
|
||||||
}
|
|
||||||
|
|
||||||
System.out.println(e.getName());
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
error("Something happened near the SpawnEntity command.");
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
} catch (IOException e) {
|
|
||||||
error(
|
|
||||||
"Could not deserialize item from the command EntitySpawn (command launched by " +
|
|
||||||
sender.getName() +
|
|
||||||
")"
|
|
||||||
);
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
@Override
|
||||||
}
|
public @Nullable List<String> onTabComplete(
|
||||||
|
@NotNull CommandSender sender,
|
||||||
@Override
|
@NotNull Command command,
|
||||||
public @Nullable List<String> onTabComplete(
|
@NotNull String alias,
|
||||||
@NotNull CommandSender sender,
|
@NotNull String[] args
|
||||||
@NotNull Command command,
|
) {
|
||||||
@NotNull String alias,
|
List<String> list = new ArrayList<>();
|
||||||
@NotNull String[] args
|
for (EntityType types : EntityType.values()) {
|
||||||
) {
|
list.add(types.name());
|
||||||
List<String> list = new ArrayList<>();
|
}
|
||||||
for (EntityType types : EntityType.values()) {
|
return list;
|
||||||
list.add(types.name());
|
|
||||||
}
|
}
|
||||||
return list;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,34 +14,34 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class TestGuiCommand implements TabExecutor {
|
public class TestGuiCommand implements TabExecutor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(
|
public boolean onCommand(
|
||||||
@NotNull CommandSender sender,
|
@NotNull CommandSender sender,
|
||||||
@NotNull Command command,
|
@NotNull Command command,
|
||||||
@NotNull String label,
|
@NotNull String label,
|
||||||
@NotNull String[] args
|
@NotNull String[] args
|
||||||
) {
|
) {
|
||||||
if (sender instanceof Player) {
|
if (sender instanceof Player) {
|
||||||
Player player = (Player) sender;
|
Player player = (Player) sender;
|
||||||
if (player.hasPermission("raxen.test.gui.cmd")) {
|
if (player.hasPermission("raxen.test.gui.cmd")) {
|
||||||
player.openInventory(
|
player.openInventory(
|
||||||
Bukkit.createInventory(null, 54, colorTextComp(args[0]))
|
Bukkit.createInventory(null, 54, colorTextComp(args[0]))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log("The console can't execute this Command!");
|
log("The console can't execute this Command!");
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable List<String> onTabComplete(
|
public @Nullable List<String> onTabComplete(
|
||||||
@NotNull CommandSender sender,
|
@NotNull CommandSender sender,
|
||||||
@NotNull Command command,
|
@NotNull Command command,
|
||||||
@NotNull String alias,
|
@NotNull String alias,
|
||||||
@NotNull String[] args
|
@NotNull String[] args
|
||||||
) {
|
) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,149 @@
|
||||||
|
package me.unurled.raxen.commands.admin;
|
||||||
|
|
||||||
|
import static me.unurled.raxen.utils.Utils.colorTextComp;
|
||||||
|
import static me.unurled.raxen.utils.Utils.msgPlayer;
|
||||||
|
import static me.unurled.raxen.utils.Utils.noPerms;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import me.unurled.raxen.Raxen;
|
||||||
|
import me.unurled.raxen.components.tutorial.Tutorial;
|
||||||
|
import me.unurled.raxen.manager.server.TutorialManager;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabExecutor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
public class TutorialManagerCommand implements TabExecutor {
|
||||||
|
|
||||||
|
Raxen main;
|
||||||
|
List<String> complete = new ArrayList<>();
|
||||||
|
|
||||||
|
public TutorialManagerCommand(Raxen main) {
|
||||||
|
this.main = main;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command,
|
||||||
|
@NotNull String label, @NotNull String[] args) {
|
||||||
|
if (!sender.hasPermission("raxen.tutorial.cmd")) {
|
||||||
|
sender.sendMessage(noPerms());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (args.length == 0) {
|
||||||
|
// help
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
TutorialManager tutorialManager = main.getManager().getTutorialManager();
|
||||||
|
if (args.length == 1) {
|
||||||
|
if (args[0].equalsIgnoreCase("start")) {
|
||||||
|
// start tutorial for sender (if sender is a player)
|
||||||
|
if (sender instanceof Player player) {
|
||||||
|
Location loc = tutorialManager
|
||||||
|
.generateTutorial(player);
|
||||||
|
tutorialManager.getTutorial(player.getUniqueId())
|
||||||
|
.startTutorial(player, loc);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if (sender instanceof Player player) {
|
||||||
|
if (args[0].equalsIgnoreCase("stop")) {
|
||||||
|
// stop tutorial for sender
|
||||||
|
tutorialManager.getTutorial(player.getUniqueId())
|
||||||
|
.stopTutorial();
|
||||||
|
tutorialManager.removeTutorial(player.getUniqueId());
|
||||||
|
return true;
|
||||||
|
} else if (args[0].equalsIgnoreCase("next")) {
|
||||||
|
// next step for sender
|
||||||
|
tutorialManager.getTutorial(player.getUniqueId())
|
||||||
|
.nextStep();
|
||||||
|
return true;
|
||||||
|
} else if (args[0].equalsIgnoreCase("prev")) {
|
||||||
|
// prev step for sender
|
||||||
|
tutorialManager.getTutorial(player.getUniqueId())
|
||||||
|
.previousStep();
|
||||||
|
return true;
|
||||||
|
} else if (args[0].equalsIgnoreCase("status")) {
|
||||||
|
// status of tutorial for sender
|
||||||
|
Tutorial tutorial = tutorialManager.getTutorial(player.getUniqueId());
|
||||||
|
msgPlayer(player, colorTextComp(
|
||||||
|
"<gray>Tutorial status for player " + player.getName() + ": <reset>"
|
||||||
|
+ tutorial.getStep()));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (args.length == 2) {
|
||||||
|
Player player = Bukkit.getPlayer(args[1]);
|
||||||
|
if (player != null) {
|
||||||
|
if (player.isOnline()) {
|
||||||
|
if (args[0].equalsIgnoreCase("start")) {
|
||||||
|
// start tutorial for player
|
||||||
|
Location loc = tutorialManager
|
||||||
|
.generateTutorial(player);
|
||||||
|
tutorialManager.getTutorial(player.getUniqueId())
|
||||||
|
.startTutorial(player, loc);
|
||||||
|
} else if (args[0].equalsIgnoreCase("stop")) {
|
||||||
|
// stop tutorial for sender
|
||||||
|
tutorialManager.getTutorial(player.getUniqueId())
|
||||||
|
.stopTutorial();
|
||||||
|
tutorialManager.removeTutorial(player.getUniqueId());
|
||||||
|
return true;
|
||||||
|
} else if (args[0].equalsIgnoreCase("next")) {
|
||||||
|
// next step for sender
|
||||||
|
tutorialManager.getTutorial(player.getUniqueId())
|
||||||
|
.nextStep();
|
||||||
|
return true;
|
||||||
|
} else if (args[0].equalsIgnoreCase("prev")) {
|
||||||
|
// prev step for sender
|
||||||
|
tutorialManager.getTutorial(player.getUniqueId())
|
||||||
|
.previousStep();
|
||||||
|
return true;
|
||||||
|
} else if (args[0].equalsIgnoreCase("status")) {
|
||||||
|
// status of tutorial for sender
|
||||||
|
Tutorial tutorial = tutorialManager.getTutorial(player.getUniqueId());
|
||||||
|
msgPlayer(player, colorTextComp(
|
||||||
|
"<gray>Tutorial status for player " + player.getName() + ": <reset>"
|
||||||
|
+ tutorial.getStep()));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender,
|
||||||
|
@NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||||
|
if (complete.isEmpty()) {
|
||||||
|
complete.add("start");
|
||||||
|
complete.add("stop");
|
||||||
|
complete.add("next");
|
||||||
|
complete.add("prev");
|
||||||
|
complete.add("status");
|
||||||
|
}
|
||||||
|
List<String> result = new ArrayList<>();
|
||||||
|
if (args.length == 1) {
|
||||||
|
for (String s : complete) {
|
||||||
|
if (s.toLowerCase().startsWith(args[0].toLowerCase())) {
|
||||||
|
result.add(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
} else if (args.length == 2) {
|
||||||
|
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||||
|
if (p.getName().toLowerCase().startsWith(args[1].toLowerCase())) {
|
||||||
|
result.add(p.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,64 +19,64 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class ClassCommand implements TabExecutor {
|
public class ClassCommand implements TabExecutor {
|
||||||
|
|
||||||
private Raxen main;
|
private Raxen main;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the Command to choose the class
|
* the Command to choose the class
|
||||||
* @param main
|
* @param main
|
||||||
*/
|
*/
|
||||||
public ClassCommand(Raxen main) {
|
public ClassCommand(Raxen main) {
|
||||||
this.main = main;
|
this.main = main;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onCommand(
|
|
||||||
@NotNull CommandSender sender,
|
|
||||||
@NotNull Command command,
|
|
||||||
@NotNull String label,
|
|
||||||
@NotNull String[] args
|
|
||||||
) {
|
|
||||||
if (!(sender instanceof Player)) {
|
|
||||||
error(
|
|
||||||
(Raxen) Bukkit.getPluginManager().getPlugin("Raxen"),
|
|
||||||
"The console can't execute this Command!"
|
|
||||||
);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
Player player = (Player) sender;
|
|
||||||
Inventory inv = Bukkit.createInventory(
|
@Override
|
||||||
null,
|
public boolean onCommand(
|
||||||
9,
|
@NotNull CommandSender sender,
|
||||||
colorTextComp("<grey>Choose your class</grey>")
|
@NotNull Command command,
|
||||||
);
|
@NotNull String label,
|
||||||
HashMap<String, Class> classes = main
|
@NotNull String[] args
|
||||||
.getManager()
|
) {
|
||||||
.getPlayerManager()
|
if (!(sender instanceof Player)) {
|
||||||
.getClasses();
|
error(
|
||||||
if (classes.size() > 10) {
|
(Raxen) Bukkit.getPluginManager().getPlugin("Raxen"),
|
||||||
if (classes.size() > 55) {
|
"The console can't execute this Command!"
|
||||||
inv =
|
);
|
||||||
Bukkit.createInventory(
|
return true;
|
||||||
|
}
|
||||||
|
Player player = (Player) sender;
|
||||||
|
Inventory inv = Bukkit.createInventory(
|
||||||
null,
|
null,
|
||||||
classes.size(),
|
9,
|
||||||
colorTextComp("<grey>Choose your class</grey>")
|
colorTextComp("<grey>Choose your class</grey>")
|
||||||
);
|
);
|
||||||
}
|
HashMap<String, Class> classes = main
|
||||||
|
.getManager()
|
||||||
|
.getPlayerManager()
|
||||||
|
.getClasses();
|
||||||
|
if (classes.size() > 10) {
|
||||||
|
if (classes.size() > 55) {
|
||||||
|
inv =
|
||||||
|
Bukkit.createInventory(
|
||||||
|
null,
|
||||||
|
classes.size(),
|
||||||
|
colorTextComp("<grey>Choose your class</grey>")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (Class clas : classes.values()) {
|
||||||
|
ItemStack item = clas.getPlaceHolder();
|
||||||
|
inv.addItem(item);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
for (Class clas : classes.values()) {
|
|
||||||
ItemStack item = clas.getPlaceHolder();
|
|
||||||
inv.addItem(item);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable List<String> onTabComplete(
|
public @Nullable List<String> onTabComplete(
|
||||||
@NotNull CommandSender sender,
|
@NotNull CommandSender sender,
|
||||||
@NotNull Command command,
|
@NotNull Command command,
|
||||||
@NotNull String alias,
|
@NotNull String alias,
|
||||||
@NotNull String[] args
|
@NotNull String[] args
|
||||||
) {
|
) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,57 +16,57 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class MainGuiCommand implements TabExecutor {
|
public class MainGuiCommand implements TabExecutor {
|
||||||
|
|
||||||
private Raxen main;
|
private Raxen main;
|
||||||
|
|
||||||
public MainGuiCommand(Raxen main) {
|
public MainGuiCommand(Raxen main) {
|
||||||
this.main = main;
|
this.main = main;
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param sender Source of the command
|
|
||||||
* @param command Command which was executed
|
|
||||||
* @param label Alias of the command which was used
|
|
||||||
* @param args Passed command arguments
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean onCommand(
|
|
||||||
@NotNull CommandSender sender,
|
|
||||||
@NotNull Command command,
|
|
||||||
@NotNull String label,
|
|
||||||
@NotNull String[] args
|
|
||||||
) {
|
|
||||||
if (!(sender instanceof Player)) {
|
|
||||||
errorConsoleSender(sender);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
Player p = (Player) sender;
|
|
||||||
if (!(p.hasPermission("raxen.maingui.cmd"))) {
|
|
||||||
sender.sendMessage(noPerms());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
Inventory inv = MainGui.build(p);
|
|
||||||
p.openInventory(inv);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param sender Source of the command. For players tab-completing a
|
* @param sender Source of the command
|
||||||
* command inside of a command block, this will be the player, not
|
* @param command Command which was executed
|
||||||
* the command block.
|
* @param label Alias of the command which was used
|
||||||
* @param command Command which was executed
|
* @param args Passed command arguments
|
||||||
* @param label Alias of the command which was used
|
* @return
|
||||||
* @param args The arguments passed to the command, including final
|
*/
|
||||||
* partial argument to be completed
|
@Override
|
||||||
* @return
|
public boolean onCommand(
|
||||||
*/
|
@NotNull CommandSender sender,
|
||||||
@Override
|
@NotNull Command command,
|
||||||
public @Nullable List<String> onTabComplete(
|
@NotNull String label,
|
||||||
@NotNull CommandSender sender,
|
@NotNull String[] args
|
||||||
@NotNull Command command,
|
) {
|
||||||
@NotNull String label,
|
if (!(sender instanceof Player)) {
|
||||||
@NotNull String[] args
|
errorConsoleSender(sender);
|
||||||
) {
|
return true;
|
||||||
return null;
|
}
|
||||||
}
|
Player p = (Player) sender;
|
||||||
|
if (!(p.hasPermission("raxen.maingui.cmd"))) {
|
||||||
|
sender.sendMessage(noPerms());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
Inventory inv = MainGui.build(p);
|
||||||
|
p.openInventory(inv);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param sender Source of the command. For players tab-completing a
|
||||||
|
* command inside of a command block, this will be the player, not
|
||||||
|
* the command block.
|
||||||
|
* @param command Command which was executed
|
||||||
|
* @param label Alias of the command which was used
|
||||||
|
* @param args The arguments passed to the command, including final
|
||||||
|
* partial argument to be completed
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public @Nullable List<String> onTabComplete(
|
||||||
|
@NotNull CommandSender sender,
|
||||||
|
@NotNull Command command,
|
||||||
|
@NotNull String label,
|
||||||
|
@NotNull String[] args
|
||||||
|
) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
224
src/main/java/me/unurled/raxen/commands/player/PartyCommand.java
Normal file
224
src/main/java/me/unurled/raxen/commands/player/PartyCommand.java
Normal file
|
@ -0,0 +1,224 @@
|
||||||
|
package me.unurled.raxen.commands.player;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import me.unurled.raxen.Raxen;
|
||||||
|
import me.unurled.raxen.components.entity.player.RaxenPlayer;
|
||||||
|
import me.unurled.raxen.utils.Utils;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabExecutor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
public class PartyCommand implements TabExecutor {
|
||||||
|
|
||||||
|
Raxen main;
|
||||||
|
|
||||||
|
List<String> complete = new ArrayList<>();
|
||||||
|
|
||||||
|
public PartyCommand(Raxen main) {
|
||||||
|
this.main = main;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command,
|
||||||
|
@NotNull String label, @NotNull String[] args) {
|
||||||
|
if (!(sender instanceof Player)) {
|
||||||
|
Utils.errorConsoleSender(sender);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
Player player = (Player) sender;
|
||||||
|
if (player.getWorld().getName().equalsIgnoreCase("tutorial")) {
|
||||||
|
player.sendMessage(Utils.colorComp(
|
||||||
|
"<grey>> <green>Sorry, you can't use this command in the tutorial!"));
|
||||||
|
player.sendMessage(Utils.colorComp(
|
||||||
|
"<grey>> <green>Please finish the tutorial first. Feel free to ask for help!"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
RaxenPlayer rx = main.getManager().getPlayerManager()
|
||||||
|
.getRaxenPlayer(player);
|
||||||
|
if (args.length == 0) {
|
||||||
|
player.sendMessage(
|
||||||
|
Utils.colorComp("<reset><yellow>/party help to view all infos on party"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (args[0].equalsIgnoreCase("help")) {
|
||||||
|
player.sendMessage(
|
||||||
|
Utils.colorComp("<reset><yellow>/party help to view all infos on party"));
|
||||||
|
player.sendMessage(Utils.colorComp("<reset><yellow>/party create to create a party"));
|
||||||
|
player.sendMessage(Utils.colorComp(
|
||||||
|
"<reset><yellow>/party invite <player> to invite a player to your party"));
|
||||||
|
player.sendMessage(Utils.colorComp("<reset><yellow>/party leave to leave your party"));
|
||||||
|
player.sendMessage(Utils.colorComp(
|
||||||
|
"<reset><yellow>/party kick <player> to kick a player from your party"));
|
||||||
|
player.sendMessage(
|
||||||
|
Utils.colorComp("<reset><yellow>/party disband to disband your party"));
|
||||||
|
player.sendMessage(
|
||||||
|
Utils.colorComp("<reset><yellow>/party accept to accept a party invite"));
|
||||||
|
player.sendMessage(
|
||||||
|
Utils.colorComp("<reset><yellow>/party decline to deny a party invite"));
|
||||||
|
player.sendMessage(
|
||||||
|
Utils.colorComp("<reset><yellow>/party list to list all members of your party"));
|
||||||
|
player.sendMessage(
|
||||||
|
Utils.colorComp("<reset><yellow>\\ before every message to send it to your party"));
|
||||||
|
return true;
|
||||||
|
} else if (args[0].equalsIgnoreCase("create")) {
|
||||||
|
main.getManager().getPartyManager().createParty(player, rx);
|
||||||
|
return true;
|
||||||
|
} else if (args[0].equalsIgnoreCase("invite")) {
|
||||||
|
if (rx.getParty() != null) {
|
||||||
|
if (args.length != 2) {
|
||||||
|
player.sendMessage(Utils.colorComp(
|
||||||
|
"<grey>> <green>Usage: /party invite <player>"));
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
String name = args[1];
|
||||||
|
Player target = main.getServer().getPlayer(name);
|
||||||
|
RaxenPlayer rx2 = main.getManager().getPlayerManager()
|
||||||
|
.getRaxenPlayer(target);
|
||||||
|
if (rx2 == null || target == null || !target.isOnline()) {
|
||||||
|
player.sendMessage(Utils.colorComp(
|
||||||
|
"<grey>> <green>Player not found!"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (rx.getParty().isFull()) {
|
||||||
|
player.sendMessage(Utils.colorComp(
|
||||||
|
"<grey>> <green>Your party is full!"));
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
rx.getParty().sendInvite(target, rx2, player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
player.sendMessage(Utils.colorComp(
|
||||||
|
"<grey>> <green>You are not in a party!"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if (args[0].equalsIgnoreCase("accept")) {
|
||||||
|
if (rx.getInvitedParty() == null) {
|
||||||
|
player.sendMessage(Utils.colorComp(
|
||||||
|
"<grey>> <green>You have no pending party invites!"));
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
rx.getInvitedParty().addPlayer(player);
|
||||||
|
rx.setParty(rx.getInvitedParty());
|
||||||
|
rx.setInvitedParty(null);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if (args[0].equalsIgnoreCase("decline")) {
|
||||||
|
if (rx.getInvitedParty() != null) {
|
||||||
|
rx.getInvitedParty().sendMessage(Utils.colorComp(
|
||||||
|
"<grey>> <green>" + player.getName() + " has declined the party invite!"));
|
||||||
|
}
|
||||||
|
rx.setInvitedParty(null);
|
||||||
|
player.sendMessage(Utils.colorComp(
|
||||||
|
"<grey>> <green>You have declined the party invite!"));
|
||||||
|
} else if (args[0].equalsIgnoreCase("leave")) {
|
||||||
|
if (rx.getParty() == null) {
|
||||||
|
player.sendMessage(Utils.colorComp(
|
||||||
|
"<grey>> <green>You are not in a party!"));
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
rx.getParty().leavePlayer(player.getUniqueId(), player.getName());
|
||||||
|
rx.setParty(null);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if (args[0].equalsIgnoreCase("kick")) {
|
||||||
|
if (rx.getParty() == null) {
|
||||||
|
player.sendMessage(Utils.colorComp(
|
||||||
|
"<grey>> <green>You are not in a party!"));
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
if (!rx.getParty().isLeader(player)) {
|
||||||
|
player.sendMessage(Utils.colorComp(
|
||||||
|
"<grey>> <green>You are not the party leader!"));
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
if (args.length != 2) {
|
||||||
|
player.sendMessage(Utils.colorComp(
|
||||||
|
"<grey>> <green>Usage: /party kick <player>"));
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
String name = args[1];
|
||||||
|
Player target = main.getServer().getPlayer(name);
|
||||||
|
RaxenPlayer rx2 = main.getManager().getPlayerManager()
|
||||||
|
.getRaxenPlayer(target);
|
||||||
|
if (rx2 == null || target == null || !target.isOnline()) {
|
||||||
|
player.sendMessage(Utils.colorComp(
|
||||||
|
"<grey>> <green>Player not found!"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!rx2.getParty().equals(rx.getParty())) {
|
||||||
|
player.sendMessage(Utils.colorComp(
|
||||||
|
"<grey>> <green>This player is not in your party!"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (target.equals(player) || rx.equals(rx2)) {
|
||||||
|
player.sendMessage(Utils.colorComp(
|
||||||
|
"<grey>> <green>You can't kick yourself!"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
target.playSound(target.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP,
|
||||||
|
1, 1);
|
||||||
|
rx.getParty().leavePlayer(target.getUniqueId(), target.getName());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (rx.getParty() != null) {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for (String s : args) {
|
||||||
|
sb.append(s).append(" ");
|
||||||
|
}
|
||||||
|
String message = sb.toString().trim();
|
||||||
|
rx.getParty().sendMessage(player, Utils.colorComp(
|
||||||
|
"<reset>" + message));
|
||||||
|
} else {
|
||||||
|
player.sendMessage(Utils.colorComp(
|
||||||
|
"<grey>> <green>Not valid command!"));
|
||||||
|
player.sendMessage(Utils.colorComp(
|
||||||
|
"<grey>> <green>/party help to view all infos on party"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender,
|
||||||
|
@NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||||
|
|
||||||
|
if (complete.isEmpty()) {
|
||||||
|
complete.add("create");
|
||||||
|
complete.add("invite");
|
||||||
|
complete.add("accept");
|
||||||
|
complete.add("decline");
|
||||||
|
complete.add("leave");
|
||||||
|
complete.add("kick");
|
||||||
|
complete.add("help");
|
||||||
|
}
|
||||||
|
List<String> result = new ArrayList<>();
|
||||||
|
if (args.length == 1) {
|
||||||
|
for (String s : complete) {
|
||||||
|
if (s.toLowerCase().startsWith(args[0].toLowerCase())) {
|
||||||
|
result.add(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
} else if (args.length == 2) {
|
||||||
|
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||||
|
if (p.getName().toLowerCase().startsWith(args[1].toLowerCase())) {
|
||||||
|
result.add(p.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -18,76 +18,87 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class SkillsCommand implements TabExecutor {
|
public class SkillsCommand implements TabExecutor {
|
||||||
|
|
||||||
private Raxen main;
|
private Raxen main;
|
||||||
|
|
||||||
public SkillsCommand(Raxen main) {
|
public SkillsCommand(Raxen main) {
|
||||||
this.main = main;
|
this.main = main;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onCommand(
|
|
||||||
@NotNull CommandSender sender,
|
|
||||||
@NotNull Command command,
|
|
||||||
@NotNull String msg,
|
|
||||||
@NotNull String[] args
|
|
||||||
) {
|
|
||||||
if (!(sender instanceof Player)) {
|
|
||||||
error(
|
|
||||||
(Raxen) Bukkit.getPluginManager().getPlugin("Raxen"),
|
|
||||||
"The console can't execute this Command!"
|
|
||||||
);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
Player player = (Player) sender;
|
|
||||||
Attributes attributes = new Attributes(main);
|
@Override
|
||||||
switch (args.length) {
|
public boolean onCommand(
|
||||||
case 0:
|
@NotNull CommandSender sender,
|
||||||
//open gui
|
@NotNull Command command,
|
||||||
player.sendMessage(
|
@NotNull String msg,
|
||||||
colorTextComp("<red>GUI not implemented yet..")
|
@NotNull String[] args
|
||||||
.append(colorTextComp("<red>Try /skill help."))
|
) {
|
||||||
);
|
if (!(sender instanceof Player)) {
|
||||||
break;
|
error(
|
||||||
case 1:
|
(Raxen) Bukkit.getPluginManager().getPlugin("Raxen"),
|
||||||
case 2:
|
"The console can't execute this Command!"
|
||||||
player.sendMessage(
|
);
|
||||||
colorTextComp("<white>Use the command like: ")
|
return true;
|
||||||
.append(
|
|
||||||
colorTextComp(
|
|
||||||
"<white>/skill <dark_aqua>{health|defense|speed|strength} {add|set|remove} {amount}"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
PlayerManager pm =
|
|
||||||
((Raxen) Bukkit.getPluginManager().getPlugin("Raxen")).getManager()
|
|
||||||
.getPlayerManager();
|
|
||||||
for (String s : pm.getAttribute().keySet()) {
|
|
||||||
if (s.equalsIgnoreCase(args[0])) switch (args[1]) {
|
|
||||||
case "add":
|
|
||||||
pm.getAttribute().get(s).add(player, Integer.parseInt(args[2]));
|
|
||||||
case "remove":
|
|
||||||
pm
|
|
||||||
.getAttribute()
|
|
||||||
.get(s)
|
|
||||||
.remove(player, Integer.parseInt(args[2]));
|
|
||||||
case "set":
|
|
||||||
pm.getAttribute().get(s).set(player, Integer.parseInt(args[2]));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
PlayerUtils.updateSkills(main, player);
|
Player player = (Player) sender;
|
||||||
|
Attributes attributes = new Attributes(main);
|
||||||
|
switch (args.length) {
|
||||||
|
case 0:
|
||||||
|
//open gui
|
||||||
|
player.sendMessage(
|
||||||
|
colorTextComp("<red>GUI not implemented yet..")
|
||||||
|
.append(colorTextComp("<red>Try /skill help."))
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
player.sendMessage(
|
||||||
|
colorTextComp("<white>Use the command like: ")
|
||||||
|
.append(
|
||||||
|
colorTextComp(
|
||||||
|
"<white>/skill <dark_aqua>{health|defense|speed|strength} {add|set|remove} {amount}"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
PlayerManager pm =
|
||||||
|
(
|
||||||
|
(Raxen) Bukkit.getPluginManager().getPlugin("Raxen")
|
||||||
|
).getManager()
|
||||||
|
.getPlayerManager();
|
||||||
|
for (String s : pm.getAttribute().keySet()) {
|
||||||
|
if (s.equalsIgnoreCase(args[0])) switch (args[1]) {
|
||||||
|
case "add":
|
||||||
|
pm
|
||||||
|
.getAttribute()
|
||||||
|
.get(s)
|
||||||
|
.add(player, Integer.parseInt(args[2]));
|
||||||
|
break;
|
||||||
|
case "remove":
|
||||||
|
pm
|
||||||
|
.getAttribute()
|
||||||
|
.get(s)
|
||||||
|
.remove(player, Integer.parseInt(args[2]));
|
||||||
|
break;
|
||||||
|
case "set":
|
||||||
|
pm
|
||||||
|
.getAttribute()
|
||||||
|
.get(s)
|
||||||
|
.set(player, Integer.parseInt(args[2]));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PlayerUtils.updateSkills(main, player);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable List<String> onTabComplete(
|
public @Nullable List<String> onTabComplete(
|
||||||
@NotNull CommandSender sender,
|
@NotNull CommandSender sender,
|
||||||
@NotNull Command command,
|
@NotNull Command command,
|
||||||
@NotNull String alias,
|
@NotNull String alias,
|
||||||
@NotNull String[] args
|
@NotNull String[] args
|
||||||
) {
|
) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package me.unurled.raxen.commands.player;
|
package me.unurled.raxen.commands.player;
|
||||||
|
|
||||||
import static me.unurled.raxen.utils.Utils.*;
|
import static me.unurled.raxen.utils.Utils.colorString;
|
||||||
|
import static me.unurled.raxen.utils.Utils.error;
|
||||||
|
import static me.unurled.raxen.utils.Utils.msgPlayer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import me.unurled.raxen.Raxen;
|
import me.unurled.raxen.Raxen;
|
||||||
|
@ -16,65 +18,76 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class StorageCommand implements TabExecutor {
|
public class StorageCommand implements TabExecutor {
|
||||||
|
|
||||||
private PlayerManager playerManager;
|
private PlayerManager playerManager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(
|
public boolean onCommand(
|
||||||
@NotNull CommandSender sender,
|
@NotNull CommandSender sender,
|
||||||
@NotNull Command command,
|
@NotNull Command command,
|
||||||
@NotNull String label,
|
@NotNull String label,
|
||||||
@NotNull String[] args
|
@NotNull String[] args
|
||||||
) {
|
) {
|
||||||
if (!(sender instanceof Player)) {
|
if (!(sender instanceof Player)) {
|
||||||
error(
|
error(
|
||||||
(Raxen) Bukkit.getPluginManager().getPlugin("Raxen"),
|
(Raxen) Bukkit.getPluginManager().getPlugin("Raxen"),
|
||||||
"The console can't execute this Command!"
|
"The console can't execute this Command!"
|
||||||
);
|
);
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
Player player = (Player) sender;
|
|
||||||
Inventory inv;
|
|
||||||
playerManager =
|
|
||||||
((Raxen) Bukkit.getPluginManager().getPlugin("Raxen")).getManager()
|
|
||||||
.getPlayerManager();
|
|
||||||
switch (args.length) {
|
|
||||||
case 0:
|
|
||||||
if (playerManager.getRaxenPlayer(player).getStorage() == null) {
|
|
||||||
inv =
|
|
||||||
playerManager
|
|
||||||
.getRaxenPlayer(player)
|
|
||||||
.createStorage()
|
|
||||||
.getEc()
|
|
||||||
.getEc();
|
|
||||||
} else {
|
|
||||||
inv =
|
|
||||||
playerManager.getRaxenPlayer(player).getStorage().getEc().getEc();
|
|
||||||
}
|
}
|
||||||
player.openInventory(inv);
|
Player player = (Player) sender;
|
||||||
break;
|
Inventory inv;
|
||||||
case 1:
|
playerManager =
|
||||||
Player p = Bukkit.getPlayer(args[0]);
|
((Raxen) Bukkit.getPluginManager().getPlugin("Raxen")).getManager()
|
||||||
if (p == null) {
|
.getPlayerManager();
|
||||||
msgPlayer(
|
switch (args.length) {
|
||||||
player,
|
case 0:
|
||||||
colorString("<red>You can't open the Storage of an unknown Player.")
|
if (playerManager.getRaxenPlayer(player).getStorage() == null) {
|
||||||
);
|
inv =
|
||||||
return true;
|
playerManager
|
||||||
|
.getRaxenPlayer(player)
|
||||||
|
.createStorage()
|
||||||
|
.getEc()
|
||||||
|
.getEc();
|
||||||
|
} else {
|
||||||
|
inv =
|
||||||
|
playerManager
|
||||||
|
.getRaxenPlayer(player)
|
||||||
|
.getStorage()
|
||||||
|
.getEc()
|
||||||
|
.getEc();
|
||||||
|
}
|
||||||
|
player.openInventory(inv);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
Player p = Bukkit.getPlayer(args[0]);
|
||||||
|
if (p == null) {
|
||||||
|
msgPlayer(
|
||||||
|
player,
|
||||||
|
colorString(
|
||||||
|
"<red>You can't open the Storage of an unknown Player."
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
inv =
|
||||||
|
playerManager
|
||||||
|
.getRaxenPlayer(player)
|
||||||
|
.getStorage()
|
||||||
|
.getEc()
|
||||||
|
.getEc();
|
||||||
|
player.openInventory(inv);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
inv = playerManager.getRaxenPlayer(player).getStorage().getEc().getEc();
|
return true;
|
||||||
player.openInventory(inv);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable List<String> onTabComplete(
|
public @Nullable List<String> onTabComplete(
|
||||||
@NotNull CommandSender sender,
|
@NotNull CommandSender sender,
|
||||||
@NotNull Command command,
|
@NotNull Command command,
|
||||||
@NotNull String alias,
|
@NotNull String alias,
|
||||||
@NotNull String[] args
|
@NotNull String[] args
|
||||||
) {
|
) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
package me.unurled.raxen.components.clientbuild;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.UUID;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
|
||||||
|
public class Builds {
|
||||||
|
|
||||||
|
private Instant start;
|
||||||
|
private Instant end;
|
||||||
|
private Location startLocation;
|
||||||
|
private UUID owner;
|
||||||
|
|
||||||
|
private ArrayList<Block> blocks = new ArrayList<>();
|
||||||
|
|
||||||
|
public Builds(Location startLocation, UUID owner) {
|
||||||
|
start = Instant.now();
|
||||||
|
this.startLocation = startLocation;
|
||||||
|
this.owner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Instant getEnd() {
|
||||||
|
return end;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEnd(Instant end) {
|
||||||
|
this.end = end;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Location getStartLocation() {
|
||||||
|
return startLocation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getOwner() {
|
||||||
|
return owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<Block> getBlocks() {
|
||||||
|
return blocks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBlocks(ArrayList<Block> blocks) {
|
||||||
|
this.blocks = blocks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addBlock(Block block) {
|
||||||
|
blocks.add(block);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeBlock(Block block) {
|
||||||
|
blocks.remove(block);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
package me.unurled.raxen.components.clientbuild;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class PlayerList {
|
||||||
|
|
||||||
|
private final ArrayList<Player> players = new ArrayList<>();
|
||||||
|
|
||||||
|
public void addPlayer(Player player) {
|
||||||
|
players.add(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removePlayer(Player player) {
|
||||||
|
players.remove(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<Player> getPlayers() {
|
||||||
|
return players;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -12,67 +12,67 @@ import org.bukkit.Location;
|
||||||
|
|
||||||
public class Dungeon {
|
public class Dungeon {
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private Rank rank;
|
private Rank rank;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private Gate gate;
|
private Gate gate;
|
||||||
|
|
||||||
//String, RaxenEntity
|
//String, RaxenEntity
|
||||||
@Getter
|
@Getter
|
||||||
private HashMap<String, RaxenEntity> monster = new HashMap<>();
|
private HashMap<String, RaxenEntity> monster = new HashMap<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Type of the Dungeon
|
* The Type of the Dungeon
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
private Types types;
|
private Types types;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Monster Types
|
* Monster Types
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
private MonsterType monsterType;
|
private MonsterType monsterType;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private Location location;
|
private Location location;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private Integer radius;
|
private Integer radius;
|
||||||
|
|
||||||
public Dungeon(String name, Rank rank, Types types, MonsterType mType) {
|
public Dungeon(String name, Rank rank, Types types, MonsterType mType) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.rank = rank;
|
this.rank = rank;
|
||||||
this.types = types;
|
this.types = types;
|
||||||
this.monsterType = mType;
|
this.monsterType = mType;
|
||||||
generateGate();
|
generateGate();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate the Gate and make it available to players in the world.
|
* Generate the Gate and make it available to players in the world.
|
||||||
* //TODO: Place the gate at a random place.
|
* //TODO: Place the gate at a random place.
|
||||||
*/
|
*/
|
||||||
public void generateGate() {
|
public void generateGate() {
|
||||||
// -281.50 36.00 187.50
|
// -281.50 36.00 187.50
|
||||||
Location loc = new Location(
|
Location loc = new Location(
|
||||||
Bukkit.getWorld("Liberty_City"),
|
Bukkit.getWorld("Liberty_City"),
|
||||||
-284.0,
|
-284.0,
|
||||||
45.00,
|
45.00,
|
||||||
187.50
|
187.50
|
||||||
);
|
);
|
||||||
Integer radius = getRadiusFromRank(this.rank);
|
Integer radius = getRadiusFromRank(this.rank);
|
||||||
this.gate = new Gate(name, loc, radius);
|
this.gate = new Gate(name, loc, radius);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* //TODO: Terrain Generation of the inside of the Dungeons
|
* //TODO: Terrain Generation of the inside of the Dungeons
|
||||||
*/
|
*/
|
||||||
public void generate() {
|
public void generate() {
|
||||||
Raxen main = (Raxen) Bukkit.getPluginManager().getPlugin("Raxen");
|
Raxen main = (Raxen) Bukkit.getPluginManager().getPlugin("Raxen");
|
||||||
main.getManager().getWorldManager().loadWorld(name);
|
main.getManager().getWorldManager().loadWorld(name);
|
||||||
monsterType.genMonster(Bukkit.getWorld(name), rank);
|
monsterType.genMonster(Bukkit.getWorld(name), rank);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,39 +6,39 @@ import org.bukkit.Material;
|
||||||
|
|
||||||
public class Gate {
|
public class Gate {
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
private Location loc;
|
private Location loc;
|
||||||
private Integer portalRadius;
|
private Integer portalRadius;
|
||||||
|
|
||||||
public Gate(String name, Location loc, Integer portalRadius) {
|
public Gate(String name, Location loc, Integer portalRadius) {
|
||||||
this.loc = loc;
|
this.loc = loc;
|
||||||
this.portalRadius = portalRadius;
|
this.portalRadius = portalRadius;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
|
||||||
|
|
||||||
public void teleport() {}
|
|
||||||
|
|
||||||
public void genGate() {
|
|
||||||
// get which side it's gonna expand with radius
|
|
||||||
Random r = new Random();
|
|
||||||
Boolean xExpend = false;
|
|
||||||
if (r.nextInt(2) == 0) {
|
|
||||||
xExpend = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// place blocks
|
public void teleport() {}
|
||||||
for (double i = 0; i <= Math.PI; i += Math.PI / portalRadius) {
|
|
||||||
double radius = Math.sin(i);
|
public void genGate() {
|
||||||
double y = Math.cos(i);
|
// get which side it's gonna expand with radius
|
||||||
for (double a = 0; a < Math.PI * 2; a += Math.PI / portalRadius) {
|
Random r = new Random();
|
||||||
double x = Math.cos(a) * radius;
|
Boolean xExpend = false;
|
||||||
double z = Math.sin(a) * radius;
|
if (r.nextInt(2) == 0) {
|
||||||
Location locc = new Location(loc.getWorld(), x, y, z);
|
xExpend = true;
|
||||||
loc.getBlock().setType(Material.NETHER_PORTAL);
|
}
|
||||||
}
|
|
||||||
}
|
// place blocks
|
||||||
/*
|
for (double i = 0; i <= Math.PI; i += Math.PI / portalRadius) {
|
||||||
|
double radius = Math.sin(i);
|
||||||
|
double y = Math.cos(i);
|
||||||
|
for (double a = 0; a < Math.PI * 2; a += Math.PI / portalRadius) {
|
||||||
|
double x = Math.cos(a) * radius;
|
||||||
|
double z = Math.sin(a) * radius;
|
||||||
|
Location locc = new Location(loc.getWorld(), x, y, z);
|
||||||
|
loc.getBlock().setType(Material.NETHER_PORTAL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
for (int n=0; n<portalRadius ; n++) {
|
for (int n=0; n<portalRadius ; n++) {
|
||||||
Double x = loc.getX();
|
Double x = loc.getX();
|
||||||
Double y = loc.getY();
|
Double y = loc.getY();
|
||||||
|
@ -53,17 +53,17 @@ public class Gate {
|
||||||
}
|
}
|
||||||
|
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
public Location getLoc() {
|
public Location getLoc() {
|
||||||
return loc;
|
return loc;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getPortalRadius() {
|
public Integer getPortalRadius() {
|
||||||
return portalRadius;
|
return portalRadius;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
package me.unurled.raxen.components.dungeons;
|
package me.unurled.raxen.components.dungeons;
|
||||||
|
|
||||||
public enum Rank {
|
public enum Rank {
|
||||||
F,
|
F,
|
||||||
E,
|
E,
|
||||||
D,
|
D,
|
||||||
C,
|
C,
|
||||||
B,
|
B,
|
||||||
A,
|
A,
|
||||||
S,
|
S,
|
||||||
SS,
|
SS,
|
||||||
SSS,
|
SSS,
|
||||||
WORLD,
|
WORLD,
|
||||||
UNBEATABLE,
|
UNBEATABLE,
|
||||||
NOT_DEFINED,
|
NOT_DEFINED
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,11 +7,11 @@ import me.unurled.raxen.components.lootchest.loots.LootItem;
|
||||||
|
|
||||||
public class Type {
|
public class Type {
|
||||||
|
|
||||||
public String name;
|
public String name;
|
||||||
|
|
||||||
public Map<String, RaxenEntity> monster = new HashMap<>();
|
public Map<String, RaxenEntity> monster = new HashMap<>();
|
||||||
|
|
||||||
public Map<String, LootItem> lootItem = new HashMap<>();
|
public Map<String, LootItem> lootItem = new HashMap<>();
|
||||||
// public Map<String, > chest
|
// public Map<String, > chest
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,20 +1,20 @@
|
||||||
package me.unurled.raxen.components.dungeons;
|
package me.unurled.raxen.components.dungeons;
|
||||||
|
|
||||||
public enum Types {
|
public enum Types {
|
||||||
JUNGLE,
|
JUNGLE,
|
||||||
TROPICAL_JUNGLE,
|
TROPICAL_JUNGLE,
|
||||||
PLAINS,
|
PLAINS,
|
||||||
GRAVES,
|
GRAVES,
|
||||||
CASTLE,
|
CASTLE,
|
||||||
ABANDONED_CASTLE,
|
ABANDONED_CASTLE,
|
||||||
FIELD,
|
FIELD,
|
||||||
ICE_FOREST,
|
ICE_FOREST,
|
||||||
FOREST,
|
FOREST,
|
||||||
VOLCANO,
|
VOLCANO,
|
||||||
MOUNTAINS,
|
MOUNTAINS,
|
||||||
HIGH_MOUNTAINS,
|
HIGH_MOUNTAINS,
|
||||||
CAVES,
|
CAVES,
|
||||||
LABYRINTH,
|
LABYRINTH,
|
||||||
UNDERGROUND_LABYRINTH,
|
UNDERGROUND_LABYRINTH,
|
||||||
FOREST_LABYRINTH,
|
FOREST_LABYRINTH
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,93 +16,93 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class MonsterType {
|
public class MonsterType {
|
||||||
|
|
||||||
public enum type {
|
public enum type {
|
||||||
;
|
;
|
||||||
|
|
||||||
private Double rate;
|
private Double rate;
|
||||||
public String ID;
|
public String ID;
|
||||||
public Class clazz;
|
public Class clazz;
|
||||||
|
|
||||||
type(Double rate, String ID, Class clazz) {
|
type(Double rate, String ID, Class clazz) {
|
||||||
this.rate = rate;
|
this.rate = rate;
|
||||||
this.ID = ID;
|
this.ID = ID;
|
||||||
this.clazz = clazz;
|
this.clazz = clazz;
|
||||||
}
|
|
||||||
|
|
||||||
public static @Nullable type getTypeById(String ID) {
|
|
||||||
for (type type : type.values()) {
|
|
||||||
if (type.ID.equals(ID)) {
|
|
||||||
return type;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Double getRate() {
|
public static @Nullable type getTypeById(String ID) {
|
||||||
return rate;
|
for (type type : type.values()) {
|
||||||
}
|
if (type.ID.equals(ID)) {
|
||||||
|
return type;
|
||||||
public void setRate(Double rate) {
|
}
|
||||||
this.rate = rate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getID() {
|
|
||||||
return ID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setID(String ID) {
|
|
||||||
this.ID = ID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Class getClazz() {
|
|
||||||
return clazz;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void getClazz(Class clazz) {
|
|
||||||
this.clazz = clazz;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void genMonster(World world, Rank rank) {
|
|
||||||
Double x = 0.0;
|
|
||||||
Double y = 100.0;
|
|
||||||
Double z = 0.0;
|
|
||||||
for (type type : type.values()) {
|
|
||||||
type.name();
|
|
||||||
Random r = new Random();
|
|
||||||
int per = r.nextInt(100);
|
|
||||||
if (per >= type.rate) {
|
|
||||||
// spawn entity
|
|
||||||
debug("Spawning Entity " + type.ID);
|
|
||||||
Entity e = world.spawnEntity(
|
|
||||||
new Location(world, x, y, z),
|
|
||||||
EntityType.ARROW
|
|
||||||
);
|
|
||||||
// e = ((RaxenEntity) type.getClazz()).createEntity();
|
|
||||||
e.setInvulnerable(true);
|
|
||||||
BukkitTask task = new BukkitRunnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
Location loc = new Location(
|
|
||||||
e.getWorld(),
|
|
||||||
e.getLocation().getX(),
|
|
||||||
e.getLocation().getY() - 1,
|
|
||||||
e.getLocation().getZ()
|
|
||||||
);
|
|
||||||
if (loc.getBlock().getType() != Material.AIR) {
|
|
||||||
e.setInvulnerable(false);
|
|
||||||
this.cancel();
|
|
||||||
}
|
}
|
||||||
}
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getRate() {
|
||||||
|
return rate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRate(Double rate) {
|
||||||
|
this.rate = rate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getID() {
|
||||||
|
return ID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setID(String ID) {
|
||||||
|
this.ID = ID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Class getClazz() {
|
||||||
|
return clazz;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getClazz(Class clazz) {
|
||||||
|
this.clazz = clazz;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void genMonster(World world, Rank rank) {
|
||||||
|
Double x = 0.0;
|
||||||
|
Double y = 100.0;
|
||||||
|
Double z = 0.0;
|
||||||
|
for (type type : type.values()) {
|
||||||
|
type.name();
|
||||||
|
Random r = new Random();
|
||||||
|
int per = r.nextInt(100);
|
||||||
|
if (per >= type.rate) {
|
||||||
|
// spawn entity
|
||||||
|
debug("Spawning Entity " + type.ID);
|
||||||
|
Entity e = world.spawnEntity(
|
||||||
|
new Location(world, x, y, z),
|
||||||
|
EntityType.ARROW
|
||||||
|
);
|
||||||
|
// e = ((RaxenEntity) type.getClazz()).createEntity();
|
||||||
|
e.setInvulnerable(true);
|
||||||
|
BukkitTask task = new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Location loc = new Location(
|
||||||
|
e.getWorld(),
|
||||||
|
e.getLocation().getX(),
|
||||||
|
e.getLocation().getY() - 1,
|
||||||
|
e.getLocation().getZ()
|
||||||
|
);
|
||||||
|
if (loc.getBlock().getType() != Material.AIR) {
|
||||||
|
e.setInvulnerable(false);
|
||||||
|
this.cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.runTaskTimerAsynchronously(
|
||||||
|
Bukkit.getPluginManager().getPlugin("Raxen"),
|
||||||
|
0L,
|
||||||
|
20L
|
||||||
|
);
|
||||||
|
}
|
||||||
|
x = 5.0 + (50.0 - 5.0) * r.nextDouble();
|
||||||
|
z = 5.0 + (50.0 - 5.0) * r.nextDouble();
|
||||||
}
|
}
|
||||||
.runTaskTimerAsynchronously(
|
|
||||||
Bukkit.getPluginManager().getPlugin("Raxen"),
|
|
||||||
0L,
|
|
||||||
20L
|
|
||||||
);
|
|
||||||
}
|
|
||||||
x = 5.0 + (50.0 - 5.0) * r.nextDouble();
|
|
||||||
z = 5.0 + (50.0 - 5.0) * r.nextDouble();
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,11 +7,16 @@ import me.unurled.raxen.components.dungeons.types.MonsterType;
|
||||||
|
|
||||||
public class ForestDungeon extends Dungeon {
|
public class ForestDungeon extends Dungeon {
|
||||||
|
|
||||||
public ForestDungeon(String name, Rank rank, Types types, MonsterType mType) {
|
public ForestDungeon(
|
||||||
super(name, rank, types, mType);
|
String name,
|
||||||
}
|
Rank rank,
|
||||||
|
Types types,
|
||||||
|
MonsterType mType
|
||||||
|
) {
|
||||||
|
super(name, rank, types, mType);
|
||||||
|
}
|
||||||
|
|
||||||
public ForestDungeon() {
|
public ForestDungeon() {
|
||||||
super("Forest", Rank.E, Types.FOREST, new ForestMonster());
|
super("Forest", Rank.E, Types.FOREST, new ForestMonster());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,19 +7,19 @@ import me.unurled.raxen.components.entity.other.custom.dungeon.forest.Wolf;
|
||||||
|
|
||||||
public class ForestMonster extends MonsterType {
|
public class ForestMonster extends MonsterType {
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
enum type {
|
enum type {
|
||||||
ELF(50.0, "ELF", Elf.class),
|
ELF(50.0, "ELF", Elf.class),
|
||||||
WOLF(50.0, "WOLF", Wolf.class);
|
WOLF(50.0, "WOLF", Wolf.class);
|
||||||
|
|
||||||
private Double rate;
|
private Double rate;
|
||||||
public String ID;
|
public String ID;
|
||||||
public Class clazz;
|
public Class clazz;
|
||||||
|
|
||||||
type(Double rate, String ID, Class clazz) {
|
type(Double rate, String ID, Class clazz) {
|
||||||
this.rate = rate;
|
this.rate = rate;
|
||||||
this.ID = ID;
|
this.ID = ID;
|
||||||
this.clazz = clazz;
|
this.clazz = clazz;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
package me.unurled.raxen.components.effect;
|
||||||
|
|
||||||
|
public class EffectBuilder {
|
||||||
|
|
||||||
|
}
|
|
@ -14,94 +14,94 @@ import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public class EnchantmentWarpper extends Enchantment {
|
public class EnchantmentWarpper extends Enchantment {
|
||||||
|
|
||||||
private final int maxLevel;
|
private final int maxLevel;
|
||||||
|
|
||||||
public EnchantmentWarpper(String nameSpace, String name, int lvl) {
|
public EnchantmentWarpper(String nameSpace, String name, int lvl) {
|
||||||
super(NamespacedKey.minecraft(nameSpace));
|
super(NamespacedKey.minecraft(nameSpace));
|
||||||
this.maxLevel = lvl;
|
this.maxLevel = lvl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public @NotNull String getName() {
|
public @NotNull String getName() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMaxLevel() {
|
public int getMaxLevel() {
|
||||||
return maxLevel;
|
return maxLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getStartLevel() {
|
public int getStartLevel() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull EnchantmentTarget getItemTarget() {
|
public @NotNull EnchantmentTarget getItemTarget() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isTreasure() {
|
public boolean isTreasure() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isCursed() {
|
public boolean isCursed() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean conflictsWith(@NotNull Enchantment other) {
|
public boolean conflictsWith(@NotNull Enchantment other) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canEnchantItem(@NotNull ItemStack item) {
|
public boolean canEnchantItem(@NotNull ItemStack item) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Component displayName(int level) {
|
public @NotNull Component displayName(int level) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isTradeable() {
|
public boolean isTradeable() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isDiscoverable() {
|
public boolean isDiscoverable() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull EnchantmentRarity getRarity() {
|
public @NotNull EnchantmentRarity getRarity() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getDamageIncrease(
|
public float getDamageIncrease(
|
||||||
int level,
|
int level,
|
||||||
@NotNull EntityCategory entityCategory
|
@NotNull EntityCategory entityCategory
|
||||||
) {
|
) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Set<EquipmentSlot> getActiveSlots() {
|
public @NotNull Set<EquipmentSlot> getActiveSlots() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull String translationKey() {
|
public @NotNull String translationKey() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Key key() {
|
public @NotNull Key key() {
|
||||||
return super.key();
|
return super.key();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,9 +6,9 @@ import org.bukkit.event.Listener;
|
||||||
|
|
||||||
public class Telekinesis implements Listener {
|
public class Telekinesis implements Listener {
|
||||||
|
|
||||||
public static final Enchantment TELEKINESIS = new EnchantmentWarpper(
|
public static final Enchantment TELEKINESIS = new EnchantmentWarpper(
|
||||||
"telekinesis",
|
"telekinesis",
|
||||||
"telekinesis",
|
"telekinesis",
|
||||||
1
|
1
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package me.unurled.raxen.components.entity.Attributes;
|
package me.unurled.raxen.components.entity.Attributes;
|
||||||
|
|
||||||
import static me.unurled.raxen.utils.Utils.debug;
|
import static me.unurled.raxen.utils.Utils.debug;
|
||||||
|
import static me.unurled.raxen.utils.Utils.log;
|
||||||
|
|
||||||
import de.tr7zw.nbtapi.NBTItem;
|
import de.tr7zw.nbtapi.NBTItem;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
@ -14,158 +15,161 @@ import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public class Attribute {
|
public class Attribute {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The NamespaceKey register for the PersistentDataContainer.
|
* The NamespaceKey register for the PersistentDataContainer.
|
||||||
* static NamespacedKey namespacekey = namespacedKey.TYPE;
|
* static NamespacedKey namespacekey = namespacedKey.TYPE;
|
||||||
*/
|
*/
|
||||||
public NamespacedKey namespacekey;
|
public NamespacedKey namespacekey;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The name of the attribute
|
* The name of the attribute
|
||||||
* static String name = "null";
|
* static String name = "null";
|
||||||
*/
|
*/
|
||||||
public String name;
|
public String name;
|
||||||
|
|
||||||
public Attribute(NamespacedKey namespacekey, String name) {
|
public Attribute(NamespacedKey namespacekey, String name) {
|
||||||
this.namespacekey = namespacekey;
|
this.namespacekey = namespacekey;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gives the name uppercased
|
* gives the name uppercased
|
||||||
* @return the name in uppercase
|
* @return the name in uppercase
|
||||||
*/
|
*/
|
||||||
public String nameUppercase() {
|
public String nameUppercase() {
|
||||||
return name.toUpperCase();
|
return name.toUpperCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get how many the Entity has Attributed
|
* get how many the Entity has Attributed
|
||||||
* @param entity a living entity
|
* @param entity a living entity
|
||||||
* @return the amount of attribute
|
* @return the amount of attribute
|
||||||
*/
|
*/
|
||||||
public Integer get(@NotNull Entity entity) {
|
public Integer get(@NotNull Entity entity) {
|
||||||
if (
|
if (
|
||||||
entity
|
entity
|
||||||
.getPersistentDataContainer()
|
.getPersistentDataContainer()
|
||||||
.has(namespacekey, PersistentDataType.INTEGER)
|
.has(namespacekey, PersistentDataType.INTEGER)
|
||||||
) {
|
) {
|
||||||
debug(
|
debug(
|
||||||
" attribute gett" +
|
" attribute gett" +
|
||||||
|
entity
|
||||||
|
.getPersistentDataContainer()
|
||||||
|
.get(namespacekey, PersistentDataType.INTEGER)
|
||||||
|
);
|
||||||
|
return entity
|
||||||
|
.getPersistentDataContainer()
|
||||||
|
.get(namespacekey, PersistentDataType.INTEGER);
|
||||||
|
}
|
||||||
|
debug(
|
||||||
|
name +
|
||||||
|
" not found in Entity: " +
|
||||||
|
entity.getType().toString() +
|
||||||
|
" " +
|
||||||
|
entity.getName() +
|
||||||
|
" " +
|
||||||
|
entity.getUniqueId().toString()
|
||||||
|
);
|
||||||
|
set(entity, 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get how many the Entity has Attributed
|
||||||
|
* @param it an ItemStack
|
||||||
|
* @return the amount of attribute
|
||||||
|
*/
|
||||||
|
public Integer get(@NotNull ItemStack it) {
|
||||||
|
NBTItem nbti = new NBTItem(it);
|
||||||
|
if (nbti.hasTag(name)) {
|
||||||
|
return nbti.getInteger(name);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the amount of attribute on the item
|
||||||
|
* @param e a LivingEntity
|
||||||
|
* @return an amount of attribute on the item
|
||||||
|
*/
|
||||||
|
public Integer getItem(@NotNull LivingEntity e) {
|
||||||
|
EntityEquipment equi = e.getEquipment();
|
||||||
|
Integer attribute = 0;
|
||||||
|
if (equi != null) {
|
||||||
|
if (
|
||||||
|
equi.getItemInMainHand().getType() != Material.AIR &&
|
||||||
|
equi.getHelmet() != null
|
||||||
|
) {
|
||||||
|
ItemStack item = equi.getItemInMainHand();
|
||||||
|
attribute = attribute + get(item);
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
equi.getHelmet().getType() != Material.AIR &&
|
||||||
|
equi.getHelmet() != null
|
||||||
|
) {
|
||||||
|
ItemStack item = equi.getHelmet();
|
||||||
|
attribute = attribute + get(item);
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
equi.getChestplate().getType() != Material.AIR &&
|
||||||
|
equi.getChestplate() != null
|
||||||
|
) {
|
||||||
|
ItemStack item = equi.getChestplate();
|
||||||
|
attribute = attribute + get(item);
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
equi.getChestplate().getType() != Material.AIR &&
|
||||||
|
equi.getChestplate() != null
|
||||||
|
) {
|
||||||
|
ItemStack item = equi.getChestplate();
|
||||||
|
attribute = attribute + get(item);
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
equi.getLeggings().getType() != Material.AIR &&
|
||||||
|
equi.getLeggings() != null
|
||||||
|
) {
|
||||||
|
ItemStack item = equi.getLeggings();
|
||||||
|
attribute = attribute + get(item);
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
equi.getBoots().getType() != Material.AIR &&
|
||||||
|
equi.getBoots() != null
|
||||||
|
) {
|
||||||
|
ItemStack item = equi.getBoots();
|
||||||
|
attribute = attribute + get(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return attribute;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set amount to the entity's attribute
|
||||||
|
* @param entity a living entity
|
||||||
|
* @param amount the amount you want to set
|
||||||
|
*/
|
||||||
|
public void set(@NotNull Entity entity, @NotNull Integer amount) {
|
||||||
entity
|
entity
|
||||||
.getPersistentDataContainer()
|
.getPersistentDataContainer()
|
||||||
.get(namespacekey, PersistentDataType.INTEGER)
|
.set(namespacekey, PersistentDataType.INTEGER, amount);
|
||||||
);
|
debug("set " + name + " " + amount);
|
||||||
return entity
|
|
||||||
.getPersistentDataContainer()
|
|
||||||
.get(namespacekey, PersistentDataType.INTEGER);
|
|
||||||
}
|
}
|
||||||
debug(
|
|
||||||
name +
|
|
||||||
" not found in Entity: " +
|
|
||||||
entity.getType().toString() +
|
|
||||||
" " +
|
|
||||||
entity.getName() +
|
|
||||||
" " +
|
|
||||||
entity.getUniqueId().toString()
|
|
||||||
);
|
|
||||||
set(entity, 0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get how many the Entity has Attributed
|
* add amount to the entity's attribute
|
||||||
* @param it an ItemStack
|
* @param entity a living entity
|
||||||
* @return the amount of attribute
|
* @param amount the amount you want to set
|
||||||
*/
|
*/
|
||||||
public Integer get(@NotNull ItemStack it) {
|
public void add(@NotNull Entity entity, @NotNull Integer amount) {
|
||||||
NBTItem nbti = new NBTItem(it);
|
log(get(entity) + " " + amount);
|
||||||
if (nbti.hasTag(name)) {
|
set(entity, get(entity) + amount);
|
||||||
return nbti.getInteger(name);
|
|
||||||
}
|
}
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the amount of attribute on the item
|
* remove amount to the entity's attribute
|
||||||
* @param e a LivingEntity
|
* @param entity a living entity
|
||||||
* @return an amount of attribute on the item
|
* @param amount the amount you want to set
|
||||||
*/
|
*/
|
||||||
public Integer getItem(@NotNull LivingEntity e) {
|
public void remove(@NotNull Entity entity, @NotNull Integer amount) {
|
||||||
EntityEquipment equi = e.getEquipment();
|
set(entity, get(entity) - amount);
|
||||||
Integer attribute = 0;
|
|
||||||
if (equi != null) {
|
|
||||||
if (
|
|
||||||
equi.getItemInMainHand().getType() != Material.AIR &&
|
|
||||||
equi.getHelmet() != null
|
|
||||||
) {
|
|
||||||
ItemStack item = equi.getItemInMainHand();
|
|
||||||
attribute = attribute + get(item);
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
equi.getHelmet().getType() != Material.AIR && equi.getHelmet() != null
|
|
||||||
) {
|
|
||||||
ItemStack item = equi.getHelmet();
|
|
||||||
attribute = attribute + get(item);
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
equi.getChestplate().getType() != Material.AIR &&
|
|
||||||
equi.getChestplate() != null
|
|
||||||
) {
|
|
||||||
ItemStack item = equi.getChestplate();
|
|
||||||
attribute = attribute + get(item);
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
equi.getChestplate().getType() != Material.AIR &&
|
|
||||||
equi.getChestplate() != null
|
|
||||||
) {
|
|
||||||
ItemStack item = equi.getChestplate();
|
|
||||||
attribute = attribute + get(item);
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
equi.getLeggings().getType() != Material.AIR &&
|
|
||||||
equi.getLeggings() != null
|
|
||||||
) {
|
|
||||||
ItemStack item = equi.getLeggings();
|
|
||||||
attribute = attribute + get(item);
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
equi.getBoots().getType() != Material.AIR && equi.getBoots() != null
|
|
||||||
) {
|
|
||||||
ItemStack item = equi.getBoots();
|
|
||||||
attribute = attribute + get(item);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return attribute;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* set amount to the entity's attribute
|
|
||||||
* @param entity a living entity
|
|
||||||
* @param amount the amount you want to set
|
|
||||||
*/
|
|
||||||
public void set(@NotNull Entity entity, @NotNull Integer amount) {
|
|
||||||
entity
|
|
||||||
.getPersistentDataContainer()
|
|
||||||
.set(namespacekey, PersistentDataType.INTEGER, amount);
|
|
||||||
debug("set " + name + " " + amount);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* add amount to the entity's attribute
|
|
||||||
* @param entity a living entity
|
|
||||||
* @param amount the amount you want to set
|
|
||||||
*/
|
|
||||||
public void add(@NotNull Entity entity, @NotNull Integer amount) {
|
|
||||||
set(entity, get(entity) + amount);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* remove amount to the entity's attribute
|
|
||||||
* @param entity a living entity
|
|
||||||
* @param amount the amount you want to set
|
|
||||||
*/
|
|
||||||
public void remove(@NotNull Entity entity, @NotNull Integer amount) {
|
|
||||||
set(entity, get(entity) - amount);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import org.bukkit.NamespacedKey;
|
||||||
|
|
||||||
public class Defense extends Attribute {
|
public class Defense extends Attribute {
|
||||||
|
|
||||||
public Defense(NamespacedKey namespacekey, String name) {
|
public Defense(NamespacedKey namespacekey, String name) {
|
||||||
super(namespacekey, name);
|
super(namespacekey, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import org.bukkit.NamespacedKey;
|
||||||
|
|
||||||
public class Health extends Attribute {
|
public class Health extends Attribute {
|
||||||
|
|
||||||
public Health(NamespacedKey namespacekey, String name) {
|
public Health(NamespacedKey namespacekey, String name) {
|
||||||
super(namespacekey, name);
|
super(namespacekey, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import org.bukkit.NamespacedKey;
|
||||||
|
|
||||||
public class ItemDefense extends Attribute {
|
public class ItemDefense extends Attribute {
|
||||||
|
|
||||||
public ItemDefense(NamespacedKey namespacekey, String name) {
|
public ItemDefense(NamespacedKey namespacekey, String name) {
|
||||||
super(namespacekey, name);
|
super(namespacekey, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import org.bukkit.NamespacedKey;
|
||||||
|
|
||||||
public class ItemHealth extends Attribute {
|
public class ItemHealth extends Attribute {
|
||||||
|
|
||||||
public ItemHealth(NamespacedKey namespacekey, String name) {
|
public ItemHealth(NamespacedKey namespacekey, String name) {
|
||||||
super(namespacekey, name);
|
super(namespacekey, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import org.bukkit.NamespacedKey;
|
||||||
|
|
||||||
public class ItemLuck extends Attribute {
|
public class ItemLuck extends Attribute {
|
||||||
|
|
||||||
public ItemLuck(NamespacedKey namespacekey, String name) {
|
public ItemLuck(NamespacedKey namespacekey, String name) {
|
||||||
super(namespacekey, name);
|
super(namespacekey, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import org.bukkit.NamespacedKey;
|
||||||
|
|
||||||
public class ItemMana extends Attribute {
|
public class ItemMana extends Attribute {
|
||||||
|
|
||||||
public ItemMana(NamespacedKey namespacekey, String name) {
|
public ItemMana(NamespacedKey namespacekey, String name) {
|
||||||
super(namespacekey, name);
|
super(namespacekey, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import org.bukkit.NamespacedKey;
|
||||||
|
|
||||||
public class ItemSpeed extends Attribute {
|
public class ItemSpeed extends Attribute {
|
||||||
|
|
||||||
public ItemSpeed(NamespacedKey namespacekey, String name) {
|
public ItemSpeed(NamespacedKey namespacekey, String name) {
|
||||||
super(namespacekey, name);
|
super(namespacekey, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import org.bukkit.NamespacedKey;
|
||||||
|
|
||||||
public class ItemStrength extends Attribute {
|
public class ItemStrength extends Attribute {
|
||||||
|
|
||||||
public ItemStrength(NamespacedKey namespacekey, String name) {
|
public ItemStrength(NamespacedKey namespacekey, String name) {
|
||||||
super(namespacekey, name);
|
super(namespacekey, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import org.bukkit.NamespacedKey;
|
||||||
|
|
||||||
public class Luck extends Attribute {
|
public class Luck extends Attribute {
|
||||||
|
|
||||||
public Luck(NamespacedKey namespacekey, String name) {
|
public Luck(NamespacedKey namespacekey, String name) {
|
||||||
super(namespacekey, name);
|
super(namespacekey, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import org.bukkit.NamespacedKey;
|
||||||
|
|
||||||
public class Mana extends Attribute {
|
public class Mana extends Attribute {
|
||||||
|
|
||||||
public Mana(NamespacedKey namespacekey, String name) {
|
public Mana(NamespacedKey namespacekey, String name) {
|
||||||
super(namespacekey, name);
|
super(namespacekey, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import org.bukkit.NamespacedKey;
|
||||||
|
|
||||||
public class MaxHealth extends Attribute {
|
public class MaxHealth extends Attribute {
|
||||||
|
|
||||||
public MaxHealth(NamespacedKey namespacekey, String name) {
|
public MaxHealth(NamespacedKey namespacekey, String name) {
|
||||||
super(namespacekey, name);
|
super(namespacekey, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import org.bukkit.NamespacedKey;
|
||||||
|
|
||||||
public class MaxMana extends Attribute {
|
public class MaxMana extends Attribute {
|
||||||
|
|
||||||
public MaxMana(NamespacedKey namespacekey, String name) {
|
public MaxMana(NamespacedKey namespacekey, String name) {
|
||||||
super(namespacekey, name);
|
super(namespacekey, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,20 +4,20 @@ import org.bukkit.NamespacedKey;
|
||||||
|
|
||||||
public class MaxManaBuilder {
|
public class MaxManaBuilder {
|
||||||
|
|
||||||
private NamespacedKey namespacekey;
|
private NamespacedKey namespacekey;
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
public MaxManaBuilder setNamespacekey(NamespacedKey namespacekey) {
|
public MaxManaBuilder setNamespacekey(NamespacedKey namespacekey) {
|
||||||
this.namespacekey = namespacekey;
|
this.namespacekey = namespacekey;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MaxManaBuilder setName(String name) {
|
public MaxManaBuilder setName(String name) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MaxMana createMaxMana() {
|
public MaxMana createMaxMana() {
|
||||||
return new MaxMana(namespacekey, name);
|
return new MaxMana(namespacekey, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import org.bukkit.NamespacedKey;
|
||||||
|
|
||||||
public class Speed extends Attribute {
|
public class Speed extends Attribute {
|
||||||
|
|
||||||
public Speed(NamespacedKey namespacekey, String name) {
|
public Speed(NamespacedKey namespacekey, String name) {
|
||||||
super(namespacekey, name);
|
super(namespacekey, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import org.bukkit.NamespacedKey;
|
||||||
|
|
||||||
public class Strength extends Attribute {
|
public class Strength extends Attribute {
|
||||||
|
|
||||||
public Strength(NamespacedKey namespacekey, String name) {
|
public Strength(NamespacedKey namespacekey, String name) {
|
||||||
super(namespacekey, name);
|
super(namespacekey, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
package me.unurled.raxen.components.entity;
|
||||||
|
|
||||||
|
public enum DamageType {
|
||||||
|
NORMAL,
|
||||||
|
NORMAL_SPELL,
|
||||||
|
ENVIRONMENTAL_LAVA,
|
||||||
|
ENVIRONMENTAL_DROWNING,
|
||||||
|
ENVIRONMENTAL_FALL,
|
||||||
|
ENVIRONMENTAL_INSTANT;
|
||||||
|
}
|
|
@ -5,43 +5,43 @@ import org.bukkit.NamespacedKey;
|
||||||
|
|
||||||
public class EntityNamespacedKey {
|
public class EntityNamespacedKey {
|
||||||
|
|
||||||
public EntityNamespacedKey(Raxen main) {
|
public EntityNamespacedKey(Raxen main) {
|
||||||
name = new NamespacedKey(main, "NAME");
|
name = new NamespacedKey(main, "NAME");
|
||||||
level = new NamespacedKey(main, "LEVEL");
|
level = new NamespacedKey(main, "LEVEL");
|
||||||
maxHealth = new NamespacedKey(main, "MAX_HEALTH");
|
maxHealth = new NamespacedKey(main, "MAX_HEALTH");
|
||||||
health = new NamespacedKey(main, "HEALTH");
|
health = new NamespacedKey(main, "HEALTH");
|
||||||
itemHealth = new NamespacedKey(main, "ITEM_HEALTH");
|
itemHealth = new NamespacedKey(main, "ITEM_HEALTH");
|
||||||
speed = new NamespacedKey(main, "SPEED");
|
speed = new NamespacedKey(main, "SPEED");
|
||||||
itemSpeed = new NamespacedKey(main, "ITEM_SPEED");
|
itemSpeed = new NamespacedKey(main, "ITEM_SPEED");
|
||||||
defense = new NamespacedKey(main, "DEFENSE");
|
defense = new NamespacedKey(main, "DEFENSE");
|
||||||
itemDefense = new NamespacedKey(main, "ITEM_DEFENSE");
|
itemDefense = new NamespacedKey(main, "ITEM_DEFENSE");
|
||||||
strength = new NamespacedKey(main, "STRENGTH");
|
strength = new NamespacedKey(main, "STRENGTH");
|
||||||
itemStrength = new NamespacedKey(main, "ITEM_STRENGTH");
|
itemStrength = new NamespacedKey(main, "ITEM_STRENGTH");
|
||||||
maxMana = new NamespacedKey(main, "MAX_MANA");
|
maxMana = new NamespacedKey(main, "MAX_MANA");
|
||||||
mana = new NamespacedKey(main, "MANA");
|
mana = new NamespacedKey(main, "MANA");
|
||||||
itemMana = new NamespacedKey(main, "ITEM_MANA");
|
itemMana = new NamespacedKey(main, "ITEM_MANA");
|
||||||
luck = new NamespacedKey(main, "LUCK");
|
luck = new NamespacedKey(main, "LUCK");
|
||||||
itemLuck = new NamespacedKey(main, "ITEM_LUCK");
|
itemLuck = new NamespacedKey(main, "ITEM_LUCK");
|
||||||
inventory = new NamespacedKey(main, "INVENTORY");
|
inventory = new NamespacedKey(main, "INVENTORY");
|
||||||
storage = new NamespacedKey(main, "STORAGE");
|
storage = new NamespacedKey(main, "STORAGE");
|
||||||
}
|
}
|
||||||
|
|
||||||
public final NamespacedKey name;
|
public final NamespacedKey name;
|
||||||
public final NamespacedKey level;
|
public final NamespacedKey level;
|
||||||
public final NamespacedKey maxHealth;
|
public final NamespacedKey maxHealth;
|
||||||
public final NamespacedKey health;
|
public final NamespacedKey health;
|
||||||
public final NamespacedKey itemHealth;
|
public final NamespacedKey itemHealth;
|
||||||
public final NamespacedKey speed;
|
public final NamespacedKey speed;
|
||||||
public final NamespacedKey itemSpeed;
|
public final NamespacedKey itemSpeed;
|
||||||
public final NamespacedKey defense;
|
public final NamespacedKey defense;
|
||||||
public final NamespacedKey itemDefense;
|
public final NamespacedKey itemDefense;
|
||||||
public final NamespacedKey strength;
|
public final NamespacedKey strength;
|
||||||
public final NamespacedKey itemStrength;
|
public final NamespacedKey itemStrength;
|
||||||
public final NamespacedKey maxMana;
|
public final NamespacedKey maxMana;
|
||||||
public final NamespacedKey mana;
|
public final NamespacedKey mana;
|
||||||
public final NamespacedKey itemMana;
|
public final NamespacedKey itemMana;
|
||||||
public final NamespacedKey luck;
|
public final NamespacedKey luck;
|
||||||
public final NamespacedKey itemLuck;
|
public final NamespacedKey itemLuck;
|
||||||
public final NamespacedKey inventory;
|
public final NamespacedKey inventory;
|
||||||
public final NamespacedKey storage;
|
public final NamespacedKey storage;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,94 +12,114 @@ import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public class EntityUtils {
|
public class EntityUtils {
|
||||||
|
|
||||||
private static Raxen main;
|
private Raxen main;
|
||||||
private static EntityNamespacedKey namespacedKey;
|
private EntityNamespacedKey namespacedKey;
|
||||||
|
|
||||||
public EntityUtils(Raxen main) {
|
public EntityUtils(Raxen main) {
|
||||||
this.main = main;
|
this.main = main;
|
||||||
namespacedKey = new EntityNamespacedKey(main);
|
namespacedKey = new EntityNamespacedKey(main);
|
||||||
}
|
|
||||||
|
|
||||||
public static void setNameSpacedKeys(
|
|
||||||
org.bukkit.entity.@NotNull Entity e,
|
|
||||||
String name,
|
|
||||||
Integer level,
|
|
||||||
int health,
|
|
||||||
int itemHealth,
|
|
||||||
int defense,
|
|
||||||
int itemDefense,
|
|
||||||
int speed,
|
|
||||||
int itemSpeed,
|
|
||||||
int strength,
|
|
||||||
int itemDmg
|
|
||||||
) {
|
|
||||||
PersistentDataContainer data = e.getPersistentDataContainer();
|
|
||||||
data.set(namespacedKey.health, PersistentDataType.INTEGER, health);
|
|
||||||
data.set(namespacedKey.itemHealth, PersistentDataType.INTEGER, itemHealth);
|
|
||||||
data.set(namespacedKey.speed, PersistentDataType.INTEGER, speed);
|
|
||||||
data.set(namespacedKey.itemSpeed, PersistentDataType.INTEGER, itemSpeed);
|
|
||||||
data.set(namespacedKey.defense, PersistentDataType.INTEGER, defense);
|
|
||||||
data.set(
|
|
||||||
namespacedKey.itemDefense,
|
|
||||||
PersistentDataType.INTEGER,
|
|
||||||
itemDefense
|
|
||||||
);
|
|
||||||
data.set(namespacedKey.strength, PersistentDataType.INTEGER, strength);
|
|
||||||
data.set(namespacedKey.itemStrength, PersistentDataType.INTEGER, itemDmg);
|
|
||||||
data.set(namespacedKey.name, PersistentDataType.STRING, name);
|
|
||||||
data.set(namespacedKey.level, PersistentDataType.INTEGER, level);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void updateSkills(@NotNull LivingEntity livingEntity) {
|
|
||||||
PlayerManager pm =
|
|
||||||
((Raxen) Bukkit.getPluginManager().getPlugin("Raxen")).getManager()
|
|
||||||
.getPlayerManager();
|
|
||||||
int maxHealth, health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemStrength, maxMana, mana, itemMana, luck, itemLuck;
|
|
||||||
defense = pm.getDefense().get(livingEntity);
|
|
||||||
maxMana = pm.getMaxMana().get(livingEntity);
|
|
||||||
itemDefense = pm.getItemDefense().get(livingEntity);
|
|
||||||
health = pm.getHealth().get(livingEntity);
|
|
||||||
itemHealth = pm.getItemHealth().get(livingEntity);
|
|
||||||
mana = pm.getMana().get(livingEntity);
|
|
||||||
speed = pm.getSpeed().get(livingEntity);
|
|
||||||
itemLuck = pm.getItemLuck().get(livingEntity);
|
|
||||||
strength = pm.getStrength().get(livingEntity);
|
|
||||||
luck = pm.getLuck().get(livingEntity);
|
|
||||||
maxHealth = pm.getMaxHealth().get(livingEntity);
|
|
||||||
itemStrength = pm.getItemStrength().get(livingEntity);
|
|
||||||
itemSpeed = pm.getItemSpeed().get(livingEntity);
|
|
||||||
itemMana = pm.getItemMana().get(livingEntity);
|
|
||||||
if (
|
|
||||||
livingEntity.getAttribute(
|
|
||||||
org.bukkit.attribute.Attribute.GENERIC_FLYING_SPEED
|
|
||||||
) !=
|
|
||||||
null
|
|
||||||
) {
|
|
||||||
livingEntity
|
|
||||||
.getAttribute(org.bukkit.attribute.Attribute.GENERIC_FLYING_SPEED)
|
|
||||||
.setBaseValue((float) (0.0 + ((speed + itemSpeed) / 100) * 0.2));
|
|
||||||
}
|
}
|
||||||
if (
|
|
||||||
livingEntity.getAttribute(
|
public void setNameSpacedKeys(
|
||||||
org.bukkit.attribute.Attribute.GENERIC_MOVEMENT_SPEED
|
org.bukkit.entity.@NotNull Entity e,
|
||||||
) !=
|
String name,
|
||||||
null
|
Integer level,
|
||||||
|
int health,
|
||||||
|
int itemHealth,
|
||||||
|
int defense,
|
||||||
|
int itemDefense,
|
||||||
|
int speed,
|
||||||
|
int itemSpeed,
|
||||||
|
int strength,
|
||||||
|
int itemDmg
|
||||||
) {
|
) {
|
||||||
livingEntity
|
PersistentDataContainer data = e.getPersistentDataContainer();
|
||||||
.getAttribute(org.bukkit.attribute.Attribute.GENERIC_MOVEMENT_SPEED)
|
data.set(namespacedKey.health, PersistentDataType.INTEGER, health);
|
||||||
.setBaseValue((float) (0.0 + ((speed + itemSpeed) / 100) * 0.2));
|
data.set(
|
||||||
|
namespacedKey.itemHealth,
|
||||||
|
PersistentDataType.INTEGER,
|
||||||
|
itemHealth
|
||||||
|
);
|
||||||
|
data.set(namespacedKey.speed, PersistentDataType.INTEGER, speed);
|
||||||
|
data.set(
|
||||||
|
namespacedKey.itemSpeed,
|
||||||
|
PersistentDataType.INTEGER,
|
||||||
|
itemSpeed
|
||||||
|
);
|
||||||
|
data.set(namespacedKey.defense, PersistentDataType.INTEGER, defense);
|
||||||
|
data.set(
|
||||||
|
namespacedKey.itemDefense,
|
||||||
|
PersistentDataType.INTEGER,
|
||||||
|
itemDefense
|
||||||
|
);
|
||||||
|
data.set(namespacedKey.strength, PersistentDataType.INTEGER, strength);
|
||||||
|
data.set(
|
||||||
|
namespacedKey.itemStrength,
|
||||||
|
PersistentDataType.INTEGER,
|
||||||
|
itemDmg
|
||||||
|
);
|
||||||
|
data.set(namespacedKey.name, PersistentDataType.STRING, name);
|
||||||
|
data.set(namespacedKey.level, PersistentDataType.INTEGER, level);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateSkills(@NotNull LivingEntity livingEntity) {
|
||||||
|
PlayerManager pm =
|
||||||
|
((Raxen) Bukkit.getPluginManager().getPlugin("Raxen")).getManager()
|
||||||
|
.getPlayerManager();
|
||||||
|
int maxHealth, health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemStrength, maxMana, mana, itemMana, luck, itemLuck;
|
||||||
|
defense = pm.getDefense().get(livingEntity);
|
||||||
|
maxMana = pm.getMaxMana().get(livingEntity);
|
||||||
|
itemDefense = pm.getItemDefense().get(livingEntity);
|
||||||
|
health = pm.getHealth().get(livingEntity);
|
||||||
|
itemHealth = pm.getItemHealth().get(livingEntity);
|
||||||
|
mana = pm.getMana().get(livingEntity);
|
||||||
|
speed = pm.getSpeed().get(livingEntity);
|
||||||
|
itemLuck = pm.getItemLuck().get(livingEntity);
|
||||||
|
strength = pm.getStrength().get(livingEntity);
|
||||||
|
luck = pm.getLuck().get(livingEntity);
|
||||||
|
maxHealth = pm.getMaxHealth().get(livingEntity);
|
||||||
|
itemStrength = pm.getItemStrength().get(livingEntity);
|
||||||
|
itemSpeed = pm.getItemSpeed().get(livingEntity);
|
||||||
|
itemMana = pm.getItemMana().get(livingEntity);
|
||||||
|
if (
|
||||||
|
livingEntity.getAttribute(
|
||||||
|
org.bukkit.attribute.Attribute.GENERIC_FLYING_SPEED
|
||||||
|
) !=
|
||||||
|
null
|
||||||
|
) {
|
||||||
|
livingEntity
|
||||||
|
.getAttribute(
|
||||||
|
org.bukkit.attribute.Attribute.GENERIC_FLYING_SPEED
|
||||||
|
)
|
||||||
|
.setBaseValue(
|
||||||
|
(float) (0.0 + ((speed + itemSpeed) / 100) * 0.2)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
livingEntity.getAttribute(
|
||||||
|
org.bukkit.attribute.Attribute.GENERIC_MOVEMENT_SPEED
|
||||||
|
) !=
|
||||||
|
null
|
||||||
|
) {
|
||||||
|
livingEntity
|
||||||
|
.getAttribute(
|
||||||
|
org.bukkit.attribute.Attribute.GENERIC_MOVEMENT_SPEED
|
||||||
|
)
|
||||||
|
.setBaseValue(
|
||||||
|
(float) (0.0 + ((speed + itemSpeed) / 100) * 0.2)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
livingEntity
|
||||||
|
.getAttribute(org.bukkit.attribute.Attribute.GENERIC_MAX_HEALTH)
|
||||||
|
.setBaseValue(20D + (health + itemHealth) / 100);
|
||||||
|
debug(
|
||||||
|
"Entity " + livingEntity.getType().name(),
|
||||||
|
"Speed " + (speed + itemSpeed),
|
||||||
|
"Health " + (health + itemHealth) + " Max Health " + maxHealth,
|
||||||
|
"Defense " + (defense + itemDefense),
|
||||||
|
"Strength " + (strength + itemStrength),
|
||||||
|
"Luck " + (luck + itemLuck),
|
||||||
|
"Mana " + (mana + itemMana) + " Max Mana " + maxMana
|
||||||
|
);
|
||||||
}
|
}
|
||||||
livingEntity
|
|
||||||
.getAttribute(org.bukkit.attribute.Attribute.GENERIC_MAX_HEALTH)
|
|
||||||
.setBaseValue(20D + (health + itemHealth) / 100);
|
|
||||||
debug(
|
|
||||||
"Entity " + livingEntity.getType().name(),
|
|
||||||
"Speed " + (speed + itemSpeed),
|
|
||||||
"Health " + (health + itemHealth) + " Max Health " + maxHealth,
|
|
||||||
"Defense " + (defense + itemDefense),
|
|
||||||
"Strength " + (strength + itemStrength),
|
|
||||||
"Luck " + (luck + itemLuck),
|
|
||||||
"Mana " + (mana + itemMana) + " Max Mana " + maxMana
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,352 @@
|
||||||
|
package me.unurled.raxen.components.entity.other;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
import java.util.UUID;
|
||||||
|
import me.unurled.raxen.Raxen;
|
||||||
|
import me.unurled.raxen.components.entity.Attributes.Attribute;
|
||||||
|
import me.unurled.raxen.components.entity.Attributes.Health;
|
||||||
|
import me.unurled.raxen.components.entity.DamageType;
|
||||||
|
import me.unurled.raxen.components.entity.player.RaxenPlayer;
|
||||||
|
import me.unurled.raxen.manager.entity.EntityManager;
|
||||||
|
import me.unurled.raxen.utils.EntityUtils;
|
||||||
|
import me.unurled.raxen.utils.Tags;
|
||||||
|
import me.unurled.raxen.utils.Utils;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.EntityEffect;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.LivingEntity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
|
public class MobData {
|
||||||
|
|
||||||
|
public Raxen main;
|
||||||
|
private static int MOB_ID = 0;
|
||||||
|
public int id = MOB_ID++;
|
||||||
|
public boolean dead = false;
|
||||||
|
public LivingEntity entity;
|
||||||
|
public LivingEntity mount = null;
|
||||||
|
|
||||||
|
String nameWithoutLevel;
|
||||||
|
String fullName;
|
||||||
|
|
||||||
|
public MobType mobType;
|
||||||
|
|
||||||
|
public Attribute attributes;
|
||||||
|
public HashMap<UUID, Long> lastAttackedByTimes;
|
||||||
|
public HashMap<UUID, Long> damageDealt;
|
||||||
|
public long lastDamaged = 0;
|
||||||
|
public long lastKnockback = 0;
|
||||||
|
|
||||||
|
public boolean despawned = false;
|
||||||
|
public long invuln = 0; // cannot attack or damage
|
||||||
|
private Runnable lastScheduledRevertHP = null;
|
||||||
|
|
||||||
|
// TODO: public ArrayList<MobAttributes> attributes;
|
||||||
|
|
||||||
|
// TODO: mob ai
|
||||||
|
|
||||||
|
// TODO: mob spawn
|
||||||
|
|
||||||
|
public MobData() {
|
||||||
|
lastAttackedByTimes = new HashMap<>();
|
||||||
|
damageDealt = new HashMap<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void mount(Class<? extends Entity> mountClass) {
|
||||||
|
if (entity == null || dead) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mount = EntityUtils.createLivingEntity(mountClass, entity.getLocation());
|
||||||
|
mount.addPassenger(entity);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void die() {
|
||||||
|
die(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void die(boolean drop) {
|
||||||
|
if (dead) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dead = true;
|
||||||
|
Location deathLoc = entity.getLocation();
|
||||||
|
entity.customName(Component.text(fullName));
|
||||||
|
Tags.makeFloatingText("<gold>+" + mobType.xp + " XP", deathLoc, 1.3, 1.0, 1.5, 1);
|
||||||
|
if (mount != null) {
|
||||||
|
try {
|
||||||
|
mount.eject();
|
||||||
|
entity.leaveVehicle();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
mount.damage(1000000000);
|
||||||
|
}
|
||||||
|
entity.damage(1000000000);
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
despawn();
|
||||||
|
}
|
||||||
|
}.runTaskLater(main, 20);
|
||||||
|
int totalLevel = 0;
|
||||||
|
int pdCount = 0;
|
||||||
|
ArrayList<RaxenPlayer> raxenPlayers = new ArrayList<>();
|
||||||
|
double damageSum = 0;
|
||||||
|
RaxenPlayer rx = null;
|
||||||
|
for (Entry<UUID, Long> entry : damageDealt.entrySet()) {
|
||||||
|
if ((rx = main.getManager().getPlayerManager().getRaxenPlayer(entry.getKey()))
|
||||||
|
!= null) {
|
||||||
|
raxenPlayers.add(rx);
|
||||||
|
damageSum += entry.getValue();
|
||||||
|
totalLevel += rx.getLevel();
|
||||||
|
pdCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (pdCount < 1) {
|
||||||
|
totalLevel = 1;
|
||||||
|
pdCount = 1;
|
||||||
|
}
|
||||||
|
double avgLv = totalLevel / (double) pdCount;
|
||||||
|
for (RaxenPlayer tx : raxenPlayers) {
|
||||||
|
if (damageDealt.containsKey(tx.getPlayer().getUniqueId())) {
|
||||||
|
tx.incrementMobCounter(mobType.identifier);
|
||||||
|
double precentage =
|
||||||
|
damageDealt.get(tx.getPlayer().getUniqueId()) / (double) damageSum;
|
||||||
|
if (precentage >= 0.1) {
|
||||||
|
tx.addMobKills();
|
||||||
|
}
|
||||||
|
long amt = (long) Math.ceil(mobType.xp * precentage);
|
||||||
|
if (!(mobType.level >= 80 && tx.getLevel() >= 80) && Math.abs(
|
||||||
|
tx.getLevel() - mobType.level) >= 10) {
|
||||||
|
double penalty = 0.7;
|
||||||
|
penalty -= (Math.abs(tx.getLevel() - mobType.level) - 10) * 0.06;
|
||||||
|
if (penalty < 0.1) {
|
||||||
|
penalty = 0.1;
|
||||||
|
}
|
||||||
|
tx.gainXp((long) Math.ceil(amt * penalty), true);
|
||||||
|
} else {
|
||||||
|
tx.gainXp(amt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
long mostDealt = 0;
|
||||||
|
UUID priority = null;
|
||||||
|
RaxenPlayer topDamage = null;
|
||||||
|
for (Entry<UUID, Long> entry : damageDealt.entrySet()) {
|
||||||
|
Player p = Bukkit.getPlayer(entry.getKey());
|
||||||
|
if (p == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (me.unurled.raxen.utils.Math.flatDistance(p.getLocation(), deathLoc) < 50) {
|
||||||
|
if (entry.getValue() >= mostDealt) {
|
||||||
|
if (entry.getValue() == mostDealt && Math.random() > 0.5) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (main.getManager().getPlayerManager().getRaxenPlayer(entry.getKey())
|
||||||
|
== null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
mostDealt = entry.getValue();
|
||||||
|
priority = entry.getKey();
|
||||||
|
topDamage = main.getManager().getPlayerManager().getRaxenPlayer(priority);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EntityManager manager = main.getManager().getEntityManager();
|
||||||
|
if (drop || manager.getHealth().get(entity) < manager.getMaxMana().get(entity)) {
|
||||||
|
// TODO: mobdrop
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: respawn
|
||||||
|
}
|
||||||
|
|
||||||
|
public void despawn() {
|
||||||
|
if (despawned) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// TODO: respawn
|
||||||
|
despawned = true;
|
||||||
|
dead = true;
|
||||||
|
EntityManager manager = main.getManager().getEntityManager();
|
||||||
|
if (entity == null) {
|
||||||
|
manager.getSpawnedMob().remove(entity.getUniqueId());
|
||||||
|
manager.getSpawnedMobsOnlyMain().remove(entity.getUniqueId());
|
||||||
|
entity.remove();
|
||||||
|
}
|
||||||
|
entity = null;
|
||||||
|
if (mount != null) {
|
||||||
|
manager.getSpawnedMob().remove(mount.getUniqueId());
|
||||||
|
manager.getSpawnedMobsOnlyMain().remove(mount.getUniqueId());
|
||||||
|
mount.remove();
|
||||||
|
}
|
||||||
|
mount = null;
|
||||||
|
// TODO: ai
|
||||||
|
if (damageDealt != null) {
|
||||||
|
damageDealt = null;
|
||||||
|
}
|
||||||
|
attributes = null;
|
||||||
|
lastAttackedByTimes = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean attack(RaxenPlayer rx) {
|
||||||
|
return attack(rx, 0.5, -1, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean attack(RaxenPlayer pd, int rpgDamage) {
|
||||||
|
return attack(pd, 0.5, rpgDamage, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean attack(RaxenPlayer pd, int rpgDamage, boolean projectile) {
|
||||||
|
return attack(pd, 0.5, rpgDamage, projectile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getDamage() {
|
||||||
|
return main.getManager().getEntityManager().getStrength()
|
||||||
|
.get(entity); // TODO: get damage properly
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean attack(RaxenPlayer pd, double knockback, int rpgDamage, boolean projectile) {
|
||||||
|
if (System.currentTimeMillis() < invuln) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
boolean success = false;
|
||||||
|
success = pd.damage(rpgDamage > -1 ? rpgDamage : getDamage(), entity,
|
||||||
|
DamageType.NORMAL);
|
||||||
|
if (success && !projectile) {
|
||||||
|
pd.knockback(entity, knockback);
|
||||||
|
}
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void knockback(LivingEntity attacker, double knockBackMultiplier) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean damage(int damageAmount, org.bukkit.entity.Entity damager,
|
||||||
|
DamageType damageType) {
|
||||||
|
return damage(damageAmount, damager, damageType, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean damage(int damageAmount, org.bukkit.entity.Entity damager, DamageType damageType,
|
||||||
|
boolean crit) {
|
||||||
|
if (System.currentTimeMillis() < invuln) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (dead) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (damager != null && damager instanceof Player player) {
|
||||||
|
if (!player.isOnline()
|
||||||
|
|| main.getManager().getPlayerManager().getRaxenPlayer(player) == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Health health = main.getManager().getEntityManager().getHealth();
|
||||||
|
if (damageAmount > health.get(entity)) {
|
||||||
|
damageAmount = health.get(entity);
|
||||||
|
}
|
||||||
|
if (damager != null && damager instanceof Player player) {
|
||||||
|
if (damageDealt.containsKey(damager.getUniqueId())) {
|
||||||
|
damageDealt.put(damager.getUniqueId(),
|
||||||
|
damageDealt.get(damager.getUniqueId()) + damageAmount);
|
||||||
|
} else {
|
||||||
|
damageDealt.put(damager.getUniqueId(), (long) damageAmount);
|
||||||
|
}
|
||||||
|
// TODO: AI stuff
|
||||||
|
}
|
||||||
|
if (damager != null) {
|
||||||
|
lastAttackedByTimes.put(damager.getUniqueId(), System.currentTimeMillis());
|
||||||
|
}
|
||||||
|
if (damageAmount < 1) {
|
||||||
|
damageAmount = 1;
|
||||||
|
}
|
||||||
|
health.set(entity,
|
||||||
|
health.get(entity) - damageAmount);
|
||||||
|
if (health.get(entity) <= 0) {
|
||||||
|
health.set(entity, 0);
|
||||||
|
}
|
||||||
|
if (damager != null && damager instanceof Player player) {
|
||||||
|
RaxenPlayer rx = main.getManager().getPlayerManager().getRaxenPlayer(player);
|
||||||
|
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_HURT, 0.65f, 0.75f);
|
||||||
|
}
|
||||||
|
if (health.get(entity) < 1) {
|
||||||
|
die();
|
||||||
|
} else {
|
||||||
|
entity.playEffect(EntityEffect.HURT);
|
||||||
|
if (mount != null) {
|
||||||
|
mount.playEffect(EntityEffect.HURT);
|
||||||
|
}
|
||||||
|
displayCurrentHP();
|
||||||
|
}
|
||||||
|
lastDamaged = System.currentTimeMillis();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void displayCurrentHP() {
|
||||||
|
entity.customName(getHPDisplay());
|
||||||
|
Bukkit.getScheduler().scheduleSyncDelayedTask(main, lastScheduledRevertHP = new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
if (!dead && entity != null && entity.isValid() && !entity.isDead()) {
|
||||||
|
if (lastScheduledRevertHP == this) {
|
||||||
|
entity.customName(Utils.colorComp(fullName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 60L);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Component getHPDisplay() {
|
||||||
|
EntityManager manager = main.getManager().getEntityManager();
|
||||||
|
int health = manager.getHealth().get(entity);
|
||||||
|
int maxHealth = manager.getMaxHealth().get(entity);
|
||||||
|
double percent = ((double) health) / ((double) maxHealth);
|
||||||
|
int green = (int) Math.floor(percent / 0.05);
|
||||||
|
if (green > 20) {
|
||||||
|
green = 20;
|
||||||
|
} else if (green < 1) {
|
||||||
|
green = 1;
|
||||||
|
}
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append("<gray>");
|
||||||
|
sb.append('[');
|
||||||
|
int firstHalf = green - 10;
|
||||||
|
if (firstHalf < 0) {
|
||||||
|
firstHalf = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
sb.append("<dark_red>");
|
||||||
|
for (int i = 0; i < 10 - firstHalf; i++) {
|
||||||
|
sb.append('|');
|
||||||
|
}
|
||||||
|
sb.append("<green>");
|
||||||
|
for (int i = 0; i < firstHalf; i++) {
|
||||||
|
sb.append('|');
|
||||||
|
}
|
||||||
|
sb.append("<gold>"); // TODO: tier color
|
||||||
|
sb.append(' ');
|
||||||
|
sb.append(health);
|
||||||
|
sb.append(' ');
|
||||||
|
int secondHalf = green - firstHalf;
|
||||||
|
|
||||||
|
sb.append("<dark_red>");
|
||||||
|
for (int i = 0; i < 10 - secondHalf; i++) {
|
||||||
|
sb.append('|');
|
||||||
|
}
|
||||||
|
sb.append("<green>");
|
||||||
|
for (int i = 0; i < secondHalf; i++) {
|
||||||
|
sb.append('|');
|
||||||
|
}
|
||||||
|
|
||||||
|
sb.append("<gray>");
|
||||||
|
sb.append(']');
|
||||||
|
return Utils.colorComp(sb.toString());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
package me.unurled.raxen.components.entity.other;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public class MobType {
|
||||||
|
|
||||||
|
public String identifier;
|
||||||
|
public String name;
|
||||||
|
public Class<? extends Entity> entityClass;
|
||||||
|
public int level;
|
||||||
|
public ArrayList<String> prefixes;
|
||||||
|
public ArrayList<String> suffix;
|
||||||
|
public long xp;
|
||||||
|
public ArrayList<ItemStack> equips;
|
||||||
|
// TODO: public ArrayList<MobAttributes> attributes;
|
||||||
|
public boolean hasSkull = false;
|
||||||
|
public ItemStack offHand;
|
||||||
|
|
||||||
|
public int getTier() {
|
||||||
|
if (level >= 80) {
|
||||||
|
return 5;
|
||||||
|
} else if (level >= 60) {
|
||||||
|
return 4;
|
||||||
|
} else if (level >= 40) {
|
||||||
|
return 3;
|
||||||
|
} else if (level >= 20) {
|
||||||
|
return 2;
|
||||||
|
} else {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,70 +1,276 @@
|
||||||
package me.unurled.raxen.components.entity.other;
|
package me.unurled.raxen.components.entity.other;
|
||||||
|
|
||||||
|
import static me.unurled.raxen.utils.Utils.colorString;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
import java.util.UUID;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import me.unurled.raxen.Raxen;
|
import me.unurled.raxen.Raxen;
|
||||||
|
import me.unurled.raxen.components.entity.DamageType;
|
||||||
|
import me.unurled.raxen.components.entity.player.RaxenPlayer;
|
||||||
|
import me.unurled.raxen.utils.Tags;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.NamespacedKey;
|
import org.bukkit.NamespacedKey;
|
||||||
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.persistence.PersistentDataContainer;
|
import org.bukkit.persistence.PersistentDataContainer;
|
||||||
import org.bukkit.persistence.PersistentDataType;
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
|
|
||||||
public abstract class RaxenEntity {
|
public abstract class RaxenEntity {
|
||||||
|
|
||||||
private final Raxen main;
|
private final Raxen main;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private Integer level;
|
private final String ID;
|
||||||
|
|
||||||
@Getter
|
public Component fullName;
|
||||||
@Setter
|
|
||||||
private Double health;
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
private Integer level;
|
||||||
private Double strength;
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
Boolean isAlive = false;
|
private Double health;
|
||||||
|
|
||||||
public RaxenEntity(
|
@Getter
|
||||||
Raxen main,
|
@Setter
|
||||||
String name,
|
private Double strength;
|
||||||
Integer level,
|
|
||||||
Double health,
|
|
||||||
Double strength
|
|
||||||
) {
|
|
||||||
this.main = main;
|
|
||||||
this.name = name;
|
|
||||||
this.level = level;
|
|
||||||
this.health = health;
|
|
||||||
this.strength = strength;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Entity createEntity(EntityType types, String name, Location location) {
|
@Getter
|
||||||
Entity e = location.getWorld().spawnEntity(location, types);
|
@Setter
|
||||||
e.setCustomNameVisible(true);
|
Boolean isAlive = false;
|
||||||
e.customName(Component.text(name));
|
|
||||||
|
|
||||||
return e;
|
boolean despawned = false;
|
||||||
}
|
|
||||||
|
|
||||||
public void register(Entity e) {
|
me.unurled.raxen.components.entity.other.custom.Entity entity;
|
||||||
PersistentDataContainer data = e.getPersistentDataContainer();
|
public HashMap<UUID, Long> lastAttackedByTimes;
|
||||||
data.set(new NamespacedKey(main, "NAME"), PersistentDataType.STRING, name);
|
public java.util.HashMap<UUID, Long> damageDealt;
|
||||||
}
|
|
||||||
|
|
||||||
public Double getMaxHealth(Entity e) {
|
@Getter
|
||||||
PersistentDataContainer data = e.getPersistentDataContainer();
|
@Setter
|
||||||
EntityNamespacedKey key = new EntityNamespacedKey(main);
|
Boolean isHostile;
|
||||||
return data.get(key.maxHealth, PersistentDataType.DOUBLE);
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract Entity createEntity(Location location);
|
public RaxenEntity(
|
||||||
|
Raxen main,
|
||||||
|
String name,
|
||||||
|
String id,
|
||||||
|
Integer level,
|
||||||
|
Double health,
|
||||||
|
Double strength
|
||||||
|
) {
|
||||||
|
this.main = main;
|
||||||
|
this.name = name;
|
||||||
|
ID = id;
|
||||||
|
this.level = level;
|
||||||
|
this.health = health;
|
||||||
|
this.strength = strength;
|
||||||
|
isHostile = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*public Entity createEntity(
|
||||||
|
me.unurled.raxen.components.entity.other.custom.Entity ent,
|
||||||
|
String name,
|
||||||
|
Location location
|
||||||
|
) {
|
||||||
|
me.unurled.raxen.components.entity.other.custom.Entity e = (me.unurled.raxen.components.entity.other.custom.Entity) location.getWorld()
|
||||||
|
// .spawnEntity(location, ent);
|
||||||
|
e.setCustomNameVisible(true);
|
||||||
|
e.customName(Component.text(name));
|
||||||
|
entity = e;
|
||||||
|
return e;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
public void register(Entity e) {
|
||||||
|
PersistentDataContainer data = e.getPersistentDataContainer();
|
||||||
|
data.set(
|
||||||
|
new NamespacedKey(main, "NAME"),
|
||||||
|
PersistentDataType.STRING,
|
||||||
|
name
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getMaxHealth(Entity e) {
|
||||||
|
PersistentDataContainer data = e.getPersistentDataContainer();
|
||||||
|
EntityNamespacedKey key = new EntityNamespacedKey(main);
|
||||||
|
return data.get(key.maxHealth, PersistentDataType.DOUBLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract Entity createEntity(Location location);
|
||||||
|
|
||||||
|
public void die() {
|
||||||
|
die(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void die(boolean drop) {
|
||||||
|
if (!isAlive) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
isAlive = false;
|
||||||
|
// set mob ai false
|
||||||
|
Location deathLoc = entity.getLocation();
|
||||||
|
entity.customName(fullName);
|
||||||
|
Tags.makeFloatingText("<gold>+ EXP", deathLoc, 1.3, 1.0, 1.5, 1);
|
||||||
|
// TODO: damge entity method damage
|
||||||
|
// TODO: desawn
|
||||||
|
// TODO: xp
|
||||||
|
|
||||||
|
// xp
|
||||||
|
int totalLevel = 0;
|
||||||
|
int pdCount = 0;
|
||||||
|
ArrayList<RaxenPlayer> players = new ArrayList<>();
|
||||||
|
double damageSum = 0;
|
||||||
|
RaxenPlayer player = null;
|
||||||
|
for (Entry<UUID, Long> entry : damageDealt.entrySet()) {
|
||||||
|
if ((player = main.getManager().getPlayerManager().getRaxenPlayer(entry.getKey()))
|
||||||
|
!= null) {
|
||||||
|
damageSum += entry.getValue();
|
||||||
|
totalLevel += player.getLevel();
|
||||||
|
pdCount++;
|
||||||
|
players.add(main.getManager().getPlayerManager().getRaxenPlayer(entry.getKey()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (pdCount < 1) {
|
||||||
|
totalLevel = 1;
|
||||||
|
pdCount = 1;
|
||||||
|
}
|
||||||
|
double avgLv = totalLevel / (double) pdCount;
|
||||||
|
for (RaxenPlayer pd : players) {
|
||||||
|
if (damageDealt.containsKey(pd.getPlayer().getUniqueId())) {
|
||||||
|
pd.incrementMobCounter(ID);
|
||||||
|
double percentage =
|
||||||
|
damageDealt.get(pd.getPlayer().getUniqueId()) / (double) damageSum;
|
||||||
|
if (percentage >= 0.10) {
|
||||||
|
pd.addMobKills();
|
||||||
|
// IDEA: is boss add to counter
|
||||||
|
}
|
||||||
|
long amt = (long) Math.ceil(entity.getXp() * percentage);
|
||||||
|
if (!(level >= 80 && pd.getLevel() >= 80)
|
||||||
|
&& Math.abs(pd.getLevel() - level) >= 10) {
|
||||||
|
double penalty = 0.70;
|
||||||
|
penalty -= (Math.abs(pd.getLevel() - level) - 10) * 0.06;
|
||||||
|
if (penalty < 0.10) {
|
||||||
|
penalty = 0.10;
|
||||||
|
}
|
||||||
|
pd.gainXp((long) Math.ceil(amt * penalty), true);
|
||||||
|
} else {
|
||||||
|
pd.gainXp(amt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void despawn() {
|
||||||
|
if (despawned) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
despawned = true;
|
||||||
|
if (entity != null) {
|
||||||
|
entity.remove();
|
||||||
|
}
|
||||||
|
entity = null;
|
||||||
|
// TODO: bosses, respawn etc
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean attack(RaxenPlayer pd) {
|
||||||
|
return attack(pd, 0.5, -1, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean attack(RaxenPlayer pd, int rpgDamage) {
|
||||||
|
return attack(pd, 0.5, rpgDamage, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean attack(RaxenPlayer pd, int rpgDamage, boolean projectile) {
|
||||||
|
return attack(pd, 0.5, rpgDamage, projectile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean attack(RaxenPlayer pd, double knockback, int rDamage, boolean projectile) {
|
||||||
|
boolean sucess = false;
|
||||||
|
sucess = pd.damage(rDamage > -1 ? rDamage : (int) entity.getDamage(), entity,
|
||||||
|
DamageType.NORMAL);
|
||||||
|
if (sucess && !projectile) {
|
||||||
|
// pd.knockback(entity, knockback);
|
||||||
|
// TODO: knockback
|
||||||
|
}
|
||||||
|
return sucess;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean damage(int damageAmount, Entity damager, DamageType damageType) {
|
||||||
|
return damage(damageAmount, damager, damageType, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean damage(int damage, Entity damager, DamageType damageType, boolean crit) {
|
||||||
|
if (!isAlive) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (damager != null && damager instanceof Player player) {
|
||||||
|
if (!player.isOnline()
|
||||||
|
|| main.getManager().getPlayerManager().getRaxenPlayer(player) == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (damage > entity.getHealth()) {
|
||||||
|
damage = entity.getHealth().intValue();
|
||||||
|
}
|
||||||
|
if (damager != null && damager instanceof Player player) {
|
||||||
|
RaxenPlayer pd = main.getManager().getPlayerManager().getRaxenPlayer(player);
|
||||||
|
if (damageDealt.containsKey(damager.getUniqueId())) {
|
||||||
|
damageDealt.put(damager.getUniqueId(),
|
||||||
|
damageDealt.get(damager.getUniqueId()) + damage);
|
||||||
|
} else {
|
||||||
|
damageDealt.put(damager.getUniqueId(), (long) damage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (damager != null) {
|
||||||
|
lastAttackedByTimes.put(damager.getUniqueId(), System.currentTimeMillis());
|
||||||
|
}
|
||||||
|
if (damage < 1) {
|
||||||
|
damage = 1;
|
||||||
|
}
|
||||||
|
health -= damage;
|
||||||
|
if (health < 0) {
|
||||||
|
health = 0.0;
|
||||||
|
}
|
||||||
|
if (damager != null && damager instanceof Player player) {
|
||||||
|
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_HURT, 0.65f, 0.75f);
|
||||||
|
}
|
||||||
|
if (health <= 0) {
|
||||||
|
die();
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFullName() {
|
||||||
|
if (isHostile) {
|
||||||
|
return colorString(
|
||||||
|
getLevel() +
|
||||||
|
"<white>⚔️" +
|
||||||
|
getName() +
|
||||||
|
"<red>" +
|
||||||
|
health +
|
||||||
|
"<white>/<white/>" +
|
||||||
|
getMaxHealth(entity)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return colorString(
|
||||||
|
getLevel() +
|
||||||
|
"<white>❤️" +
|
||||||
|
getName() +
|
||||||
|
"<red>" +
|
||||||
|
health +
|
||||||
|
"<white>/<white/>" +
|
||||||
|
getMaxHealth(entity)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,97 +7,108 @@ import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import me.unurled.raxen.Raxen;
|
import me.unurled.raxen.Raxen;
|
||||||
|
|
||||||
public class Entity {
|
public abstract class Entity implements org.bukkit.entity.Entity {
|
||||||
|
|
||||||
private java.util.UUID uuid;
|
private java.util.UUID uuid;
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private Integer level;
|
private Integer level;
|
||||||
|
|
||||||
@Setter
|
@Setter
|
||||||
private Double health;
|
private Double health;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
private Double strength;
|
private Double strength;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
private Double defense;
|
private Double defense;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
private Double speed;
|
private Double speed;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
private Double maxHealth;
|
private Double maxHealth;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
private boolean isHostile;
|
private boolean isHostile;
|
||||||
|
|
||||||
public Entity(
|
@Getter
|
||||||
String name,
|
@Setter
|
||||||
Integer level,
|
private double xp;
|
||||||
Double maxHealth,
|
|
||||||
Double strength,
|
|
||||||
Double defense,
|
|
||||||
Double speed,
|
|
||||||
boolean isHostile
|
|
||||||
) {
|
|
||||||
this.name = name;
|
|
||||||
this.level = level;
|
|
||||||
this.health = maxHealth;
|
|
||||||
this.strength = strength;
|
|
||||||
this.defense = defense;
|
|
||||||
this.speed = speed;
|
|
||||||
this.maxHealth = maxHealth;
|
|
||||||
this.isHostile = isHostile;
|
|
||||||
this.uuid = UUID.randomUUID();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void register(Raxen main) {
|
public Entity(
|
||||||
main.getManager().getEntityManager().entities.put(name, this);
|
String name,
|
||||||
}
|
Integer level,
|
||||||
|
Double maxHealth,
|
||||||
public String getName() {
|
Double strength,
|
||||||
return "<white>" + name;
|
Double defense,
|
||||||
}
|
Double speed,
|
||||||
|
boolean isHostile,
|
||||||
public String getFullName(Entity e) {
|
double xp
|
||||||
if (isHostile) {
|
) {
|
||||||
return colorString(
|
this.name = name;
|
||||||
getColorLevel() +
|
this.level = level;
|
||||||
"<white>⚔️" +
|
this.health = maxHealth;
|
||||||
getName() +
|
this.strength = strength;
|
||||||
"<red>" +
|
this.defense = defense;
|
||||||
health +
|
this.speed = speed;
|
||||||
"<white>/<white/>" +
|
this.maxHealth = maxHealth;
|
||||||
maxHealth
|
this.isHostile = isHostile;
|
||||||
);
|
this.uuid = UUID.randomUUID();
|
||||||
} else {
|
this.xp = xp;
|
||||||
return colorString(
|
|
||||||
getColorLevel() +
|
|
||||||
"<white>❤️" +
|
|
||||||
getName() +
|
|
||||||
"<red>" +
|
|
||||||
health +
|
|
||||||
"<white>/<white/>" +
|
|
||||||
maxHealth
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public String getColorLevel() {
|
public void register(Raxen main) {
|
||||||
return level.toString();
|
// main.getManager().getEntityManager().entities.put(name, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Double getHealth() {
|
public String getName() {
|
||||||
Double health = 0.0;
|
return "<white>" + name;
|
||||||
|
}
|
||||||
|
|
||||||
return health;
|
public String getFullName(Entity e) {
|
||||||
}
|
if (isHostile) {
|
||||||
|
return colorString(
|
||||||
|
getColorLevel() +
|
||||||
|
"<white>⚔️" +
|
||||||
|
getName() +
|
||||||
|
"<red>" +
|
||||||
|
health +
|
||||||
|
"<white>/<white/>" +
|
||||||
|
maxHealth
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return colorString(
|
||||||
|
getColorLevel() +
|
||||||
|
"<white>❤️" +
|
||||||
|
getName() +
|
||||||
|
"<red>" +
|
||||||
|
health +
|
||||||
|
"<white>/<white/>" +
|
||||||
|
maxHealth
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getColorLevel() {
|
||||||
|
return level.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getHealth() {
|
||||||
|
Double health = 0.0;
|
||||||
|
|
||||||
|
return health;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getDamage() {
|
||||||
|
// TODO: calculate properly the damage
|
||||||
|
return strength;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,25 +1,674 @@
|
||||||
package me.unurled.raxen.components.entity.other.custom;
|
package me.unurled.raxen.components.entity.other.custom;
|
||||||
|
|
||||||
|
import io.papermc.paper.entity.TeleportFlag;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import org.bukkit.EntityEffect;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Server;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
|
import org.bukkit.block.PistonMoveReaction;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.entity.Pose;
|
||||||
|
import org.bukkit.entity.SpawnCategory;
|
||||||
|
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||||
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
|
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||||
|
import org.bukkit.metadata.MetadataValue;
|
||||||
|
import org.bukkit.permissions.Permission;
|
||||||
|
import org.bukkit.permissions.PermissionAttachment;
|
||||||
|
import org.bukkit.permissions.PermissionAttachmentInfo;
|
||||||
|
import org.bukkit.persistence.PersistentDataContainer;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
import org.bukkit.util.BoundingBox;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class Humanoid extends Entity {
|
public class Humanoid extends Entity {
|
||||||
|
|
||||||
private String skin; // used to get the path to the skin
|
private String skin; // used to get the path to the skin
|
||||||
private UUID skinUuid; // used to get the player skin (if i do it this way...
|
private UUID skinUuid; // used to get the player skin (if i do it this way...
|
||||||
|
|
||||||
public Humanoid(
|
public Humanoid(String name, Integer level, Double maxHealth, Double strength, Double defense,
|
||||||
String name,
|
Double speed, boolean isHostile, double xp) {
|
||||||
Integer level,
|
super(name, level, maxHealth, strength, defense, speed, isHostile, xp);
|
||||||
Double maxHealth,
|
}
|
||||||
Double strength,
|
|
||||||
Double defense,
|
@Override
|
||||||
Double speed,
|
public @NotNull Location getLocation() {
|
||||||
boolean isHostile,
|
return null;
|
||||||
String skin,
|
}
|
||||||
UUID skinUuid
|
|
||||||
) {
|
@Override
|
||||||
super(name, level, maxHealth, strength, defense, speed, isHostile);
|
public @Nullable Location getLocation(@Nullable Location loc) {
|
||||||
this.skin = skin;
|
return null;
|
||||||
this.skinUuid = skinUuid;
|
}
|
||||||
}
|
|
||||||
|
@Override
|
||||||
|
public void setVelocity(@NotNull Vector velocity) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Vector getVelocity() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getHeight() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getWidth() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull BoundingBox getBoundingBox() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isOnGround() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInWater() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull World getWorld() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setRotation(float yaw, float pitch) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean teleport(@NotNull Location location,
|
||||||
|
@NotNull PlayerTeleportEvent.TeleportCause cause,
|
||||||
|
@NotNull TeleportFlag @NotNull ... teleportFlags) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean teleport(@NotNull Location location) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean teleport(@NotNull Location location,
|
||||||
|
@NotNull PlayerTeleportEvent.TeleportCause cause) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean teleport(org.bukkit.entity.@NotNull Entity destination) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean teleport(org.bukkit.entity.@NotNull Entity destination,
|
||||||
|
@NotNull PlayerTeleportEvent.TeleportCause cause) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull List<org.bukkit.entity.Entity> getNearbyEntities(double x, double y, double z) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getEntityId() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getFireTicks() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaxFireTicks() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setFireTicks(int ticks) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setVisualFire(boolean fire) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isVisualFire() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getFreezeTicks() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaxFreezeTicks() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setFreezeTicks(int ticks) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isFrozen() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isFreezeTickingLocked() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void lockFreezeTicks(boolean locked) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void remove() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isDead() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isValid() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sendMessage(@NotNull String message) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sendMessage(@NotNull String... messages) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sendMessage(@Nullable UUID sender, @NotNull String message) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sendMessage(@Nullable UUID sender, @NotNull String... messages) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Server getServer() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPersistent() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setPersistent(boolean persistent) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public org.bukkit.entity.@Nullable Entity getPassenger() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setPassenger(org.bukkit.entity.@NotNull Entity passenger) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull List<org.bukkit.entity.Entity> getPassengers() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addPassenger(org.bukkit.entity.@NotNull Entity passenger) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean removePassenger(org.bukkit.entity.@NotNull Entity passenger) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEmpty() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean eject() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getFallDistance() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setFallDistance(float distance) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setLastDamageCause(@Nullable EntityDamageEvent event) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable EntityDamageEvent getLastDamageCause() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull UUID getUniqueId() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getTicksLived() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTicksLived(int value) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void playEffect(@NotNull EntityEffect type) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull EntityType getType() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Sound getSwimSound() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Sound getSwimSplashSound() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Sound getSwimHighSpeedSplashSound() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInsideVehicle() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean leaveVehicle() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public org.bukkit.entity.@Nullable Entity getVehicle() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCustomNameVisible(boolean flag) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCustomNameVisible() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setVisibleByDefault(boolean visible) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isVisibleByDefault() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setGlowing(boolean flag) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isGlowing() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setInvulnerable(boolean flag) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInvulnerable() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSilent() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSilent(boolean flag) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasGravity() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setGravity(boolean gravity) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getPortalCooldown() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setPortalCooldown(int cooldown) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Set<String> getScoreboardTags() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addScoreboardTag(@NotNull String tag) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean removeScoreboardTag(@NotNull String tag) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull PistonMoveReaction getPistonMoveReaction() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull BlockFace getFacing() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Pose getPose() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSneaking() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSneaking(boolean sneak) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull SpawnCategory getSpawnCategory() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Spigot spigot() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Component name() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Component teamDisplayName() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable Location getOrigin() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean fromMobSpawner() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull CreatureSpawnEvent.SpawnReason getEntitySpawnReason() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isUnderWater() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInRain() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInBubbleColumn() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInWaterOrRain() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInWaterOrBubbleColumn() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInWaterOrRainOrBubbleColumn() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInLava() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isTicking() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Set<Player> getTrackedPlayers() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean spawnAt(@NotNull Location location,
|
||||||
|
@NotNull CreatureSpawnEvent.SpawnReason reason) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInPowderedSnow() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean collidesAt(@NotNull Location location) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean wouldCollideUsing(@NotNull BoundingBox boundingBox) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable Component customName() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void customName(@Nullable Component customName) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable String getCustomName() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCustomName(@Nullable String name) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setMetadata(@NotNull String metadataKey, @NotNull MetadataValue newMetadataValue) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull List<MetadataValue> getMetadata(@NotNull String metadataKey) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasMetadata(@NotNull String metadataKey) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeMetadata(@NotNull String metadataKey, @NotNull Plugin owningPlugin) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPermissionSet(@NotNull String name) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPermissionSet(@NotNull Permission perm) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(@NotNull String name) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(@NotNull Permission perm) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull PermissionAttachment addAttachment(@NotNull Plugin plugin, @NotNull String name,
|
||||||
|
boolean value) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull PermissionAttachment addAttachment(@NotNull Plugin plugin) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable PermissionAttachment addAttachment(@NotNull Plugin plugin,
|
||||||
|
@NotNull String name, boolean value, int ticks) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable PermissionAttachment addAttachment(@NotNull Plugin plugin, int ticks) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeAttachment(@NotNull PermissionAttachment attachment) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void recalculatePermissions() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Set<PermissionAttachmentInfo> getEffectivePermissions() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isOp() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOp(boolean value) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull PersistentDataContainer getPersistentDataContainer() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,36 +5,37 @@ import me.unurled.raxen.Raxen;
|
||||||
import me.unurled.raxen.components.entity.other.RaxenEntity;
|
import me.unurled.raxen.components.entity.other.RaxenEntity;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.EntityType;
|
|
||||||
|
|
||||||
public class Elf extends RaxenEntity {
|
public class Elf extends RaxenEntity {
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final String name;
|
private final String name;
|
||||||
|
private final String id = "elf";
|
||||||
|
|
||||||
public Elf(
|
public Elf(
|
||||||
Raxen main,
|
Raxen main,
|
||||||
String name,
|
String name,
|
||||||
Integer level,
|
Integer level,
|
||||||
Double health,
|
Double health,
|
||||||
Double strength
|
Double strength
|
||||||
) {
|
) {
|
||||||
super(main, name, level, health, strength);
|
super(main, name, "elf", level, health, strength);
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
/**
|
||||||
public Entity createEntity(Location location) {
|
* Elf Default values
|
||||||
return super.createEntity(EntityType.PLAYER, name, location);
|
*
|
||||||
}
|
* @param main the main instance
|
||||||
|
* @param name
|
||||||
|
*/
|
||||||
|
public Elf(Raxen main, String name) {
|
||||||
|
super(main, "Elf", "elf", 10, 120.0, 25.0);
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* Elf Default values
|
public Entity createEntity(Location location) {
|
||||||
* @param main the main instance
|
return null;
|
||||||
* @param name
|
}
|
||||||
*/
|
|
||||||
public Elf(Raxen main, String name) {
|
|
||||||
super(main, "Elf", 10, 120.0, 25.0);
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,31 +5,30 @@ import me.unurled.raxen.Raxen;
|
||||||
import me.unurled.raxen.components.entity.other.RaxenEntity;
|
import me.unurled.raxen.components.entity.other.RaxenEntity;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.EntityType;
|
|
||||||
|
|
||||||
public class Wolf extends RaxenEntity {
|
public class Wolf extends RaxenEntity {
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
public Wolf(
|
public Wolf(
|
||||||
Raxen main,
|
Raxen main,
|
||||||
String name,
|
String name,
|
||||||
Integer level,
|
Integer level,
|
||||||
Double health,
|
Double health,
|
||||||
Double strength
|
Double strength
|
||||||
) {
|
) {
|
||||||
super(main, name, level, health, strength);
|
super(main, name, "elf", level, health, strength);
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Wolf(Raxen main) {
|
public Wolf(Raxen main) {
|
||||||
super(main, "Wolf", 5, 100.0, 20.0);
|
super(main, "Wolf", "elf", 5, 100.0, 20.0);
|
||||||
this.name = "Wolf";
|
this.name = "Wolf";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Entity createEntity(Location location) {
|
public Entity createEntity(Location location) {
|
||||||
return super.createEntity(EntityType.WOLF, name, location);
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,39 +1,705 @@
|
||||||
package me.unurled.raxen.components.entity.other.custom.hostile.low;
|
package me.unurled.raxen.components.entity.other.custom.hostile.low;
|
||||||
|
|
||||||
|
import io.papermc.paper.entity.TeleportFlag;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
import me.unurled.raxen.Raxen;
|
import me.unurled.raxen.Raxen;
|
||||||
import me.unurled.raxen.components.entity.other.RaxenEntity;
|
import me.unurled.raxen.components.entity.other.RaxenEntity;
|
||||||
import me.unurled.raxen.components.entity.other.custom.Entity;
|
import me.unurled.raxen.components.entity.other.custom.Entity;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import org.bukkit.EntityEffect;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Server;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
|
import org.bukkit.block.PistonMoveReaction;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.entity.Pose;
|
||||||
|
import org.bukkit.entity.SpawnCategory;
|
||||||
|
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||||
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
|
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||||
|
import org.bukkit.metadata.MetadataValue;
|
||||||
|
import org.bukkit.permissions.Permission;
|
||||||
|
import org.bukkit.permissions.PermissionAttachment;
|
||||||
|
import org.bukkit.permissions.PermissionAttachmentInfo;
|
||||||
|
import org.bukkit.persistence.PersistentDataContainer;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
import org.bukkit.util.BoundingBox;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class Goblin extends Entity {
|
public class Goblin extends Entity {
|
||||||
|
|
||||||
RaxenEntity goblin;
|
RaxenEntity goblin;
|
||||||
|
|
||||||
public Goblin(Raxen main) {
|
public Goblin(Raxen main) {
|
||||||
super("Goblin", 1, 100.0, 10.0, 0.0, 50.0, true);
|
super("Goblin", 1, 100.0, 10.0, 0.0, 50.0, true, 100);
|
||||||
this.goblin =
|
this.goblin =
|
||||||
new RaxenEntity(main, "Goblin", 1, 100.0, 10.0) {
|
new RaxenEntity(main, "Goblin", "goblin", 1, 100.0, 10.0) {
|
||||||
@Override
|
@Override
|
||||||
public org.bukkit.entity.Entity createEntity(Location location) {
|
public org.bukkit.entity.Entity createEntity(
|
||||||
return super.createEntity(EntityType.PLAYER, "Goblin", location);
|
Location location
|
||||||
}
|
) {
|
||||||
};
|
return null;
|
||||||
register(main);
|
/* return super.createEntity(
|
||||||
}
|
EntityType.PLAYER,
|
||||||
|
"Goblin",
|
||||||
|
location
|
||||||
|
);*/
|
||||||
|
}
|
||||||
|
};
|
||||||
|
register(main);
|
||||||
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return "<white>" + goblin.getName();
|
return "<white>" + goblin.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFullName(Entity e) {
|
public String getFullName(Entity e) {
|
||||||
return (
|
return (
|
||||||
"<white>⚔️" +
|
"<white>⚔️" +
|
||||||
getName() +
|
getName() +
|
||||||
"<red>" +
|
"<red>" +
|
||||||
getHealth() +
|
getHealth() +
|
||||||
"<white>/<white/>" +
|
"<white>/<white/>" +
|
||||||
getMaxHealth()
|
getMaxHealth()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Location getLocation() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable Location getLocation(@Nullable Location loc) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setVelocity(@NotNull Vector velocity) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Vector getVelocity() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getHeight() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getWidth() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull BoundingBox getBoundingBox() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isOnGround() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInWater() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull World getWorld() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setRotation(float yaw, float pitch) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean teleport(@NotNull Location location,
|
||||||
|
@NotNull PlayerTeleportEvent.TeleportCause cause,
|
||||||
|
@NotNull TeleportFlag @NotNull ... teleportFlags) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean teleport(@NotNull Location location) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean teleport(@NotNull Location location,
|
||||||
|
@NotNull PlayerTeleportEvent.TeleportCause cause) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean teleport(org.bukkit.entity.@NotNull Entity destination) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean teleport(org.bukkit.entity.@NotNull Entity destination,
|
||||||
|
@NotNull PlayerTeleportEvent.TeleportCause cause) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull List<org.bukkit.entity.Entity> getNearbyEntities(double x, double y, double z) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getEntityId() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getFireTicks() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaxFireTicks() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setFireTicks(int ticks) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setVisualFire(boolean fire) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isVisualFire() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getFreezeTicks() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaxFreezeTicks() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setFreezeTicks(int ticks) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isFrozen() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isFreezeTickingLocked() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void lockFreezeTicks(boolean locked) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void remove() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isDead() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isValid() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sendMessage(@NotNull String message) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sendMessage(@NotNull String... messages) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sendMessage(@Nullable UUID sender, @NotNull String message) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sendMessage(@Nullable UUID sender, @NotNull String... messages) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Server getServer() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPersistent() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setPersistent(boolean persistent) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public org.bukkit.entity.@Nullable Entity getPassenger() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setPassenger(org.bukkit.entity.@NotNull Entity passenger) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull List<org.bukkit.entity.Entity> getPassengers() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addPassenger(org.bukkit.entity.@NotNull Entity passenger) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean removePassenger(org.bukkit.entity.@NotNull Entity passenger) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEmpty() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean eject() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getFallDistance() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setFallDistance(float distance) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setLastDamageCause(@Nullable EntityDamageEvent event) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable EntityDamageEvent getLastDamageCause() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull UUID getUniqueId() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getTicksLived() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTicksLived(int value) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void playEffect(@NotNull EntityEffect type) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull EntityType getType() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Sound getSwimSound() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Sound getSwimSplashSound() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Sound getSwimHighSpeedSplashSound() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInsideVehicle() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean leaveVehicle() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public org.bukkit.entity.@Nullable Entity getVehicle() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCustomNameVisible(boolean flag) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCustomNameVisible() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setVisibleByDefault(boolean visible) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isVisibleByDefault() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setGlowing(boolean flag) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isGlowing() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setInvulnerable(boolean flag) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInvulnerable() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSilent() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSilent(boolean flag) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasGravity() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setGravity(boolean gravity) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getPortalCooldown() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setPortalCooldown(int cooldown) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Set<String> getScoreboardTags() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addScoreboardTag(@NotNull String tag) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean removeScoreboardTag(@NotNull String tag) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull PistonMoveReaction getPistonMoveReaction() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull BlockFace getFacing() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Pose getPose() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSneaking() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSneaking(boolean sneak) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull SpawnCategory getSpawnCategory() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Spigot spigot() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Component name() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Component teamDisplayName() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable Location getOrigin() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean fromMobSpawner() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull CreatureSpawnEvent.SpawnReason getEntitySpawnReason() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isUnderWater() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInRain() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInBubbleColumn() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInWaterOrRain() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInWaterOrBubbleColumn() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInWaterOrRainOrBubbleColumn() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInLava() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isTicking() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Set<Player> getTrackedPlayers() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean spawnAt(@NotNull Location location,
|
||||||
|
@NotNull CreatureSpawnEvent.SpawnReason reason) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInPowderedSnow() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean collidesAt(@NotNull Location location) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean wouldCollideUsing(@NotNull BoundingBox boundingBox) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable Component customName() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void customName(@Nullable Component customName) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable String getCustomName() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCustomName(@Nullable String name) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setMetadata(@NotNull String metadataKey, @NotNull MetadataValue newMetadataValue) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull List<MetadataValue> getMetadata(@NotNull String metadataKey) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasMetadata(@NotNull String metadataKey) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeMetadata(@NotNull String metadataKey, @NotNull Plugin owningPlugin) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPermissionSet(@NotNull String name) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPermissionSet(@NotNull Permission perm) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(@NotNull String name) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(@NotNull Permission perm) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull PermissionAttachment addAttachment(@NotNull Plugin plugin, @NotNull String name,
|
||||||
|
boolean value) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull PermissionAttachment addAttachment(@NotNull Plugin plugin) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable PermissionAttachment addAttachment(@NotNull Plugin plugin,
|
||||||
|
@NotNull String name, boolean value, int ticks) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable PermissionAttachment addAttachment(@NotNull Plugin plugin, int ticks) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeAttachment(@NotNull PermissionAttachment attachment) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void recalculatePermissions() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Set<PermissionAttachmentInfo> getEffectivePermissions() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isOp() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOp(boolean value) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull PersistentDataContainer getPersistentDataContainer() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,17 +4,17 @@ import me.unurled.raxen.components.entity.player.storages.Inventory;
|
||||||
|
|
||||||
public class Inventories {
|
public class Inventories {
|
||||||
|
|
||||||
private Inventory inv;
|
private Inventory inv;
|
||||||
|
|
||||||
public Inventories(Inventory inv) {
|
public Inventories(Inventory inv) {
|
||||||
this.inv = inv;
|
this.inv = inv;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Inventory getInv() {
|
public Inventory getInv() {
|
||||||
return inv;
|
return inv;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setInv(Inventory inv) {
|
public void setInv(Inventory inv) {
|
||||||
this.inv = inv;
|
this.inv = inv;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,224 @@
|
||||||
|
package me.unurled.raxen.components.entity.player;
|
||||||
|
|
||||||
|
public class PlayerStatistics {
|
||||||
|
|
||||||
|
public static long getEXPForNextLevel(int level) {
|
||||||
|
if (level < 1) {
|
||||||
|
level = 1;
|
||||||
|
}
|
||||||
|
long ret = 1;
|
||||||
|
if (level <= 200) {
|
||||||
|
ret = PlayerStatistics.EXP_REQUIREMENTS[level - 1][1];
|
||||||
|
} else {
|
||||||
|
ret = (int) (Math.pow(1.0548, level - 200) * EXP_REQUIREMENTS[EXP_REQUIREMENTS.length
|
||||||
|
- 1][1]);
|
||||||
|
}
|
||||||
|
if (ret < 0) {
|
||||||
|
ret = Long.MAX_VALUE;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final int[][] EXP_REQUIREMENTS = {
|
||||||
|
{1, 15},
|
||||||
|
{2, 34},
|
||||||
|
{3, 57},
|
||||||
|
{4, 92},
|
||||||
|
{5, 135},
|
||||||
|
{6, 372},
|
||||||
|
{7, 560},
|
||||||
|
{8, 840},
|
||||||
|
{9, 1242},
|
||||||
|
{10, 1144},
|
||||||
|
{11, 1573},
|
||||||
|
{12, 2144},
|
||||||
|
{13, 2800},
|
||||||
|
{14, 3640},
|
||||||
|
{15, 4700},
|
||||||
|
{16, 5893},
|
||||||
|
{17, 7360},
|
||||||
|
{18, 9144},
|
||||||
|
{19, 11120},
|
||||||
|
{20, 13477},
|
||||||
|
{21, 16268},
|
||||||
|
{22, 19320},
|
||||||
|
{23, 22880},
|
||||||
|
{24, 27008},
|
||||||
|
{25, 31477},
|
||||||
|
{26, 36600},
|
||||||
|
{27, 42444},
|
||||||
|
{28, 48720},
|
||||||
|
{29, 55813},
|
||||||
|
{30, 63800},
|
||||||
|
{31, 86784},
|
||||||
|
{32, 98208},
|
||||||
|
{33, 110932},
|
||||||
|
{34, 124432},
|
||||||
|
{35, 139372},
|
||||||
|
{36, 155865},
|
||||||
|
{37, 173280},
|
||||||
|
{38, 192400},
|
||||||
|
{39, 213345},
|
||||||
|
{40, 235372},
|
||||||
|
{41, 259392},
|
||||||
|
{42, 285532},
|
||||||
|
{43, 312928},
|
||||||
|
{44, 342624},
|
||||||
|
{45, 374760},
|
||||||
|
{46, 408336},
|
||||||
|
{47, 445544},
|
||||||
|
{48, 483532},
|
||||||
|
{49, 524160},
|
||||||
|
{50, 567772},
|
||||||
|
{51, 598886},
|
||||||
|
{52, 631704},
|
||||||
|
{53, 666321},
|
||||||
|
{54, 702836},
|
||||||
|
{55, 741351},
|
||||||
|
{56, 781976},
|
||||||
|
{57, 824828},
|
||||||
|
{58, 870028},
|
||||||
|
{59, 917625},
|
||||||
|
{60, 967995},
|
||||||
|
{61, 1021041},
|
||||||
|
{62, 1076994},
|
||||||
|
{63, 1136013},
|
||||||
|
{64, 1198266},
|
||||||
|
{65, 1263930},
|
||||||
|
{66, 1333194},
|
||||||
|
{67, 1406252},
|
||||||
|
{68, 1483314},
|
||||||
|
{69, 1564600},
|
||||||
|
{70, 1650340},
|
||||||
|
{71, 1740778},
|
||||||
|
{72, 1836173},
|
||||||
|
{73, 1936794},
|
||||||
|
{74, 2042930},
|
||||||
|
{75, 2154882},
|
||||||
|
{76, 2272970},
|
||||||
|
{77, 2397528},
|
||||||
|
{78, 2528912},
|
||||||
|
{79, 2667496},
|
||||||
|
{80, 2813674},
|
||||||
|
{81, 2967863},
|
||||||
|
{82, 3130502},
|
||||||
|
{83, 3302053},
|
||||||
|
{84, 3483005},
|
||||||
|
{85, 3673873},
|
||||||
|
{86, 3875201},
|
||||||
|
{87, 4087562},
|
||||||
|
{88, 4311559},
|
||||||
|
{89, 4547832},
|
||||||
|
{90, 4797053},
|
||||||
|
{91, 5059931},
|
||||||
|
{92, 5337215},
|
||||||
|
{93, 5629694},
|
||||||
|
{94, 5938202},
|
||||||
|
{95, 6263614},
|
||||||
|
{96, 6606860},
|
||||||
|
{97, 6968915},
|
||||||
|
{98, 7350811},
|
||||||
|
{99, 7753635},
|
||||||
|
{100, 8178534},
|
||||||
|
{101, 8626718},
|
||||||
|
{102, 9099462},
|
||||||
|
{103, 9598112},
|
||||||
|
{104, 10124088},
|
||||||
|
{105, 10678888},
|
||||||
|
{106, 11264090},
|
||||||
|
{107, 11881362},
|
||||||
|
{108, 12532461},
|
||||||
|
{109, 13219239},
|
||||||
|
{110, 13943653},
|
||||||
|
{111, 14707765},
|
||||||
|
{112, 15513750},
|
||||||
|
{113, 16363902},
|
||||||
|
{114, 17260644},
|
||||||
|
{115, 18206527},
|
||||||
|
{116, 19204245},
|
||||||
|
{117, 20256637},
|
||||||
|
{118, 21366700},
|
||||||
|
{119, 22537594},
|
||||||
|
{120, 23772654},
|
||||||
|
{121, 25075395},
|
||||||
|
{122, 26449526},
|
||||||
|
{123, 27898960},
|
||||||
|
{124, 29427822},
|
||||||
|
{125, 31040466},
|
||||||
|
{126, 32741483},
|
||||||
|
{127, 34535716},
|
||||||
|
{128, 36428273},
|
||||||
|
{129, 38424542},
|
||||||
|
{130, 40530206},
|
||||||
|
{131, 42751262},
|
||||||
|
{132, 45094030},
|
||||||
|
{133, 47565183},
|
||||||
|
{134, 50171755},
|
||||||
|
{135, 52921167},
|
||||||
|
{136, 55821246},
|
||||||
|
{137, 58880250},
|
||||||
|
{138, 62106888},
|
||||||
|
{139, 65510344},
|
||||||
|
{140, 69100311},
|
||||||
|
{141, 72887008},
|
||||||
|
{142, 76881216},
|
||||||
|
{143, 81094306},
|
||||||
|
{144, 85594273},
|
||||||
|
{145, 90225770},
|
||||||
|
{146, 95170142},
|
||||||
|
{147, 100385466},
|
||||||
|
{148, 105886589},
|
||||||
|
{149, 111689174},
|
||||||
|
{150, 117809740},
|
||||||
|
{151, 124265714},
|
||||||
|
{152, 131075474},
|
||||||
|
{153, 138258410},
|
||||||
|
{154, 145834970},
|
||||||
|
{155, 153826726},
|
||||||
|
{156, 162256430},
|
||||||
|
{157, 171148082},
|
||||||
|
{158, 180526997},
|
||||||
|
{159, 190419876},
|
||||||
|
{160, 200854885},
|
||||||
|
{161, 211861732},
|
||||||
|
{162, 223471711},
|
||||||
|
{163, 223471711},
|
||||||
|
{164, 248635353},
|
||||||
|
{165, 262260570},
|
||||||
|
{166, 276632449},
|
||||||
|
{167, 291791906},
|
||||||
|
{168, 307782102},
|
||||||
|
{169, 324648562},
|
||||||
|
{170, 342439302},
|
||||||
|
{171, 361204976},
|
||||||
|
{172, 380999008},
|
||||||
|
{173, 401877754},
|
||||||
|
{174, 423900654},
|
||||||
|
{175, 447130410},
|
||||||
|
{176, 471633156},
|
||||||
|
{177, 497478653},
|
||||||
|
{178, 524740482},
|
||||||
|
{179, 553496261},
|
||||||
|
{180, 583827855},
|
||||||
|
{181, 615821622},
|
||||||
|
{182, 649568646},
|
||||||
|
{183, 685165008},
|
||||||
|
{184, 722712050},
|
||||||
|
{185, 762316670},
|
||||||
|
{186, 804091623},
|
||||||
|
{187, 848155844},
|
||||||
|
{188, 894634784},
|
||||||
|
{189, 943660770},
|
||||||
|
{190, 995373379},
|
||||||
|
{191, 1049919840},
|
||||||
|
{192, 1107455447},
|
||||||
|
{193, 1168144006},
|
||||||
|
{194, 1232158297},
|
||||||
|
{195, 1299680571},
|
||||||
|
{196, 1370903066},
|
||||||
|
{197, 1446028554},
|
||||||
|
{198, 1525246918},
|
||||||
|
{199, 1608855764},
|
||||||
|
{200, 1697021059},
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,47 +1,99 @@
|
||||||
package me.unurled.raxen.components.entity.player;
|
package me.unurled.raxen.components.entity.player;
|
||||||
|
|
||||||
|
import static me.unurled.raxen.utils.Utils.colorComp;
|
||||||
import static me.unurled.raxen.utils.Utils.debug;
|
import static me.unurled.raxen.utils.Utils.debug;
|
||||||
|
import static me.unurled.raxen.utils.Utils.log;
|
||||||
|
|
||||||
import me.unurled.raxen.Raxen;
|
import me.unurled.raxen.Raxen;
|
||||||
import me.unurled.raxen.manager.entity.PlayerManager;
|
import me.unurled.raxen.manager.entity.PlayerManager;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.attribute.Attribute;
|
import org.bukkit.attribute.Attribute;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
public class PlayerUtils {
|
public class PlayerUtils {
|
||||||
|
|
||||||
public static void updateSkills(Raxen main, Player player) {
|
public static void updateSkills(Raxen main, Player player) {
|
||||||
PlayerManager pm =
|
PlayerManager pm = main.getManager().getPlayerManager();
|
||||||
((Raxen) Bukkit.getPluginManager().getPlugin("Raxen")).getManager()
|
int maxHealth, health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemStrength, maxMana, mana, itemMana, luck, itemLuck;
|
||||||
.getPlayerManager();
|
defense = pm.getDefense().get(player);
|
||||||
int maxHealth, health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemStrength, maxMana, mana, itemMana, luck, itemLuck;
|
maxMana = pm.getMaxMana().get(player);
|
||||||
defense = pm.getDefense().get(player);
|
itemDefense = pm.getItemDefense().get(player);
|
||||||
maxMana = pm.getMaxMana().get(player);
|
health = pm.getHealth().get(player);
|
||||||
itemDefense = pm.getItemDefense().get(player);
|
itemHealth = pm.getItemHealth().get(player);
|
||||||
health = pm.getHealth().get(player);
|
mana = pm.getMana().get(player);
|
||||||
itemHealth = pm.getItemHealth().get(player);
|
speed = pm.getSpeed().get(player);
|
||||||
mana = pm.getMana().get(player);
|
itemLuck = pm.getItemLuck().get(player);
|
||||||
speed = pm.getSpeed().get(player);
|
strength = pm.getStrength().get(player);
|
||||||
itemLuck = pm.getItemLuck().get(player);
|
luck = pm.getLuck().get(player);
|
||||||
strength = pm.getStrength().get(player);
|
maxHealth = pm.getMaxHealth().get(player);
|
||||||
luck = pm.getLuck().get(player);
|
itemStrength = pm.getItemStrength().get(player);
|
||||||
maxHealth = pm.getMaxHealth().get(player);
|
itemSpeed = pm.getItemSpeed().get(player);
|
||||||
itemStrength = pm.getItemStrength().get(player);
|
itemMana = pm.getItemMana().get(player);
|
||||||
itemSpeed = pm.getItemSpeed().get(player);
|
double hearts = maxHealth + itemHealth;
|
||||||
itemMana = pm.getItemMana().get(player);
|
double heart = 10;
|
||||||
player
|
if (hearts > 125 && hearts < 165) {
|
||||||
.getAttribute(Attribute.GENERIC_MAX_HEALTH)
|
heart = 11;
|
||||||
.setBaseValue(20D + (health + itemHealth) / 100);
|
} else if (hearts > 165 && hearts <= 230) {
|
||||||
player.setWalkSpeed((float) (0.0 + ((speed + itemSpeed) / 100) * 0.2));
|
heart = 12;
|
||||||
player.setFlySpeed((float) (0.0 + ((speed + itemSpeed) / 100) * 0.2));
|
} else if (hearts > 230 && hearts <= 300) {
|
||||||
debug(
|
heart = 13;
|
||||||
"Player " + player.getName(),
|
} else if (hearts > 300 && hearts <= 400) {
|
||||||
"Speed " + (speed + itemSpeed),
|
heart = 14;
|
||||||
"Health " + (health + itemHealth) + " Max Health " + maxHealth,
|
} else if (hearts > 400 && hearts <= 500) {
|
||||||
"Defense " + (defense + itemDefense),
|
heart = 15;
|
||||||
"Strength " + (strength + itemStrength),
|
} else if (hearts > 500 && hearts <= 650) {
|
||||||
"Luck " + (luck + itemLuck),
|
heart = 16;
|
||||||
"Mana " + (mana + itemMana) + " Max Mana " + maxMana
|
} else if (hearts > 650 && hearts <= 800) {
|
||||||
);
|
heart = 17;
|
||||||
}
|
} else if (hearts > 800 && hearts <= 1000) {
|
||||||
|
heart = 18;
|
||||||
|
} else if (hearts > 1000 && hearts <= 1250) {
|
||||||
|
heart = 19;
|
||||||
|
} else if (hearts > 1250) {
|
||||||
|
heart = 20;
|
||||||
|
}
|
||||||
|
log(heart + " " + hearts);
|
||||||
|
player
|
||||||
|
.getAttribute(Attribute.GENERIC_MAX_HEALTH)
|
||||||
|
.setBaseValue(heart * 2);
|
||||||
|
player.setWalkSpeed((float) (0.0 + ((speed + itemSpeed) / 100) * 0.2));
|
||||||
|
player.setFlySpeed((float) (0.0 + ((speed + itemSpeed) / 100) * 0.2));
|
||||||
|
debug(
|
||||||
|
"Player " + player.getName(),
|
||||||
|
"Speed " + (speed + itemSpeed),
|
||||||
|
"Health " + (health + itemHealth) + " Max Health " + maxHealth,
|
||||||
|
"Defense " + (defense + itemDefense),
|
||||||
|
"Strength " + (strength + itemStrength),
|
||||||
|
"Luck " + (luck + itemLuck),
|
||||||
|
"Mana " + (mana + itemMana) + " Max Mana " + maxMana
|
||||||
|
);
|
||||||
|
pm.updateActionBar(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BukkitTask actionBarPlayer(
|
||||||
|
Raxen main,
|
||||||
|
PlayerManager pm,
|
||||||
|
Player player
|
||||||
|
) {
|
||||||
|
return new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
player.sendActionBar(
|
||||||
|
colorComp(
|
||||||
|
"<red>" +
|
||||||
|
pm.getHealth().get(player) +
|
||||||
|
"/" +
|
||||||
|
pm.getMaxHealth().get(player) +
|
||||||
|
"❤</red> <aqua>" +
|
||||||
|
pm.getMana().get(player) +
|
||||||
|
"/" +
|
||||||
|
pm.getMaxMana().get(player) +
|
||||||
|
"</aqua>"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.runTaskTimerAsynchronously(main, 10, 20);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,19 +2,37 @@ package me.unurled.raxen.components.entity.player;
|
||||||
|
|
||||||
import static me.unurled.raxen.utils.Items.setItemsToInventory;
|
import static me.unurled.raxen.utils.Items.setItemsToInventory;
|
||||||
import static me.unurled.raxen.utils.Utils.debug;
|
import static me.unurled.raxen.utils.Utils.debug;
|
||||||
|
import static me.unurled.raxen.utils.Utils.log;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
import me.unurled.raxen.Raxen;
|
import me.unurled.raxen.Raxen;
|
||||||
|
import me.unurled.raxen.components.entity.DamageType;
|
||||||
import me.unurled.raxen.components.entity.other.EntityNamespacedKey;
|
import me.unurled.raxen.components.entity.other.EntityNamespacedKey;
|
||||||
|
import me.unurled.raxen.components.entity.other.MobData;
|
||||||
import me.unurled.raxen.components.entity.player.attributes.Attribute;
|
import me.unurled.raxen.components.entity.player.attributes.Attribute;
|
||||||
import me.unurled.raxen.components.entity.player.storages.EnderChest;
|
import me.unurled.raxen.components.entity.player.storages.EnderChest;
|
||||||
import me.unurled.raxen.components.entity.player.storages.Inventory;
|
import me.unurled.raxen.components.entity.player.storages.Inventory;
|
||||||
|
import me.unurled.raxen.components.party.Party;
|
||||||
|
import me.unurled.raxen.manager.entity.PlayerManager;
|
||||||
|
import me.unurled.raxen.manager.entity.SpellManager.CastState;
|
||||||
import me.unurled.raxen.utils.EntityAttributes;
|
import me.unurled.raxen.utils.EntityAttributes;
|
||||||
import me.unurled.raxen.utils.Items;
|
import me.unurled.raxen.utils.Items;
|
||||||
|
import me.unurled.raxen.utils.Math;
|
||||||
|
import me.unurled.raxen.utils.Utils;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.EntityEffect;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.boss.BarColor;
|
||||||
|
import org.bukkit.boss.BarStyle;
|
||||||
|
import org.bukkit.boss.BossBar;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.inventory.InventoryType;
|
import org.bukkit.event.inventory.InventoryType;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
@ -24,151 +42,562 @@ import org.bukkit.persistence.PersistentDataType;
|
||||||
|
|
||||||
public class RaxenPlayer {
|
public class RaxenPlayer {
|
||||||
|
|
||||||
private final Raxen main;
|
private final Raxen main;
|
||||||
private final Player player;
|
@Getter
|
||||||
private final EntityNamespacedKey namespacedKey;
|
private final Player player;
|
||||||
|
private final EntityNamespacedKey namespacedKey;
|
||||||
|
|
||||||
private Boolean isRaxenPlayer;
|
double crit_chance = 0.05;
|
||||||
|
public double critDamage = 1.50;
|
||||||
|
public boolean dead = false;
|
||||||
|
|
||||||
private Attribute attribute;
|
private DamageType lastDamageCause = DamageType.NORMAL;
|
||||||
|
|
||||||
private Storage storages;
|
private long lastEnvironmentalDamaged = 0;
|
||||||
private Inventories inventory;
|
private long lastDamagedNonEnvironmental = 0;
|
||||||
|
private long lastDamaged = 0;
|
||||||
|
|
||||||
public RaxenPlayer(Raxen main, Player player) {
|
private Boolean isRaxenPlayer;
|
||||||
this.main = main;
|
|
||||||
this.player = player;
|
|
||||||
this.namespacedKey = new EntityNamespacedKey(main);
|
|
||||||
this.isRaxenPlayer = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Attribute createNewAttribute() {
|
private Attribute attribute;
|
||||||
debug(main, "Created new Attribute");
|
|
||||||
EntityAttributes.setAttributes(
|
|
||||||
player,
|
|
||||||
100,
|
|
||||||
100,
|
|
||||||
0,
|
|
||||||
50,
|
|
||||||
0,
|
|
||||||
100,
|
|
||||||
0,
|
|
||||||
100,
|
|
||||||
0,
|
|
||||||
100,
|
|
||||||
100,
|
|
||||||
0,
|
|
||||||
10,
|
|
||||||
0
|
|
||||||
);
|
|
||||||
return new Attribute(
|
|
||||||
100,
|
|
||||||
100,
|
|
||||||
0,
|
|
||||||
50,
|
|
||||||
0,
|
|
||||||
100,
|
|
||||||
0,
|
|
||||||
100,
|
|
||||||
0,
|
|
||||||
100,
|
|
||||||
100,
|
|
||||||
0,
|
|
||||||
10,
|
|
||||||
0
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStorages(
|
private Storage storages;
|
||||||
org.bukkit.inventory.Inventory inv,
|
private Inventories inventory;
|
||||||
org.bukkit.inventory.Inventory ec
|
|
||||||
) {
|
|
||||||
setStorage(ec);
|
|
||||||
setInventory(inv);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Storage getStorage() {
|
private boolean inTutorial;
|
||||||
PersistentDataContainer data = player.getPersistentDataContainer();
|
|
||||||
String store = data.get(namespacedKey.storage, PersistentDataType.STRING);
|
|
||||||
org.bukkit.inventory.Inventory ec = Bukkit.createInventory(
|
|
||||||
null,
|
|
||||||
54,
|
|
||||||
Component.text("Ender Chest")
|
|
||||||
);
|
|
||||||
ec = setItemsToInventory(Items.mapItemStackDeserialize(store), ec);
|
|
||||||
EnderChest ecc = new EnderChest(ec);
|
|
||||||
Storage storage = new Storage(ecc);
|
|
||||||
return storage;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Inventories getInventory() {
|
private HashMap<String, HashMap<String, Integer>> mobCounter = new HashMap<String, HashMap<String, Integer>>();
|
||||||
PersistentDataContainer data = player.getPersistentDataContainer();
|
|
||||||
String inv = data.get(namespacedKey.inventory, PersistentDataType.STRING);
|
|
||||||
org.bukkit.inventory.Inventory invv = Bukkit.createInventory(
|
|
||||||
player,
|
|
||||||
InventoryType.PLAYER
|
|
||||||
);
|
|
||||||
invv =
|
|
||||||
setItemsToInventory(
|
|
||||||
Items.listItemStackDeserialize(inv),
|
|
||||||
(PlayerInventory) invv
|
|
||||||
);
|
|
||||||
Inventory invvv = new Inventory(invv);
|
|
||||||
Inventories invvvv = new Inventories(invvv);
|
|
||||||
return invvvv;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setInventory(org.bukkit.inventory.Inventory inv) {
|
private int mobKills, playerKills, deaths, bossKills;
|
||||||
PersistentDataContainer data = player.getPersistentDataContainer();
|
|
||||||
List<String> listInv = new ArrayList<String>();
|
public long xp;
|
||||||
Integer reverse = 0;
|
@Getter
|
||||||
for (ItemStack it : inv) {
|
private int level;
|
||||||
reverse = reverse + 1;
|
|
||||||
if (it != null && it.getType() != Material.AIR) {
|
@Getter
|
||||||
String s = Items.itemStackSerialize(it, reverse);
|
@Setter
|
||||||
listInv.add(s);
|
private Party party = null;
|
||||||
}
|
@Getter
|
||||||
|
@Setter
|
||||||
|
private Party invitedParty = null;
|
||||||
|
|
||||||
|
BossBar bossBar;
|
||||||
|
|
||||||
|
public RaxenPlayer(Raxen main, Player player) {
|
||||||
|
this.main = main;
|
||||||
|
this.player = player;
|
||||||
|
this.namespacedKey = new EntityNamespacedKey(main);
|
||||||
|
this.isRaxenPlayer = true;
|
||||||
}
|
}
|
||||||
String invv = Items.listItemStackSerialize(listInv);
|
|
||||||
this.inventory = new Inventories(new Inventory(inv));
|
|
||||||
data.set(namespacedKey.inventory, PersistentDataType.STRING, invv);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStorage(org.bukkit.inventory.Inventory ec) {
|
public Attribute createNewAttribute() {
|
||||||
PersistentDataContainer data = player.getPersistentDataContainer();
|
debug(main, "Created new Attribute");
|
||||||
List<String> list = new ArrayList<String>();
|
EntityAttributes.setAttributes(
|
||||||
int reverse = 0;
|
player,
|
||||||
for (ItemStack it : ec) {
|
100,
|
||||||
if (it != null) {
|
100,
|
||||||
String s = Items.itemStackSerialize(it, reverse);
|
0,
|
||||||
list.add(s);
|
50,
|
||||||
}
|
0,
|
||||||
reverse += 1;
|
100,
|
||||||
|
0,
|
||||||
|
100,
|
||||||
|
0,
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
0,
|
||||||
|
10,
|
||||||
|
0
|
||||||
|
);
|
||||||
|
return new Attribute(
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
0,
|
||||||
|
50,
|
||||||
|
0,
|
||||||
|
100,
|
||||||
|
0,
|
||||||
|
100,
|
||||||
|
0,
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
0,
|
||||||
|
10,
|
||||||
|
0
|
||||||
|
);
|
||||||
}
|
}
|
||||||
String store = Items.listItemStackSerialize(list);
|
|
||||||
this.storages = new Storage(new EnderChest(ec));
|
|
||||||
data.set(namespacedKey.storage, PersistentDataType.STRING, store);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Storage createStorage() {
|
public void setStorages(
|
||||||
setStorage(Bukkit.createInventory(null, 54, Component.text("Ender Chest")));
|
org.bukkit.inventory.Inventory inv,
|
||||||
return getStorage();
|
org.bukkit.inventory.Inventory ec
|
||||||
}
|
) {
|
||||||
|
setStorage(ec);
|
||||||
|
setInventory(inv);
|
||||||
|
}
|
||||||
|
|
||||||
public Inventories createInventory() {
|
public Storage getStorage() {
|
||||||
setInventory(Bukkit.createInventory(null, InventoryType.PLAYER));
|
PersistentDataContainer data = player.getPersistentDataContainer();
|
||||||
return getInventory();
|
String store = data.get(
|
||||||
}
|
namespacedKey.storage,
|
||||||
|
PersistentDataType.STRING
|
||||||
|
);
|
||||||
|
org.bukkit.inventory.Inventory ec = Bukkit.createInventory(
|
||||||
|
null,
|
||||||
|
54,
|
||||||
|
Component.text("Ender Chest")
|
||||||
|
);
|
||||||
|
ec = setItemsToInventory(Items.mapItemStackDeserialize(store), ec);
|
||||||
|
EnderChest ecc = new EnderChest(ec);
|
||||||
|
Storage storage = new Storage(ecc);
|
||||||
|
return storage;
|
||||||
|
}
|
||||||
|
|
||||||
public Boolean isRaxenPlayer() {
|
public Inventories getInventory() {
|
||||||
return isRaxenPlayer;
|
PersistentDataContainer data = player.getPersistentDataContainer();
|
||||||
}
|
String inv = data.get(
|
||||||
|
namespacedKey.inventory,
|
||||||
|
PersistentDataType.STRING
|
||||||
|
);
|
||||||
|
org.bukkit.inventory.Inventory invv = Bukkit.createInventory(
|
||||||
|
player,
|
||||||
|
InventoryType.PLAYER
|
||||||
|
);
|
||||||
|
invv =
|
||||||
|
setItemsToInventory(
|
||||||
|
Items.listItemStackDeserialize(inv),
|
||||||
|
(PlayerInventory) invv
|
||||||
|
);
|
||||||
|
Inventory invvv = new Inventory(invv);
|
||||||
|
Inventories invvvv = new Inventories(invvv);
|
||||||
|
return invvvv;
|
||||||
|
}
|
||||||
|
|
||||||
public void isRaxenPlayer(boolean player) {
|
public void setInventory(org.bukkit.inventory.Inventory inv) {
|
||||||
isRaxenPlayer = player;
|
PersistentDataContainer data = player.getPersistentDataContainer();
|
||||||
}
|
List<String> listInv = new ArrayList<String>();
|
||||||
|
int reverse = 0;
|
||||||
|
for (ItemStack it : inv) {
|
||||||
|
reverse = reverse + 1;
|
||||||
|
if (it != null && it.getType() != Material.AIR) {
|
||||||
|
String s = Items.itemStackSerialize(it, reverse);
|
||||||
|
listInv.add(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String invv = Items.listItemStackSerialize(listInv);
|
||||||
|
this.inventory = new Inventories(new Inventory(inv));
|
||||||
|
data.set(namespacedKey.inventory, PersistentDataType.STRING, invv);
|
||||||
|
}
|
||||||
|
|
||||||
public Attribute getAttribute() {
|
public void setStorage(org.bukkit.inventory.Inventory ec) {
|
||||||
return attribute;
|
PersistentDataContainer data = player.getPersistentDataContainer();
|
||||||
}
|
List<String> list = new ArrayList<String>();
|
||||||
|
int reverse = 0;
|
||||||
|
for (ItemStack it : ec) {
|
||||||
|
if (it != null) {
|
||||||
|
String s = Items.itemStackSerialize(it, reverse);
|
||||||
|
list.add(s);
|
||||||
|
}
|
||||||
|
reverse += 1;
|
||||||
|
}
|
||||||
|
String store = Items.listItemStackSerialize(list);
|
||||||
|
this.storages = new Storage(new EnderChest(ec));
|
||||||
|
data.set(namespacedKey.storage, PersistentDataType.STRING, store);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Storage createStorage() {
|
||||||
|
setStorage(
|
||||||
|
Bukkit.createInventory(null, 54, Component.text("Ender Chest"))
|
||||||
|
);
|
||||||
|
return getStorage();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Inventories createInventory() {
|
||||||
|
org.bukkit.inventory.Inventory inv = Bukkit.createInventory(null, InventoryType.PLAYER);
|
||||||
|
setInventory(inv);
|
||||||
|
return new Inventories(new Inventory(inv));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean isRaxenPlayer() {
|
||||||
|
return isRaxenPlayer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void isRaxenPlayer(boolean player) {
|
||||||
|
isRaxenPlayer = player;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Attribute getAttribute() {
|
||||||
|
return attribute;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isInTutorial() {
|
||||||
|
return inTutorial;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInTutorial(boolean inTutorial) {
|
||||||
|
this.inTutorial = inTutorial;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getDamage() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean attackPlayer(RaxenPlayer player) {
|
||||||
|
return attackPlayer(player, -1, false, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean attackPlayer(RaxenPlayer player, int damage) {
|
||||||
|
return attackPlayer(player, damage, false, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean attackPlayer(RaxenPlayer player, int damage, boolean projectile) {
|
||||||
|
return attackPlayer(player, damage, projectile, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean attackPlayer(RaxenPlayer player, int damage, boolean projectile,
|
||||||
|
double knockback) {
|
||||||
|
if (player == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (player == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
int eDamage;
|
||||||
|
if (damage > 0) {
|
||||||
|
eDamage = damage;
|
||||||
|
} else {
|
||||||
|
eDamage = getDamage();
|
||||||
|
}
|
||||||
|
boolean crit = false;
|
||||||
|
if (java.lang.Math.random() < crit_chance) {
|
||||||
|
crit = true;
|
||||||
|
eDamage = (int) (eDamage * 1.5);
|
||||||
|
}
|
||||||
|
boolean sucess = false;
|
||||||
|
// TODO: calculate with classes... later
|
||||||
|
sucess = player.damage(eDamage, this.player, DamageType.NORMAL, crit);
|
||||||
|
return sucess;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean attackMob(MobData other) {
|
||||||
|
return attackMob(other, 0.5, -1, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean attackMob(MobData other, int rpgDamage) {
|
||||||
|
return attackMob(other, 0.5, rpgDamage, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean attackMob(MobData other, int rpgDamage, boolean projectile) {
|
||||||
|
return attackMob(other, 0.5, rpgDamage, projectile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean attackMob(MobData other, double knockback, int rpgDamage,
|
||||||
|
boolean projectil) {
|
||||||
|
Player p = getPlayer();
|
||||||
|
if (p == null || other == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
int damage;
|
||||||
|
if (rpgDamage > 0) {
|
||||||
|
damage = rpgDamage;
|
||||||
|
} else {
|
||||||
|
damage = getDamage();
|
||||||
|
}
|
||||||
|
boolean crit = false;
|
||||||
|
double critChanceTemp = crit_chance;
|
||||||
|
if (java.lang.Math.random() < critChanceTemp) {
|
||||||
|
crit = true;
|
||||||
|
damage *= critDamage;
|
||||||
|
}
|
||||||
|
boolean sucess = false;
|
||||||
|
sucess = other.damage(damage, p, DamageType.NORMAL, crit);
|
||||||
|
if (sucess && !projectil) {
|
||||||
|
// TODO: other.knockback(p, knockback);
|
||||||
|
}
|
||||||
|
return sucess;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean damage(int damage, Entity damager, DamageType damageType) {
|
||||||
|
return damage(damage, damager, damageType, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean damage(int damage, Entity damager, DamageType damageType, boolean crit) {
|
||||||
|
if (dead) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (System.currentTimeMillis() - lastEnvironmentalDamaged < 600 && (
|
||||||
|
damageType == DamageType.ENVIRONMENTAL_LAVA
|
||||||
|
|| damageType == DamageType.ENVIRONMENTAL_DROWNING
|
||||||
|
|| damageType == DamageType.ENVIRONMENTAL_FALL)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (player == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (damager != null) {
|
||||||
|
if (damager instanceof Player) {
|
||||||
|
RaxenPlayer damagerRX = main.getManager().getPlayerManager()
|
||||||
|
.getRaxenPlayer((Player) damager);
|
||||||
|
if (!((Player) damager).isOnline() || damagerRX == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// TODO: check if same party later not now
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
switch (lastDamageCause = damageType) {
|
||||||
|
case NORMAL:
|
||||||
|
case NORMAL_SPELL:
|
||||||
|
damage -= Math.randInt(0, getAttribute().getDefense());
|
||||||
|
lastDamagedNonEnvironmental = System.currentTimeMillis();
|
||||||
|
break;
|
||||||
|
case ENVIRONMENTAL_FALL:
|
||||||
|
if (damage >= getAttribute().getHealth()) {
|
||||||
|
damage = getAttribute().getHealth() - 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (damageType == DamageType.ENVIRONMENTAL_LAVA
|
||||||
|
|| damageType == DamageType.ENVIRONMENTAL_DROWNING
|
||||||
|
|| damageType == DamageType.ENVIRONMENTAL_FALL) {
|
||||||
|
lastEnvironmentalDamaged = System.currentTimeMillis();
|
||||||
|
} else if (damageType == DamageType.NORMAL) {
|
||||||
|
lastDamaged = System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
if (damager != null && damager != player && damager instanceof Player) {
|
||||||
|
damage *= 0.8; // pvp nerf
|
||||||
|
}
|
||||||
|
if (damage < 1) {
|
||||||
|
damage = 1;
|
||||||
|
}
|
||||||
|
if (damageType == DamageType.NORMAL_SPELL || damageType == DamageType.NORMAL) {
|
||||||
|
if (damage > getAttribute().getHealth() * 0.5) {
|
||||||
|
player.leaveVehicle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getAttribute().setHealth(getAttribute().getHealth() - damage);
|
||||||
|
if (getAttribute().getHealth() < 0) {
|
||||||
|
getAttribute().setHealth(0);
|
||||||
|
}
|
||||||
|
if (damager != null && damager != player) {
|
||||||
|
if (damager instanceof Player) {
|
||||||
|
RaxenPlayer damagerRX = main.getManager().getPlayerManager()
|
||||||
|
.getRaxenPlayer((Player) damager);
|
||||||
|
if (damagerRX != null) {
|
||||||
|
Player p2 = damagerRX.getPlayer();
|
||||||
|
if (p2 != null && p2.isValid()) {
|
||||||
|
p2.playSound(p2.getLocation(), Sound.ENTITY_PLAYER_HURT, 0.65f, 0.75f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_HURT, 0.85f, 0.85f);
|
||||||
|
if (System.currentTimeMillis() - lastDamaged < 1000) {
|
||||||
|
player.playEffect(EntityEffect.HURT);
|
||||||
|
}
|
||||||
|
if (getAttribute().getHealth() <= 0) {
|
||||||
|
die();
|
||||||
|
} else {
|
||||||
|
// TODO: update health display on action bar
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void die() {
|
||||||
|
log("player " + player.displayName() + " died");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void incrementMobCounter(String mob) {
|
||||||
|
if (mobCounter.containsKey(mob)) {
|
||||||
|
mobCounter.get(mob).replaceAll((k, v) -> v + 1);
|
||||||
|
// TODO: mob quest tracker ?
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMobKills() {
|
||||||
|
return mobKills;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPlayerKills() {
|
||||||
|
return playerKills;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getDeaths() {
|
||||||
|
return deaths;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getBossKills() {
|
||||||
|
return bossKills;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMobKills(int mobKills) {
|
||||||
|
this.mobKills = mobKills;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPlayerKills(int playerKills) {
|
||||||
|
this.playerKills = playerKills;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDeaths(int deaths) {
|
||||||
|
this.deaths = deaths;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBossKills(int bossKills) {
|
||||||
|
this.bossKills = bossKills;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addMobKills(int mobKills) {
|
||||||
|
this.mobKills += mobKills;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addMobKills() {
|
||||||
|
this.mobKills += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addPlayerKills(int playerKills) {
|
||||||
|
this.playerKills += playerKills;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addPlayerKills() {
|
||||||
|
this.playerKills += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addDeaths(int deaths) {
|
||||||
|
this.deaths += deaths;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addDeaths() {
|
||||||
|
this.deaths += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addBossKills(int bossKills) {
|
||||||
|
this.bossKills += bossKills;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addBossKills() {
|
||||||
|
this.bossKills += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void gainXp(long amt) {
|
||||||
|
gainXp(amt, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void gainXp(long amt, boolean penalty) {
|
||||||
|
xp += amt;
|
||||||
|
Player p = getPlayer();
|
||||||
|
if (p == null || !p.isValid()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int bonus = 0;
|
||||||
|
// IDEA: per class xp bonus
|
||||||
|
// IDEA: party xp multiplier
|
||||||
|
long tXp = amt;
|
||||||
|
if (bonus > 0) {
|
||||||
|
tXp += bonus;
|
||||||
|
xp += bonus;
|
||||||
|
}
|
||||||
|
if (xp >= getXpForNextLevel()) {
|
||||||
|
long extra = xp - getXpForNextLevel();
|
||||||
|
xp = 0;
|
||||||
|
level++;
|
||||||
|
xp = extra < getXpForNextLevel() ? extra : getXpForNextLevel() - 1;
|
||||||
|
// TODO: take care of stats level up
|
||||||
|
// TODO: update health and mana display;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int lastLevel = -1;
|
||||||
|
private long cachedXp = -1;
|
||||||
|
|
||||||
|
public long getXpForNextLevel() {
|
||||||
|
long ret = 1;
|
||||||
|
if (lastLevel == level && cachedXp > 0) {
|
||||||
|
return cachedXp;
|
||||||
|
}
|
||||||
|
ret = PlayerStatistics.getEXPForNextLevel(level);
|
||||||
|
if (ret < 0) {
|
||||||
|
ret = Long.MAX_VALUE;
|
||||||
|
}
|
||||||
|
lastLevel = level;
|
||||||
|
cachedXp = ret;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void knockback(LivingEntity attacker, double knockBackMultiplier) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateHealthManaDisplay() {
|
||||||
|
Player p = getPlayer();
|
||||||
|
PlayerManager manager = main.getManager().getPlayerManager();
|
||||||
|
if (p != null) {
|
||||||
|
int health = manager.getHealth().get(p);
|
||||||
|
int maxHealth = manager.getMaxHealth().get(p);
|
||||||
|
int mana = manager.getMana().get(p);
|
||||||
|
int maxMana = manager.getMaxMana().get(p);
|
||||||
|
if (health > maxHealth) {
|
||||||
|
manager.getHealth().set(p, maxHealth);
|
||||||
|
health = manager.getHealth().get(p);
|
||||||
|
}
|
||||||
|
if (health < 0) {
|
||||||
|
manager.getHealth().set(p, 0);
|
||||||
|
health = manager.getHealth().get(p);
|
||||||
|
}
|
||||||
|
if (mana > maxMana) {
|
||||||
|
manager.getMana().set(p, maxMana);
|
||||||
|
mana = manager.getMana().get(p);
|
||||||
|
}
|
||||||
|
if (dead) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
double percent = ((double) health) / ((double) maxHealth);
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
BarColor color = BarColor.GREEN;
|
||||||
|
if (percent > 0.5) {
|
||||||
|
sb.append("<green>");
|
||||||
|
sb.append(health);
|
||||||
|
sb.append(" <aqua><bold>HP");
|
||||||
|
} else if (percent > 0.20) {
|
||||||
|
sb.append("<yellow>");
|
||||||
|
sb.append(health);
|
||||||
|
sb.append(" <aqua><bold>HP");
|
||||||
|
color = BarColor.YELLOW;
|
||||||
|
} else {
|
||||||
|
sb.append("<dark_red><bold>DANGER - <reset><red>");
|
||||||
|
sb.append(health);
|
||||||
|
sb.append(" <dark_red><bold> - DANGER");
|
||||||
|
color = BarColor.RED;
|
||||||
|
}
|
||||||
|
sb.append("<reset>");
|
||||||
|
// TODO: status poison, burn, bleed
|
||||||
|
if (percent > 1) {
|
||||||
|
percent = 1;
|
||||||
|
} else if (percent < 0.01) {
|
||||||
|
percent = 0.01;
|
||||||
|
}
|
||||||
|
if (bossBar == null) {
|
||||||
|
bossBar = Bukkit.createBossBar(Utils.coloredString(sb.toString()), BarColor.GREEN,
|
||||||
|
BarStyle.SOLID);
|
||||||
|
bossBar.addPlayer(p);
|
||||||
|
}
|
||||||
|
bossBar.setTitle(Utils.coloredString(sb.toString().trim()));
|
||||||
|
bossBar.setProgress(percent);
|
||||||
|
bossBar.setColor(color);
|
||||||
|
|
||||||
|
if (!p.isGliding() && main.getManager().getSpellManager().casters.containsKey(
|
||||||
|
p.getUniqueId())) {
|
||||||
|
CastState cs = main.getManager().getSpellManager().casters.get(
|
||||||
|
p.getUniqueId()).state;
|
||||||
|
if (cs != CastState.NONE) {
|
||||||
|
StringBuilder sb2 = new StringBuilder();
|
||||||
|
sb2.append("<gold><bold> ");
|
||||||
|
sb2.append(cs.toString());
|
||||||
|
p.sendActionBar(Utils.colorComp(sb2.toString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// p.setFoodLevel(mana * 2);
|
||||||
|
p.setLevel(level);
|
||||||
|
p.setExp((float) (((double) xp) / ((double) getXpForNextLevel())));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,75 +1,86 @@
|
||||||
package me.unurled.raxen.components.entity.player;
|
package me.unurled.raxen.components.entity.player;
|
||||||
|
|
||||||
import static me.unurled.raxen.utils.Utils.*;
|
import static me.unurled.raxen.utils.Utils.colorTextComp;
|
||||||
|
import static me.unurled.raxen.utils.Utils.debug;
|
||||||
|
import static me.unurled.raxen.utils.Utils.textCompToString;
|
||||||
|
|
||||||
import me.unurled.raxen.Raxen;
|
import me.unurled.raxen.Raxen;
|
||||||
import me.unurled.raxen.utils.libs.Vault;
|
import me.unurled.raxen.utils.libs.Vault;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.scoreboard.*;
|
import org.bukkit.scoreboard.Criteria;
|
||||||
|
import org.bukkit.scoreboard.DisplaySlot;
|
||||||
|
import org.bukkit.scoreboard.Objective;
|
||||||
|
import org.bukkit.scoreboard.Score;
|
||||||
|
import org.bukkit.scoreboard.ScoreboardManager;
|
||||||
|
|
||||||
public class Scoreboard {
|
public class Scoreboard {
|
||||||
|
|
||||||
private Raxen main;
|
private Raxen main;
|
||||||
private Vault vault;
|
private Vault vault;
|
||||||
|
|
||||||
public Scoreboard(Raxen main) {
|
public Scoreboard(Raxen main) {
|
||||||
this.main = main;
|
this.main = main;
|
||||||
this.vault = main.getManager().getLibsManager().getVault();
|
this.vault = main.getManager().getLibsManager().getVault();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createScorebord(Player player) {
|
public void createScorebord(Player player) {
|
||||||
ScoreboardManager manager = Bukkit.getScoreboardManager();
|
ScoreboardManager manager = Bukkit.getScoreboardManager();
|
||||||
org.bukkit.scoreboard.Scoreboard board = manager.getNewScoreboard();
|
org.bukkit.scoreboard.Scoreboard board = manager.getNewScoreboard();
|
||||||
Objective obj = board.registerNewObjective(
|
Objective obj = board.registerNewObjective(
|
||||||
"Raxen",
|
"Raxen",
|
||||||
Criteria.DUMMY,
|
Criteria.DUMMY,
|
||||||
colorTextComp("<red>Elixium")
|
colorTextComp("<red>Elixium")
|
||||||
);
|
);
|
||||||
obj.setDisplaySlot(DisplaySlot.SIDEBAR);
|
obj.setDisplaySlot(DisplaySlot.SIDEBAR);
|
||||||
Score score = obj.getScore(
|
Score score = obj.getScore(
|
||||||
textCompToString(colorTextComp("<gold>-------------"))
|
textCompToString(colorTextComp("<gold>-------------"))
|
||||||
);
|
);
|
||||||
score.setScore(4);
|
score.setScore(4);
|
||||||
Score score1 = obj.getScore(
|
Score score1 = obj.getScore(
|
||||||
textCompToString(colorTextComp("<aqua>Name:" + player.getName()))
|
textCompToString(colorTextComp("<aqua>Name:" + player.getName()))
|
||||||
);
|
);
|
||||||
score1.setScore(3);
|
score1.setScore(3);
|
||||||
Score score2 = obj.getScore(
|
Score score2 = obj.getScore(
|
||||||
textCompToString(colorTextComp("<white>Location"))
|
textCompToString(colorTextComp("<white>Location"))
|
||||||
);
|
);
|
||||||
score2.setScore(2);
|
score2.setScore(2);
|
||||||
Score score3 = obj.getScore(
|
Score score3 = obj.getScore(
|
||||||
textCompToString(
|
textCompToString(
|
||||||
colorTextComp("<gold>Coins: <gold>" + vault.getBalanceString(player))
|
colorTextComp(
|
||||||
)
|
"<gold>Coins: <gold>" + vault.getBalanceString(player)
|
||||||
);
|
)
|
||||||
score3.setScore(1);
|
)
|
||||||
Score score4 = obj.getScore(
|
);
|
||||||
textCompToString(colorTextComp("<yellow>unurled.me"))
|
score3.setScore(1);
|
||||||
);
|
Score score4 = obj.getScore(
|
||||||
score4.setScore(0);
|
textCompToString(colorTextComp("<yellow>unurled.me"))
|
||||||
player.setScoreboard(board);
|
);
|
||||||
}
|
score4.setScore(0);
|
||||||
|
player.setScoreboard(board);
|
||||||
public void updateScoreboardTransaction(Player player) {
|
}
|
||||||
if (player != null) {
|
|
||||||
Objective objective = player
|
public void updateScoreboardTransaction(Player player) {
|
||||||
.getScoreboard()
|
if (player != null) {
|
||||||
.getObjective(DisplaySlot.SIDEBAR);
|
Objective objective = player
|
||||||
player.getScoreboard().getObjective(DisplaySlot.SIDEBAR);
|
.getScoreboard()
|
||||||
debug(main, String.valueOf(player.getScoreboard().getEntries()));
|
.getObjective(DisplaySlot.SIDEBAR);
|
||||||
for (String str : player.getScoreboard().getEntries()) {
|
player.getScoreboard().getObjective(DisplaySlot.SIDEBAR);
|
||||||
if (str.contains(player.getName())) {}
|
debug(main, String.valueOf(player.getScoreboard().getEntries()));
|
||||||
}
|
for (String str : player.getScoreboard().getEntries()) {
|
||||||
player.getScoreboard().resetScores("Coins");
|
if (str.contains(player.getName())) {
|
||||||
assert objective != null;
|
}
|
||||||
Score score = objective.getScore(
|
}
|
||||||
textCompToString(
|
player.getScoreboard().resetScores("Coins");
|
||||||
colorTextComp("<gold>Coins: <gold>" + vault.getBalanceString(player))
|
assert objective != null;
|
||||||
)
|
Score score = objective.getScore(
|
||||||
);
|
textCompToString(
|
||||||
score.setScore(1);
|
colorTextComp(
|
||||||
|
"<gold>Coins: <gold>" + vault.getBalanceString(player)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
score.setScore(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,17 +4,17 @@ import me.unurled.raxen.components.entity.player.storages.EnderChest;
|
||||||
|
|
||||||
public class Storage {
|
public class Storage {
|
||||||
|
|
||||||
private EnderChest ec;
|
private EnderChest ec;
|
||||||
|
|
||||||
public Storage(EnderChest ec) {
|
public Storage(EnderChest ec) {
|
||||||
this.ec = ec;
|
this.ec = ec;
|
||||||
}
|
}
|
||||||
|
|
||||||
public EnderChest getEc() {
|
public EnderChest getEc() {
|
||||||
return ec;
|
return ec;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setEc(EnderChest ec) {
|
public void setEc(EnderChest ec) {
|
||||||
this.ec = ec;
|
this.ec = ec;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,39 +5,39 @@ import lombok.Setter;
|
||||||
|
|
||||||
public class Attribute {
|
public class Attribute {
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
private int maxHealth, health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemStrength, maxMana, mana, itemMana, luck, itemLuck;
|
private int maxHealth, health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemStrength, maxMana, mana, itemMana, luck, itemLuck;
|
||||||
|
|
||||||
public Attribute(
|
public Attribute(
|
||||||
int maxHealth,
|
int maxHealth,
|
||||||
int health,
|
int health,
|
||||||
int itemHealth,
|
int itemHealth,
|
||||||
int defense,
|
int defense,
|
||||||
int itemDefense,
|
int itemDefense,
|
||||||
int speed,
|
int speed,
|
||||||
int itemSpeed,
|
int itemSpeed,
|
||||||
int strength,
|
int strength,
|
||||||
int itemStrength,
|
int itemStrength,
|
||||||
int maxMana,
|
int maxMana,
|
||||||
int mana,
|
int mana,
|
||||||
int itemMana,
|
int itemMana,
|
||||||
int luck,
|
int luck,
|
||||||
int itemLuck
|
int itemLuck
|
||||||
) {
|
) {
|
||||||
this.maxHealth = maxHealth;
|
this.maxHealth = maxHealth;
|
||||||
this.health = health;
|
this.health = health;
|
||||||
this.itemHealth = itemHealth;
|
this.itemHealth = itemHealth;
|
||||||
this.defense = defense;
|
this.defense = defense;
|
||||||
this.itemDefense = itemDefense;
|
this.itemDefense = itemDefense;
|
||||||
this.speed = speed;
|
this.speed = speed;
|
||||||
this.itemSpeed = itemSpeed;
|
this.itemSpeed = itemSpeed;
|
||||||
this.strength = strength;
|
this.strength = strength;
|
||||||
this.itemStrength = itemStrength;
|
this.itemStrength = itemStrength;
|
||||||
this.maxHealth = maxMana;
|
this.maxHealth = maxMana;
|
||||||
this.mana = mana;
|
this.mana = mana;
|
||||||
this.itemMana = itemMana;
|
this.itemMana = itemMana;
|
||||||
this.luck = luck;
|
this.luck = luck;
|
||||||
this.itemLuck = itemLuck;
|
this.itemLuck = itemLuck;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,96 +11,96 @@ import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public class Attributes {
|
public class Attributes {
|
||||||
|
|
||||||
private static EntityNamespacedKey namespacedKey;
|
private static EntityNamespacedKey namespacedKey;
|
||||||
|
|
||||||
public Attributes(Raxen main) {
|
public Attributes(Raxen main) {
|
||||||
namespacedKey = new EntityNamespacedKey(main);
|
namespacedKey = new EntityNamespacedKey(main);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Contract("_ -> new")
|
@Contract("_ -> new")
|
||||||
public static @NotNull Attribute getAttribute(Player player) {
|
public static @NotNull Attribute getAttribute(Player player) {
|
||||||
int maxHealth, health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemStrength, maxMana, mana, itemMana, luck, itemLuck;
|
int maxHealth, health, itemHealth, defense, itemDefense, speed, itemSpeed, strength, itemStrength, maxMana, mana, itemMana, luck, itemLuck;
|
||||||
PlayerManager pm =
|
PlayerManager pm =
|
||||||
((Raxen) Bukkit.getPluginManager().getPlugin("Raxen")).getManager()
|
((Raxen) Bukkit.getPluginManager().getPlugin("Raxen")).getManager()
|
||||||
.getPlayerManager();
|
.getPlayerManager();
|
||||||
Entity e = player;
|
Entity e = player;
|
||||||
defense = pm.getDefense().get(e);
|
defense = pm.getDefense().get(e);
|
||||||
maxMana = pm.getMaxMana().get(e);
|
maxMana = pm.getMaxMana().get(e);
|
||||||
itemDefense = pm.getItemDefense().get(e);
|
itemDefense = pm.getItemDefense().get(e);
|
||||||
health = pm.getHealth().get(e);
|
health = pm.getHealth().get(e);
|
||||||
itemHealth = pm.getItemHealth().get(e);
|
itemHealth = pm.getItemHealth().get(e);
|
||||||
mana = pm.getMana().get(e);
|
mana = pm.getMana().get(e);
|
||||||
speed = pm.getSpeed().get(e);
|
speed = pm.getSpeed().get(e);
|
||||||
itemLuck = pm.getItemLuck().get(e);
|
itemLuck = pm.getItemLuck().get(e);
|
||||||
strength = pm.getStrength().get(e);
|
strength = pm.getStrength().get(e);
|
||||||
luck = pm.getLuck().get(e);
|
luck = pm.getLuck().get(e);
|
||||||
maxHealth = pm.getMaxHealth().get(e);
|
maxHealth = pm.getMaxHealth().get(e);
|
||||||
itemStrength = pm.getItemStrength().get(e);
|
itemStrength = pm.getItemStrength().get(e);
|
||||||
itemSpeed = pm.getItemSpeed().get(e);
|
itemSpeed = pm.getItemSpeed().get(e);
|
||||||
itemMana = pm.getItemMana().get(e);
|
itemMana = pm.getItemMana().get(e);
|
||||||
return new Attribute(
|
return new Attribute(
|
||||||
maxHealth,
|
maxHealth,
|
||||||
health,
|
health,
|
||||||
itemHealth,
|
itemHealth,
|
||||||
defense,
|
defense,
|
||||||
itemDefense,
|
itemDefense,
|
||||||
speed,
|
speed,
|
||||||
itemSpeed,
|
itemSpeed,
|
||||||
strength,
|
strength,
|
||||||
itemStrength,
|
itemStrength,
|
||||||
maxMana,
|
maxMana,
|
||||||
mana,
|
mana,
|
||||||
itemMana,
|
itemMana,
|
||||||
luck,
|
luck,
|
||||||
itemLuck
|
itemLuck
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setAttributes(
|
public static void setAttributes(
|
||||||
Player player,
|
Player player,
|
||||||
int maxHealth,
|
int maxHealth,
|
||||||
int health,
|
int health,
|
||||||
int itemHealth,
|
int itemHealth,
|
||||||
int defense,
|
int defense,
|
||||||
int itemDefense,
|
int itemDefense,
|
||||||
int speed,
|
int speed,
|
||||||
int itemSpeed,
|
int itemSpeed,
|
||||||
int strength,
|
int strength,
|
||||||
int itemStrength,
|
int itemStrength,
|
||||||
int maxMana,
|
int maxMana,
|
||||||
int mana,
|
int mana,
|
||||||
int itemMana,
|
int itemMana,
|
||||||
int luck,
|
int luck,
|
||||||
int itemLuck
|
int itemLuck
|
||||||
) {
|
) {
|
||||||
PlayerManager pm =
|
PlayerManager pm =
|
||||||
((Raxen) Bukkit.getPluginManager().getPlugin("Raxen")).getManager()
|
((Raxen) Bukkit.getPluginManager().getPlugin("Raxen")).getManager()
|
||||||
.getPlayerManager();
|
.getPlayerManager();
|
||||||
Entity e = player;
|
Entity e = player;
|
||||||
pm.getDefense().set(e, defense);
|
pm.getDefense().set(e, defense);
|
||||||
pm.getMaxMana().set(e, maxMana);
|
pm.getMaxMana().set(e, maxMana);
|
||||||
pm.getItemDefense().set(e, itemDefense);
|
pm.getItemDefense().set(e, itemDefense);
|
||||||
pm.getHealth().set(e, health);
|
pm.getHealth().set(e, health);
|
||||||
pm.getItemHealth().set(e, itemHealth);
|
pm.getItemHealth().set(e, itemHealth);
|
||||||
pm.getMana().set(e, mana);
|
pm.getMana().set(e, mana);
|
||||||
pm.getSpeed().set(e, speed);
|
pm.getSpeed().set(e, speed);
|
||||||
pm.getItemLuck().set(e, itemLuck);
|
pm.getItemLuck().set(e, itemLuck);
|
||||||
pm.getStrength().set(e, strength);
|
pm.getStrength().set(e, strength);
|
||||||
pm.getLuck().set(e, luck);
|
pm.getLuck().set(e, luck);
|
||||||
pm.getMaxHealth().set(e, maxHealth);
|
pm.getMaxHealth().set(e, maxHealth);
|
||||||
pm.getItemStrength().set(e, itemStrength);
|
pm.getItemStrength().set(e, itemStrength);
|
||||||
pm.getItemSpeed().set(e, itemSpeed);
|
pm.getItemSpeed().set(e, itemSpeed);
|
||||||
pm.getItemMana().set(e, itemMana);
|
pm.getItemMana().set(e, itemMana);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String[] getNameList() {
|
public static String[] getNameList() {
|
||||||
return new String[] {
|
return new String[] {
|
||||||
"Defense",
|
"Defense",
|
||||||
"Health",
|
"Health",
|
||||||
"Luck",
|
"Luck",
|
||||||
"Mana",
|
"Mana",
|
||||||
"Speed",
|
"Speed",
|
||||||
"Strength",
|
"Strength"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,46 +8,46 @@ import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
public class Class {
|
public class Class {
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
String name;
|
String name;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
String colorName;
|
String colorName;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
String ID;
|
String ID;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
ItemStack placeHolder;
|
ItemStack placeHolder;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
Integer max_level;
|
Integer max_level;
|
||||||
|
|
||||||
public Class(
|
public Class(
|
||||||
String name,
|
String name,
|
||||||
String colorName,
|
String colorName,
|
||||||
String ID,
|
String ID,
|
||||||
String itemPlaceHolder,
|
String itemPlaceHolder,
|
||||||
Integer max_level
|
Integer max_level
|
||||||
) {
|
) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.ID = ID;
|
this.ID = ID;
|
||||||
this.placeHolder = new ItemStack(Material.getMaterial(itemPlaceHolder));
|
this.placeHolder = new ItemStack(Material.getMaterial(itemPlaceHolder));
|
||||||
this.placeHolder.getItemMeta().displayName(colorTextComp(colorName));
|
this.placeHolder.getItemMeta().displayName(colorTextComp(colorName));
|
||||||
this.max_level = max_level;
|
this.max_level = max_level;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Class(
|
public Class(
|
||||||
String name,
|
String name,
|
||||||
String colorName,
|
String colorName,
|
||||||
String ID,
|
String ID,
|
||||||
ItemStack itemPlaceHolder,
|
ItemStack itemPlaceHolder,
|
||||||
Integer max_level
|
Integer max_level
|
||||||
) {
|
) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.ID = ID;
|
this.ID = ID;
|
||||||
this.placeHolder = itemPlaceHolder;
|
this.placeHolder = itemPlaceHolder;
|
||||||
this.placeHolder.getItemMeta().displayName(colorTextComp(colorName));
|
this.placeHolder.getItemMeta().displayName(colorTextComp(colorName));
|
||||||
this.max_level = max_level;
|
this.max_level = max_level;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,35 +9,35 @@ import me.unurled.raxen.components.entity.player.classes.list.Assassin;
|
||||||
|
|
||||||
public class Classes {
|
public class Classes {
|
||||||
|
|
||||||
private final Raxen main;
|
private final Raxen main;
|
||||||
|
|
||||||
public Classes(Raxen main) {
|
public Classes(Raxen main) {
|
||||||
this.main = main;
|
this.main = main;
|
||||||
register();
|
register();
|
||||||
}
|
|
||||||
|
|
||||||
public void register() {
|
|
||||||
registerClass(new Assassin());
|
|
||||||
}
|
|
||||||
|
|
||||||
public class resultClass {
|
|
||||||
|
|
||||||
@Getter
|
|
||||||
@Setter
|
|
||||||
public Class clas;
|
|
||||||
|
|
||||||
@Getter
|
|
||||||
@Setter
|
|
||||||
public String id;
|
|
||||||
|
|
||||||
public resultClass(Class clas, String id) {
|
|
||||||
this.clas = clas;
|
|
||||||
this.id = id;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void registerClass(Class clas) {
|
public void register() {
|
||||||
debug(clas.getID());
|
registerClass(new Assassin());
|
||||||
main.getManager().getPlayerManager().addClasses(clas, clas.getID());
|
}
|
||||||
}
|
|
||||||
|
public class resultClass {
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public Class clas;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public String id;
|
||||||
|
|
||||||
|
public resultClass(Class clas, String id) {
|
||||||
|
this.clas = clas;
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void registerClass(Class clas) {
|
||||||
|
debug(clas.getID());
|
||||||
|
main.getManager().getPlayerManager().addClasses(clas, clas.getID());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,33 +7,33 @@ import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
public class Assassin extends Class {
|
public class Assassin extends Class {
|
||||||
|
|
||||||
String ID = "ASSASSIN";
|
String ID = "ASSASSIN";
|
||||||
String name = "Assassin";
|
String name = "Assassin";
|
||||||
String colorName = "<red>Assassin";
|
String colorName = "<red>Assassin";
|
||||||
Integer max_level = 100;
|
Integer max_level = 100;
|
||||||
|
|
||||||
ItemStack placeHolder;
|
ItemStack placeHolder;
|
||||||
|
|
||||||
public Assassin() {
|
public Assassin() {
|
||||||
super(
|
super(
|
||||||
"Assassin",
|
"Assassin",
|
||||||
"<red>Assassin",
|
"<red>Assassin",
|
||||||
"ASSASSIN",
|
"ASSASSIN",
|
||||||
new ItemStack(Material.AIR),
|
new ItemStack(Material.AIR),
|
||||||
100
|
100
|
||||||
);
|
);
|
||||||
Dagger dagger = new Dagger();
|
Dagger dagger = new Dagger();
|
||||||
dagger.buildItem();
|
dagger.buildItem();
|
||||||
placeHolder = dagger.getItem();
|
placeHolder = dagger.getItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Assassin(
|
public Assassin(
|
||||||
String name,
|
String name,
|
||||||
String colorName,
|
String colorName,
|
||||||
String ID,
|
String ID,
|
||||||
String itemPlaceHolder,
|
String itemPlaceHolder,
|
||||||
Integer max_level
|
Integer max_level
|
||||||
) {
|
) {
|
||||||
super(name, colorName, ID, itemPlaceHolder, max_level);
|
super(name, colorName, ID, itemPlaceHolder, max_level);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,15 +8,15 @@ import org.bukkit.inventory.Inventory;
|
||||||
|
|
||||||
public class EnderChest {
|
public class EnderChest {
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
public Inventory ec = Bukkit.createInventory(
|
public Inventory ec = Bukkit.createInventory(
|
||||||
null,
|
null,
|
||||||
54,
|
54,
|
||||||
Component.text("Ender Chest")
|
Component.text("Ender Chest")
|
||||||
);
|
);
|
||||||
|
|
||||||
public EnderChest(Inventory ec) {
|
public EnderChest(Inventory ec) {
|
||||||
this.ec = ec;
|
this.ec = ec;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,14 +7,14 @@ import org.bukkit.event.inventory.InventoryType;
|
||||||
|
|
||||||
public class Inventory {
|
public class Inventory {
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
public org.bukkit.inventory.Inventory inv = Bukkit.createInventory(
|
public org.bukkit.inventory.Inventory inv = Bukkit.createInventory(
|
||||||
null,
|
null,
|
||||||
InventoryType.PLAYER
|
InventoryType.PLAYER
|
||||||
);
|
);
|
||||||
|
|
||||||
public Inventory(org.bukkit.inventory.Inventory inv) {
|
public Inventory(org.bukkit.inventory.Inventory inv) {
|
||||||
this.inv = inv;
|
this.inv = inv;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
package me.unurled.raxen.components.glyph;
|
||||||
|
|
||||||
|
public class Glyph {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
package me.unurled.raxen.components.glyph;
|
||||||
|
|
||||||
|
public class GlyphBuilder {
|
||||||
|
|
||||||
|
String chars;
|
||||||
|
String model;
|
||||||
|
String texture;
|
||||||
|
String placeholder;
|
||||||
|
|
||||||
|
public GlyphBuilder(String chars) {
|
||||||
|
this.chars = chars;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void model(String s) {
|
||||||
|
model = s;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void texture(String s) {
|
||||||
|
texture = s;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void placeholder(String s) {
|
||||||
|
placeholder = s;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
package me.unurled.raxen.components.glyph;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
|
||||||
|
public class GlyphParser {
|
||||||
|
|
||||||
|
private final ConfigurationSection section;
|
||||||
|
|
||||||
|
public GlyphParser(ConfigurationSection section) {
|
||||||
|
this.section = section;
|
||||||
|
if (section.isConfigurationSection("Pack")) {
|
||||||
|
ConfigurationSection packSection = section.getConfigurationSection("Pack");
|
||||||
|
applyConfig(buildGlyph());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public GlyphBuilder buildGlyph() {
|
||||||
|
return buildGlyph(section.contains("char") ? section.getString("char") : null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GlyphBuilder buildGlyph(String car) {
|
||||||
|
GlyphBuilder glyph = null;
|
||||||
|
if (car != null) {
|
||||||
|
glyph = new GlyphBuilder(car);
|
||||||
|
}
|
||||||
|
return glyph;
|
||||||
|
}
|
||||||
|
|
||||||
|
private GlyphBuilder applyConfig(GlyphBuilder glyph) {
|
||||||
|
if (section.contains("Pack")) {
|
||||||
|
ConfigurationSection s = section.getConfigurationSection("Pack");
|
||||||
|
if (s.contains("model")) {
|
||||||
|
glyph.model(s.getString("model"));
|
||||||
|
}
|
||||||
|
if (s.contains("texture")) {
|
||||||
|
glyph.texture(s.getString("texture"));
|
||||||
|
}
|
||||||
|
if (s.contains("placeholder")) {
|
||||||
|
glyph.placeholder(s.getString("placeholder"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return glyph;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,21 +1,15 @@
|
||||||
package me.unurled.raxen.components.gui;
|
package me.unurled.raxen.components.gui;
|
||||||
|
|
||||||
import static me.unurled.raxen.utils.Items.*;
|
import static me.unurled.raxen.utils.Utils.fillGreyPane;
|
||||||
import static me.unurled.raxen.utils.Utils.*;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import me.unurled.raxen.Raxen;
|
import me.unurled.raxen.Raxen;
|
||||||
import me.unurled.raxen.components.entity.player.PlayerUtils;
|
import me.unurled.raxen.components.entity.player.PlayerUtils;
|
||||||
import me.unurled.raxen.utils.Utils;
|
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.TextComponent;
|
|
||||||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
@ -25,293 +19,61 @@ import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
public class ItemListGui implements Listener {
|
public class ItemListGui implements Listener {
|
||||||
|
|
||||||
private Raxen main;
|
private Raxen main;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private Inventory inv = Bukkit.createInventory(
|
private Inventory inv = Bukkit.createInventory(
|
||||||
null,
|
null,
|
||||||
54,
|
54,
|
||||||
Component.text("Item List")
|
Component.text("Item List")
|
||||||
);
|
);
|
||||||
|
|
||||||
private Inventory inv2 = Bukkit.createInventory(
|
private HashMap<String, ItemStack> itlist;
|
||||||
null,
|
|
||||||
54,
|
|
||||||
Component.text("Item List")
|
|
||||||
);
|
|
||||||
private Inventory inv3 = Bukkit.createInventory(
|
|
||||||
null,
|
|
||||||
54,
|
|
||||||
Component.text("Item List")
|
|
||||||
);
|
|
||||||
private Inventory inv4 = Bukkit.createInventory(
|
|
||||||
null,
|
|
||||||
54,
|
|
||||||
Component.text("Item List")
|
|
||||||
);
|
|
||||||
private Inventory inv5 = Bukkit.createInventory(
|
|
||||||
null,
|
|
||||||
54,
|
|
||||||
Component.text("Item List")
|
|
||||||
);
|
|
||||||
private Inventory inv6 = Bukkit.createInventory(
|
|
||||||
null,
|
|
||||||
54,
|
|
||||||
Component.text("Item List")
|
|
||||||
);
|
|
||||||
private Inventory inv7 = Bukkit.createInventory(
|
|
||||||
null,
|
|
||||||
54,
|
|
||||||
Component.text("Item List")
|
|
||||||
);
|
|
||||||
private Inventory inv8 = Bukkit.createInventory(
|
|
||||||
null,
|
|
||||||
54,
|
|
||||||
Component.text("Item List")
|
|
||||||
);
|
|
||||||
private Inventory inv9 = Bukkit.createInventory(
|
|
||||||
null,
|
|
||||||
54,
|
|
||||||
Component.text("Item List")
|
|
||||||
);
|
|
||||||
|
|
||||||
private HashMap<String, ItemStack> itlist;
|
public ItemListGui(Raxen main) {
|
||||||
|
this.main = main;
|
||||||
public ItemListGui(Raxen main) {
|
this.itlist = this.main.getManager().getItemManager().getList();
|
||||||
this.main = main;
|
|
||||||
this.itlist = this.main.getManager().getItemManager().getList();
|
|
||||||
this.inv = getInventories();
|
|
||||||
}
|
|
||||||
|
|
||||||
private ItemStack PREVIOUS = createItem(
|
|
||||||
Material.ARROW,
|
|
||||||
1,
|
|
||||||
true,
|
|
||||||
false,
|
|
||||||
"Previous page"
|
|
||||||
);
|
|
||||||
private ItemStack NEXT = createItem(
|
|
||||||
Material.ARROW,
|
|
||||||
1,
|
|
||||||
true,
|
|
||||||
false,
|
|
||||||
"Next page"
|
|
||||||
);
|
|
||||||
private ItemStack PAGE = createItem(Material.PAPER, 1, true, false, "Page");
|
|
||||||
private ItemStack CLOSE = closeItem();
|
|
||||||
private ItemStack GREY_PANE = greyPane();
|
|
||||||
|
|
||||||
public Inventory getInventories() {
|
|
||||||
Integer page = 1;
|
|
||||||
Integer item = -1;
|
|
||||||
for (Map.Entry<String, ItemStack> entry : itlist.entrySet()) {
|
|
||||||
ItemStack it = entry.getValue();
|
|
||||||
item++;
|
|
||||||
if (item > 44 && item < 91) {
|
|
||||||
inv2.addItem(it);
|
|
||||||
inv2.setItem(48, PREVIOUS);
|
|
||||||
inv2.setItem(
|
|
||||||
49,
|
|
||||||
editItem(PAGE, "page" + page, 1, new ArrayList<Component>())
|
|
||||||
);
|
|
||||||
inv2.setItem(53, CLOSE);
|
|
||||||
inv2 = fillGreyPane(inv2);
|
|
||||||
}
|
|
||||||
if (item > 90 && item < 136) {
|
|
||||||
inv3.setItem(48, PREVIOUS);
|
|
||||||
inv3.setItem(
|
|
||||||
49,
|
|
||||||
editItem(PAGE, "page" + page, 1, new ArrayList<Component>())
|
|
||||||
);
|
|
||||||
inv3.setItem(53, CLOSE);
|
|
||||||
inv3 = fillGreyPane(inv3);
|
|
||||||
}
|
|
||||||
if (item > 135 && item < 181) {
|
|
||||||
inv4.addItem(it);
|
|
||||||
inv4.setItem(48, PREVIOUS);
|
|
||||||
inv4.setItem(
|
|
||||||
49,
|
|
||||||
editItem(PAGE, "page" + page, 1, new ArrayList<Component>())
|
|
||||||
);
|
|
||||||
inv4.setItem(53, CLOSE);
|
|
||||||
inv4 = fillGreyPane(inv4);
|
|
||||||
}
|
|
||||||
if (item > 180 && item < 226) {
|
|
||||||
inv5.addItem(it);
|
|
||||||
inv5.setItem(48, PREVIOUS);
|
|
||||||
inv5.setItem(
|
|
||||||
49,
|
|
||||||
editItem(PAGE, "page" + page, 1, new ArrayList<Component>())
|
|
||||||
);
|
|
||||||
inv5.setItem(53, CLOSE);
|
|
||||||
inv5 = fillGreyPane(inv5);
|
|
||||||
}
|
|
||||||
if (item > 225 && item < 271) {
|
|
||||||
inv6.addItem(it);
|
|
||||||
inv6.setItem(48, PREVIOUS);
|
|
||||||
inv6.setItem(
|
|
||||||
49,
|
|
||||||
editItem(PAGE, "page" + page, 1, new ArrayList<Component>())
|
|
||||||
);
|
|
||||||
inv6.setItem(53, CLOSE);
|
|
||||||
inv6 = fillGreyPane(inv6);
|
|
||||||
}
|
|
||||||
if (item > 270 && item < 316) {
|
|
||||||
inv7.addItem(it);
|
|
||||||
inv7.setItem(48, PREVIOUS);
|
|
||||||
inv7.setItem(
|
|
||||||
49,
|
|
||||||
editItem(PAGE, "page" + page, 1, new ArrayList<Component>())
|
|
||||||
);
|
|
||||||
inv7.setItem(53, CLOSE);
|
|
||||||
inv7 = fillGreyPane(inv7);
|
|
||||||
}
|
|
||||||
if (item > 315 && item < 361) {
|
|
||||||
inv8.addItem(it);
|
|
||||||
inv8.setItem(48, PREVIOUS);
|
|
||||||
inv8.setItem(
|
|
||||||
49,
|
|
||||||
editItem(PAGE, "page" + page, 1, new ArrayList<Component>())
|
|
||||||
);
|
|
||||||
inv8.setItem(53, CLOSE);
|
|
||||||
inv8 = fillGreyPane(inv8);
|
|
||||||
}
|
|
||||||
if (item > 360 && item < 406) {
|
|
||||||
inv9.addItem(it);
|
|
||||||
inv9.setItem(48, PREVIOUS);
|
|
||||||
inv9.setItem(
|
|
||||||
49,
|
|
||||||
editItem(PAGE, "page" + page, 1, new ArrayList<Component>())
|
|
||||||
);
|
|
||||||
inv9.setItem(53, CLOSE);
|
|
||||||
inv9 = fillGreyPane(inv9);
|
|
||||||
}
|
|
||||||
if (item > 405) {
|
|
||||||
log("Too many item to render.");
|
|
||||||
} else {
|
|
||||||
inv.addItem(it);
|
|
||||||
inv.setItem(49, PAGE);
|
|
||||||
inv.setItem(50, NEXT);
|
|
||||||
}
|
|
||||||
if (item > 44) {
|
|
||||||
inv.setItem(50, NEXT);
|
|
||||||
if (item > 90) {
|
|
||||||
inv2.setItem(50, NEXT);
|
|
||||||
if (item > 135) {
|
|
||||||
inv3.setItem(50, NEXT);
|
|
||||||
if (item > 180) {
|
|
||||||
inv4.setItem(50, NEXT);
|
|
||||||
if (item > 225) {
|
|
||||||
inv5.setItem(50, NEXT);
|
|
||||||
if (item > 270) {
|
|
||||||
inv6.setItem(50, NEXT);
|
|
||||||
if (item > 315) {
|
|
||||||
inv7.setItem(50, NEXT);
|
|
||||||
if (item > 360) {
|
|
||||||
inv8.setItem(50, NEXT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
page++;
|
|
||||||
inv.setItem(53, CLOSE);
|
|
||||||
inv = fillGreyPane(inv);
|
|
||||||
}
|
}
|
||||||
return inv;
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
public Inventory getInventories(int page) {
|
||||||
public void clickInventory(InventoryClickEvent e) {
|
int item = -1;
|
||||||
Player player = (Player) e.getWhoClicked();
|
int number = 54 * (page - 1);
|
||||||
Inventory einv = e.getClickedInventory();
|
int number_final = number + 54;
|
||||||
if (
|
|
||||||
einv == inv ||
|
for (ItemStack it : itlist.values()) {
|
||||||
einv == inv2 ||
|
item++;
|
||||||
einv == inv3 ||
|
if (item >= number && item < number_final) {
|
||||||
einv == inv4 ||
|
inv.setItem(item - number, it);
|
||||||
einv == inv5 ||
|
|
||||||
einv == inv6 ||
|
|
||||||
einv == inv7 ||
|
|
||||||
einv == inv8 ||
|
|
||||||
einv == inv9
|
|
||||||
) {
|
|
||||||
if (
|
|
||||||
e.getCurrentItem() != null &&
|
|
||||||
e.getCurrentItem().getType() != Material.AIR
|
|
||||||
) {
|
|
||||||
Integer slot = e.getSlot();
|
|
||||||
ItemStack clicked;
|
|
||||||
if (slot == 48) {
|
|
||||||
//previous
|
|
||||||
if (e.getCurrentItem() != GREY_PANE) {
|
|
||||||
ItemStack pagee = einv.getItem(49);
|
|
||||||
String name = textCompToString(pagee.displayName());
|
|
||||||
int page = Integer.parseInt(name.replace("page", ""));
|
|
||||||
switch (page) {
|
|
||||||
case 2:
|
|
||||||
player.openInventory(inv);
|
|
||||||
case 3:
|
|
||||||
player.openInventory(inv2);
|
|
||||||
case 4:
|
|
||||||
player.openInventory(inv3);
|
|
||||||
case 5:
|
|
||||||
player.openInventory(inv4);
|
|
||||||
case 6:
|
|
||||||
player.openInventory(inv5);
|
|
||||||
case 7:
|
|
||||||
player.openInventory(inv6);
|
|
||||||
case 8:
|
|
||||||
player.openInventory(inv7);
|
|
||||||
case 9:
|
|
||||||
player.openInventory(inv8);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else if (slot == 49) {
|
|
||||||
//page
|
|
||||||
return;
|
|
||||||
} else if (slot == 50) {
|
|
||||||
//next
|
|
||||||
ItemStack pagee = einv.getItem(49);
|
|
||||||
if (pagee != null) {
|
|
||||||
String name = textCompToString(pagee.displayName());
|
|
||||||
name = name.replace("[", "");
|
|
||||||
name = name.replace("]", "");
|
|
||||||
log(name);
|
|
||||||
int page = Integer.parseInt(name.replace("page", ""));
|
|
||||||
switch (page) {
|
|
||||||
case 1:
|
|
||||||
player.openInventory(inv2);
|
|
||||||
case 2:
|
|
||||||
player.openInventory(inv3);
|
|
||||||
case 3:
|
|
||||||
player.openInventory(inv4);
|
|
||||||
case 4:
|
|
||||||
player.openInventory(inv5);
|
|
||||||
case 5:
|
|
||||||
player.openInventory(inv6);
|
|
||||||
case 6:
|
|
||||||
player.openInventory(inv7);
|
|
||||||
case 7:
|
|
||||||
player.openInventory(inv8);
|
|
||||||
case 8:
|
|
||||||
player.openInventory(inv9);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (slot == 53) {
|
|
||||||
//close
|
|
||||||
player.closeInventory();
|
|
||||||
} else {
|
|
||||||
//if (player.getInventory().firstEmpty() == -1) {
|
|
||||||
//add to stash
|
|
||||||
//}
|
|
||||||
player.getInventory().addItem(e.getCurrentItem());
|
|
||||||
PlayerUtils.updateSkills(main, player);
|
|
||||||
}
|
}
|
||||||
}
|
fillGreyPane(inv);
|
||||||
|
return inv;
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void clickInventory(InventoryClickEvent e) {
|
||||||
|
Player player = (Player) e.getWhoClicked();
|
||||||
|
Inventory einv = e.getClickedInventory();
|
||||||
|
if (einv == inv) {
|
||||||
|
if (
|
||||||
|
e.getCurrentItem() != null &&
|
||||||
|
e.getCurrentItem().getType() != Material.AIR
|
||||||
|
) {
|
||||||
|
Integer slot = e.getSlot();
|
||||||
|
ItemStack clicked;
|
||||||
|
//if (player.getInventory().firstEmpty() == -1) {
|
||||||
|
//add to stash
|
||||||
|
//}
|
||||||
|
player.getInventory().addItem(e.getCurrentItem());
|
||||||
|
player.closeInventory();
|
||||||
|
player.playSound(player, Sound.UI_BUTTON_CLICK, 1, 0);
|
||||||
|
PlayerUtils.updateSkills(main, player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void openInventory(Player player, int page) {
|
||||||
|
inv = getInventories(page);
|
||||||
|
player.openInventory(inv);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,66 +14,66 @@ import org.bukkit.inventory.meta.SkullMeta;
|
||||||
|
|
||||||
public class MainGui {
|
public class MainGui {
|
||||||
|
|
||||||
public static Inventory build(Player p) {
|
public static Inventory build(Player p) {
|
||||||
Inventory inv = Bukkit.createInventory(
|
Inventory inv = Bukkit.createInventory(
|
||||||
null,
|
null,
|
||||||
54,
|
54,
|
||||||
colorComp("<dark_grey>Raxen</dark_grey>")
|
colorComp("<dark_grey>Raxen</dark_grey>")
|
||||||
);
|
);
|
||||||
String gui =
|
String gui =
|
||||||
"0,7,0,0,0,8,9,0,10," +
|
"0,7,0,0,0,8,9,0,10," +
|
||||||
"0,0,0,0,0,0,0,0,0," +
|
"0,0,0,0,0,0,0,0,0," +
|
||||||
"0,0,0,0,0,0,0,0,0," +
|
"0,0,0,0,0,0,0,0,0," +
|
||||||
"0,2,3,0,0,0,0,4,0," +
|
"0,2,3,0,0,0,0,4,0," +
|
||||||
"0,0,0,0,1,0,0,0,0," +
|
"0,0,0,0,1,0,0,0,0," +
|
||||||
"0,0,0,0,0,0,0,0,0";
|
"0,0,0,0,0,0,0,0,0";
|
||||||
// 1 player Head
|
// 1 player Head
|
||||||
ItemStack head = new ItemStack(Material.PLAYER_HEAD);
|
ItemStack head = new ItemStack(Material.PLAYER_HEAD);
|
||||||
SkullMeta headm = (SkullMeta) head.getItemMeta();
|
SkullMeta headm = (SkullMeta) head.getItemMeta();
|
||||||
headm.setOwningPlayer(p.getPlayer());
|
headm.setOwningPlayer(p.getPlayer());
|
||||||
headm.displayName(colorComp("<green></green>"));
|
headm.displayName(colorComp("<green></green>"));
|
||||||
// 2 bank
|
// 2 bank
|
||||||
ItemStack bank = new ItemStack(Material.GOLD_INGOT);
|
ItemStack bank = new ItemStack(Material.GOLD_INGOT);
|
||||||
// 3 ah
|
// 3 ah
|
||||||
ItemStack ah = new ItemStack(Material.GOLD_INGOT);
|
ItemStack ah = new ItemStack(Material.GOLD_INGOT);
|
||||||
// 4 skill tree
|
// 4 skill tree
|
||||||
ItemStack sk_tree = new ItemStack(Material.OAK_SAPLING);
|
ItemStack sk_tree = new ItemStack(Material.OAK_SAPLING);
|
||||||
// 7 teleport
|
// 7 teleport
|
||||||
ItemStack tp = new ItemStack(Material.ENDER_PEARL);
|
ItemStack tp = new ItemStack(Material.ENDER_PEARL);
|
||||||
// 8 select character
|
// 8 select character
|
||||||
ItemStack sel_char = new ItemStack(Material.SNOWBALL);
|
ItemStack sel_char = new ItemStack(Material.SNOWBALL);
|
||||||
// 9 Settings
|
// 9 Settings
|
||||||
ItemStack sett = new ItemStack(Material.MAGMA_CREAM);
|
ItemStack sett = new ItemStack(Material.MAGMA_CREAM);
|
||||||
// 10 barrier block close
|
// 10 barrier block close
|
||||||
|
|
||||||
HashMap<String, ItemStack> list = new HashMap<>();
|
HashMap<String, ItemStack> list = new HashMap<>();
|
||||||
list.put("1", head);
|
list.put("1", head);
|
||||||
list.put("2", bank);
|
list.put("2", bank);
|
||||||
list.put("3", ah);
|
list.put("3", ah);
|
||||||
list.put("4", sk_tree);
|
list.put("4", sk_tree);
|
||||||
list.put("7", tp);
|
list.put("7", tp);
|
||||||
list.put("8", sel_char);
|
list.put("8", sel_char);
|
||||||
list.put("9", sett);
|
list.put("9", sett);
|
||||||
list.put("10", Items.closeItem());
|
list.put("10", Items.closeItem());
|
||||||
Inventory inventory = stringToGui(inv, gui, list);
|
Inventory inventory = stringToGui(inv, gui, list);
|
||||||
inventory = fillGreyPane(inventory);
|
inventory = fillGreyPane(inventory);
|
||||||
return inventory;
|
return inventory;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Inventory stringToGui(
|
public static Inventory stringToGui(
|
||||||
Inventory inv,
|
Inventory inv,
|
||||||
String stt,
|
String stt,
|
||||||
HashMap<String, ItemStack> it
|
HashMap<String, ItemStack> it
|
||||||
) {
|
) {
|
||||||
String[] s = stt.split(",");
|
String[] s = stt.split(",");
|
||||||
if (s.length != inv.getContents().length) {
|
if (s.length != inv.getContents().length) {
|
||||||
return inv;
|
return inv;
|
||||||
|
}
|
||||||
|
Integer i = 0;
|
||||||
|
for (String st : s) {
|
||||||
|
inv.setItem(i, it.get(st));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return inv;
|
||||||
}
|
}
|
||||||
Integer i = 0;
|
|
||||||
for (String st : s) {
|
|
||||||
inv.setItem(i, it.get(st));
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
return inv;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,20 +4,20 @@ import lombok.Getter;
|
||||||
|
|
||||||
public class Attributes {
|
public class Attributes {
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
Integer health, speed, defense, strength;
|
Integer health, speed, defense, strength;
|
||||||
|
|
||||||
public Attributes(
|
public Attributes(
|
||||||
Integer health,
|
Integer health,
|
||||||
Integer defense,
|
Integer defense,
|
||||||
Integer speed,
|
Integer speed,
|
||||||
Integer strength,
|
Integer strength,
|
||||||
Integer mana,
|
Integer mana,
|
||||||
Integer luck
|
Integer luck
|
||||||
) {
|
) {
|
||||||
this.health = health;
|
this.health = health;
|
||||||
this.defense = defense;
|
this.defense = defense;
|
||||||
this.speed = speed;
|
this.speed = speed;
|
||||||
this.strength = strength;
|
this.strength = strength;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue