Archived
0

UPDATE 0.1.1 ~ new classes and methods etc.

This commit is contained in:
Prot-CN
2019-03-17 08:15:14 +06:00
committed by DmitriyMX
parent 74aec1d470
commit 87b651a4f1
42 changed files with 1018 additions and 2147 deletions

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
* text=auto

10
.gitignore vendored Normal file
View File

@@ -0,0 +1,10 @@
## IDEA ##
.idea/
out/
*.iml
*.ipr
*.iws
*.ids
## MAVEN ##
target/

View File

@@ -1,8 +0,0 @@
<component name="ArtifactManager">
<artifact type="jar" build-on-make="true" name="PrisonAPI:jar">
<output-path>D:/Devel_Minecraft/spi_server_1.12/plugins</output-path>
<root id="archive" name="PrisonAPI.jar">
<element id="module-output" name="PrisonAPI" />
</root>
</artifact>
</component>

View File

@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="dataSourceStorageLocal">
<data-source name="prison4life@localhost" uuid="4defc9a2-e1ce-4207-91c9-549baaa59221">
<database-info product="MySQL" version="5.7.24-log" jdbc-version="4.0" driver-name="MySQL Connector Java" driver-version="mysql-connector-java-5.1.46 ( Revision: 9cc87a48e75c2d2e87c1a293b2862ce651cb256e )">
<extra-name-characters>#@</extra-name-characters>
<identifier-quote-string>`</identifier-quote-string>
</database-info>
<case-sensitivity plain-identifiers="lower" quoted-identifiers="lower" />
<secret-storage>master_key</secret-storage>
<user-name>root</user-name>
<introspection-schemas>*:prison4life</introspection-schemas>
</data-source>
</component>
</project>

19
.idea/dataSources.xml generated
View File

@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="prison4life@localhost" uuid="4defc9a2-e1ce-4207-91c9-549baaa59221">
<driver-ref>mysql</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.mysql.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://localhost:3306/prison4life</jdbc-url>
<driver-properties>
<property name="autoReconnect" value="true" />
<property name="zeroDateTimeBehavior" value="convertToNull" />
<property name="tinyInt1isBit" value="false" />
<property name="characterEncoding" value="utf8" />
<property name="characterSetResults" value="utf8" />
<property name="yearIsDateType" value="false" />
</driver-properties>
</data-source>
</component>
</project>

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +0,0 @@
<component name="libraryTable">
<library name="spigot-1.12">
<CLASSES>
<root url="jar://D:/Devel_Minecraft/spi_server_1.12/spigot-1.12.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://D:/Devel_Minecraft/spi_server_1.12/spigot-1.12.jar!/" />
</SOURCES>
</library>
</component>

14
.idea/misc.xml generated
View File

@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="false" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

6
.idea/vcs.xml generated
View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

852
.idea/workspace.xml generated
View File

@@ -1,852 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ArtifactsWorkspaceSettings">
<artifacts-to-build>
<artifact name="PrisonAPI:jar" />
</artifacts-to-build>
</component>
<component name="ChangeListManager">
<list default="true" id="5b30d845-a817-498e-8b4d-2a4df41a9b60" name="Default" comment="">
<change afterPath="$PROJECT_DIR$/src/main/java/META-INF/MANIFEST.MF" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Policeman.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gitignore" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/SETUP.md" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI/PrisonAPI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ru/prisonlife/api/PrisonAPI.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI/template/Faction.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Faction.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI/template/Level.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Level.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI/template/Manager.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Manager.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI/template/Prisoner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Prisoner.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI/template/Score.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Score.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI/template/Stats.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Stats.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI/template/Wallet.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Wallet.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/plugin.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/plugin.yml" afterDir="false" />
</list>
<ignored path="$PROJECT_DIR$/target/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="DatabaseView">
<option name="SHOW_INTERMEDIATE" value="true" />
<option name="GROUP_DATA_SOURCES" value="true" />
<option name="GROUP_SCHEMA" value="true" />
<option name="GROUP_CONTENTS" value="false" />
<option name="SORT_POSITIONED" value="false" />
<option name="SHOW_EMPTY_GROUPS" value="false" />
<option name="AUTO_SCROLL_FROM_SOURCE" value="false" />
<option name="HIDDEN_KINDS">
<set />
</option>
<expand>
<path>
<item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" />
<item name="prison4life@localhost" type="feb32156:DbDataSourceImpl" />
</path>
<path>
<item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" />
<item name="prison4life@localhost" type="feb32156:DbDataSourceImpl" />
<item name="schemas" type="d4e8921:DatabaseStructure$FamilyGroup" />
</path>
<path>
<item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" />
<item name="prison4life@localhost" type="feb32156:DbDataSourceImpl" />
<item name="schemas" type="d4e8921:DatabaseStructure$FamilyGroup" />
<item name="prison4life: schema" type="c314c289:MysqlImplModel$Schema" />
</path>
</expand>
<select />
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="Policeman.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Policeman.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="270">
<caret line="60" column="54" selection-start-line="60" selection-start-column="54" selection-end-line="60" selection-end-column="54" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#2351#2629#0" expanded="true" />
<element signature="e#2628#2629#0" expanded="true" />
<element signature="e#4512#4513#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Prisoner.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Prisoner.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="460">
<caret line="202" column="148" selection-start-line="202" selection-start-column="148" selection-end-line="202" selection-end-column="148" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#8118#8119#0" expanded="true" />
<element signature="e#8148#8149#0" expanded="true" />
<element signature="e#8181#8182#0" expanded="true" />
<element signature="e#8210#8211#0" expanded="true" />
<element signature="e#8241#8242#0" expanded="true" />
<element signature="e#8269#8270#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Manager.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Manager.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="115">
<caret line="122" column="33" lean-forward="true" selection-start-line="122" selection-start-column="33" selection-end-line="122" selection-end-column="33" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Faction.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Faction.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-35">
<caret line="94" column="76" lean-forward="true" selection-start-line="94" selection-start-column="76" selection-end-line="94" selection-end-column="76" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="PrisonAPI.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/PrisonAPI.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="265">
<caret line="21" column="40" selection-start-line="21" selection-start-column="40" selection-end-line="21" selection-end-column="40" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Level.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Level.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="255">
<caret line="21" selection-start-line="21" selection-end-line="21" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Score.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Score.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="75">
<caret line="9" selection-start-line="9" selection-end-line="9" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="players_in_cages" pinned="false" current-in-tab="false">
<entry file="das://4defc9a2-e1ce-4207-91c9-549baaa59221/schema/prison4life/table/players_in_cages">
<provider selected="true" editor-type-id="com.intellij.database.editor.DatabaseTableFileEditorProvider">
<state>
<filtering enabled="true" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="daily_respect_task" pinned="false" current-in-tab="false">
<entry file="das://4defc9a2-e1ce-4207-91c9-549baaa59221/schema/prison4life/table/daily_respect_task">
<provider selected="true" editor-type-id="com.intellij.database.editor.DatabaseTableFileEditorProvider">
<state>
<filtering enabled="true" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="player_stats" pinned="false" current-in-tab="false">
<entry file="das://4defc9a2-e1ce-4207-91c9-549baaa59221/schema/prison4life/table/player_stats">
<provider selected="true" editor-type-id="com.intellij.database.editor.DatabaseTableFileEditorProvider">
<state>
<filtering enabled="true" />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Class" />
</list>
</option>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI/connect/DataBasePrison4Life.java" />
<option value="$PROJECT_DIR$/pom.xml" />
<option value="$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI/template/Score.java" />
<option value="$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI/template/Stats.java" />
<option value="$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI/template/PrisonManager.java" />
<option value="$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI/template/Faction.java" />
<option value="$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI/PrisonAPI.java" />
<option value="$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI/template/Wallet.java" />
<option value="$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI/template/Level.java" />
<option value="$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI/template/Manager.java" />
<option value="$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI/template/Prisoner.java" />
<option value="$PROJECT_DIR$/SETUP.md" />
<option value="$PROJECT_DIR$/.gitignore" />
<option value="$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI.java" />
<option value="$PROJECT_DIR$/src/main/resources/plugin.yml" />
<option value="$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Level.java" />
<option value="$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Policeman.java" />
<option value="$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Manager.java" />
<option value="$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Prisoner.java" />
<option value="$PROJECT_DIR$/src/main/java/ru/prisonlife/api/PrisonAPI.java" />
<option value="$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Faction.java" />
</list>
</option>
</component>
<component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
<component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
<component name="JsGulpfileManager">
<detection-done>true</detection-done>
<sorting>DEFINITION_ORDER</sorting>
</component>
<component name="NodePackageJsonFileManager">
<packageJsonPaths />
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="2552" />
<option name="y" value="-8" />
<option name="width" value="1936" />
<option name="height" value="1096" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectView">
<navigator proportions="" version="1">
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="ProjectPane">
<subPane>
<expand>
<path>
<item name="PrisonAPI" type="b2602c69:ProjectViewProjectNode" />
<item name="PrisonAPI" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="PrisonAPI" type="b2602c69:ProjectViewProjectNode" />
<item name="PrisonAPI" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="PrisonAPI" type="b2602c69:ProjectViewProjectNode" />
<item name="PrisonAPI" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="PrisonAPI" type="b2602c69:ProjectViewProjectNode" />
<item name="PrisonAPI" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="PrisonAPI" type="b2602c69:ProjectViewProjectNode" />
<item name="PrisonAPI" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="api" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="PrisonAPI" type="b2602c69:ProjectViewProjectNode" />
<item name="PrisonAPI" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="api" type="462c0819:PsiDirectoryNode" />
<item name="template" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="PrisonAPI" type="b2602c69:ProjectViewProjectNode" />
<item name="PrisonAPI" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="resources" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
<pane id="AndroidView" />
<pane id="Scope" />
<pane id="PackagesPane" />
</panes>
</component>
<component name="PropertiesComponent">
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="aspect.path.notification.shown" value="true" />
<property name="com.intellij.database.dataSource.DataSourceTemplate" value="MySQL&#10;DDL Data Source" />
<property name="database.console.LAST_STATE" value="false" />
<property name="last_opened_file_path" value="D:/Devel_Minecraft/spi_server_1.12/spigot-1.12.jar!/" />
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
<property name="project.structure.last.edited" value="Artifacts" />
<property name="project.structure.proportion" value="0.15283613" />
<property name="project.structure.side.proportion" value="0.2" />
<property name="settings.editor.selected.configurable" value="reference.settingsdialog.IDE.editor.colors.Console Font" />
</component>
<component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
<recent name="D:\Git Clones\PrisonAPI" />
</key>
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="ru.prisonlife.PrisonAPI" />
<recent name="ru.prisonlife.PrisonAPI.connect" />
</key>
<key name="CopyFile.RECENT_KEYS">
<recent name="D:\Git Clones\PrisonAPI\src\main\java\ru\prisonlife\PrisonAPI\template" />
</key>
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="RunManager">
<configuration default="true" type="Application" factoryName="Application">
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
</configuration>
<configuration default="true" type="JUnit" factoryName="JUnit">
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" />
<option name="MAIN_CLASS_NAME" />
<option name="METHOD_NAME" />
<option name="TEST_OBJECT" value="class" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<patterns />
</configuration>
<configuration default="true" type="JarApplication" factoryName="JAR Application">
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
<option name="ALTERNATIVE_JRE_PATH" value="C:\Program Files\Java\jdk1.8.0_171\jre" />
</configuration>
<configuration default="true" type="TestNG" factoryName="TestNG">
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="SUITE_NAME" />
<option name="PACKAGE_NAME" />
<option name="MAIN_CLASS_NAME" />
<option name="METHOD_NAME" />
<option name="GROUP_NAME" />
<option name="TEST_OBJECT" value="CLASS" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
<option name="OUTPUT_DIRECTORY" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<option name="USE_DEFAULT_REPORTERS" value="false" />
<option name="PROPERTIES_FILE" />
<properties />
<listeners />
</configuration>
</component>
<component name="SvnConfiguration">
<configuration />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="5b30d845-a817-498e-8b4d-2a4df41a9b60" name="Default" comment="" />
<created>1548877621012</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1548877621012</updated>
<workItem from="1548877625927" duration="18265000" />
<workItem from="1548899818883" duration="477000" />
<workItem from="1548998186396" duration="7784000" />
<workItem from="1549034758627" duration="16188000" />
<workItem from="1549109188101" duration="14390000" />
<workItem from="1549218097000" duration="5621000" />
<workItem from="1549363482679" duration="9757000" />
<workItem from="1549465369826" duration="6000" />
<workItem from="1549466026088" duration="604000" />
<workItem from="1549645588294" duration="2971000" />
<workItem from="1549722847483" duration="6549000" />
<workItem from="1549806878393" duration="1706000" />
<workItem from="1550105065590" duration="6000" />
<workItem from="1550107136105" duration="5972000" />
<workItem from="1550121359949" duration="682000" />
<workItem from="1550194944052" duration="2739000" />
<workItem from="1550314518402" duration="14586000" />
<workItem from="1550388835390" duration="10428000" />
<workItem from="1550499792736" duration="5717000" />
<workItem from="1550550937192" duration="3310000" />
<workItem from="1550591974492" duration="11585000" />
<workItem from="1550689007980" duration="1167000" />
<workItem from="1550760837075" duration="7581000" />
<workItem from="1550773505971" duration="6352000" />
<workItem from="1550821566765" duration="1055000" />
<workItem from="1550923683629" duration="9371000" />
<workItem from="1550939534358" duration="6928000" />
<workItem from="1551003100435" duration="12833000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="184630000" />
</component>
<component name="TodoView">
<todo-panel id="selected-file">
<is-autoscroll-to-source value="true" />
</todo-panel>
<todo-panel id="all">
<are-packages-shown value="true" />
<is-autoscroll-to-source value="true" />
</todo-panel>
</component>
<component name="ToolWindowManager">
<frame x="2552" y="-8" width="1936" height="1096" extended-state="6" />
<editor active="true" />
<layout>
<window_info anchor="right" id="Palette" order="5" />
<window_info anchor="bottom" id="TODO" order="12" weight="0.32985386" />
<window_info anchor="bottom" id="Messages" order="5" weight="0.32985386" />
<window_info anchor="right" id="Palette&#9;" order="1" />
<window_info id="Image Layers" order="5" />
<window_info anchor="right" id="Capture Analysis" order="0" />
<window_info anchor="bottom" id="Event Log" order="2" side_tool="true" weight="0.32985386" />
<window_info anchor="right" id="Maven Projects" order="4" />
<window_info anchor="bottom" id="Database Changes" order="1" show_stripe_button="false" />
<window_info anchor="bottom" id="Run" order="8" />
<window_info anchor="bottom" id="Version Control" order="4" weight="0.32985386" />
<window_info anchor="bottom" id="Terminal" order="3" weight="0.24321502" />
<window_info id="Capture Tool" order="1" />
<window_info anchor="bottom" id="Database Console" order="0" weight="0.32985386" />
<window_info id="Designer" order="0" />
<window_info active="true" content_ui="combo" id="Project" order="4" visible="true" weight="0.16257995" />
<window_info anchor="right" id="Database" order="3" visible="true" weight="0.1652452" />
<window_info id="Structure" order="6" side_tool="true" weight="0.25" />
<window_info anchor="right" id="Ant Build" order="7" weight="0.25" />
<window_info id="UI Designer" order="2" />
<window_info anchor="right" id="Theme Preview" order="2" />
<window_info anchor="bottom" id="Debug" order="9" weight="0.4" />
<window_info id="Favorites" order="3" side_tool="true" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="8" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="11" weight="0.4" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="6" type="SLIDING" weight="0.4" />
<window_info anchor="bottom" id="Message" order="6" />
<window_info anchor="bottom" id="Cvs" order="10" weight="0.25" />
<window_info anchor="bottom" id="Find" order="7" weight="0.32985386" />
</layout>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
</component>
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
</component>
<component name="antWorkspaceConfiguration">
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/pom.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60">
<caret line="4" column="38" lean-forward="true" selection-start-line="4" selection-start-column="38" selection-end-line="4" selection-end-column="38" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Prisoner.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="45">
<caret line="8" lean-forward="true" selection-start-line="8" selection-end-line="8" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Wallet.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="255">
<caret line="21" column="21" selection-start-line="21" selection-start-column="21" selection-end-line="21" selection-end-column="21" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Level.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="660">
<caret line="48" column="4" selection-start-line="48" selection-start-column="4" selection-end-line="57" selection-end-column="5" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Score.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="435">
<caret line="33" column="46" selection-start-line="33" selection-start-column="46" selection-end-line="33" selection-end-column="46" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Stats.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="105">
<caret line="11" column="24" selection-start-line="11" selection-start-column="24" selection-end-line="11" selection-end-column="24" />
</state>
</provider>
</entry>
<entry file="das://1e5de0b7-db13-4bee-b34f-7794c33b5430/schema/prison4life/table/player_stats" />
<entry file="file://$PROJECT_DIR$/src/main/resources/plugin.yml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="45">
<caret line="3" column="37" lean-forward="true" selection-start-line="3" selection-start-column="37" selection-end-line="3" selection-end-column="37" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Faction.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="405">
<caret line="33" column="5" lean-forward="true" selection-start-line="33" selection-start-column="5" selection-end-line="33" selection-end-column="5" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/pom.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="255">
<caret line="17" column="20" selection-start-line="17" selection-start-column="20" selection-end-line="17" selection-end-column="20" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Prisoner.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="135">
<caret line="14" column="28" selection-start-line="14" selection-start-column="28" selection-end-line="14" selection-end-column="28" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Wallet.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="45">
<caret line="3" selection-start-line="3" selection-end-line="3" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Level.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="375">
<caret line="29" column="9" selection-start-line="29" selection-start-column="9" selection-end-line="29" selection-end-column="9" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Score.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="45">
<caret line="3" selection-start-line="3" selection-end-line="3" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/PrisonAPI.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="75">
<caret line="5" selection-start-line="5" selection-end-line="5" />
</state>
</provider>
</entry>
<entry file="das://4555cb3d-5297-48d8-a8a0-789511663af4/schema/prison/table/player_stats" />
<entry file="file://$PROJECT_DIR$/src/main/resources/plugin.yml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="15">
<caret line="1" column="14" selection-start-line="1" selection-start-column="14" selection-end-line="1" selection-end-column="14" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/pom.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="255">
<caret line="17" column="20" lean-forward="true" selection-start-line="17" selection-start-column="20" selection-end-line="17" selection-end-column="20" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Prisoner.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="15" column="28" lean-forward="true" selection-start-line="15" selection-start-column="28" selection-end-line="15" selection-end-column="28" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Wallet.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="45">
<caret line="3" selection-start-line="3" selection-end-line="3" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Level.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="375">
<caret line="29" column="9" lean-forward="true" selection-start-line="29" selection-start-column="9" selection-end-line="29" selection-end-column="9" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Score.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="45">
<caret line="3" selection-start-line="3" selection-end-line="3" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/PrisonAPI.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="135">
<caret line="13" column="12" lean-forward="true" selection-start-line="13" selection-start-column="12" selection-end-line="13" selection-end-column="12" />
</state>
</provider>
</entry>
<entry file="das://4555cb3d-5297-48d8-a8a0-789511663af4/schema/prison/table/player_stats" />
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Stats.java" />
<entry file="file://$APPLICATION_CONFIG_DIR$/consoles/db/034d1317-eab7-4582-92eb-1f1da11e8989/console.sql">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$APPLICATION_CONFIG_DIR$/consoles/db/4555cb3d-5297-48d8-a8a0-789511663af4/console.sql">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="das://034d1317-eab7-4582-92eb-1f1da11e8989/schema/prison4life/table/player_stats" />
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/PrisonAPI/connect/DataBasePrison4Life.java" />
<entry file="file://$APPLICATION_CONFIG_DIR$/consoles/db/1e5de0b7-db13-4bee-b34f-7794c33b5430/console.sql">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="das://4555cb3d-5297-48d8-a8a0-789511663af4/schema/prison/table/player_stats" />
<entry file="das://1e5de0b7-db13-4bee-b34f-7794c33b5430/schema/prison4life/table/daily_respect_task" />
<entry file="das://1e5de0b7-db13-4bee-b34f-7794c33b5430/schema/prison4life/table/player_stats" />
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Wallet.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="180">
<caret line="18" column="32" lean-forward="true" selection-start-line="18" selection-start-column="32" selection-end-line="18" selection-end-column="32" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Stats.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="630">
<caret line="48" column="38" selection-start-line="48" selection-start-column="38" selection-end-line="48" selection-end-column="38" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md" />
<entry file="file://$PROJECT_DIR$/SETUP.md" />
<entry file="file://$PROJECT_DIR$/.gitignore" />
<entry file="file://$PROJECT_DIR$/src/main/resources/plugin.yml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="45">
<caret line="3" column="33" selection-start-line="3" selection-start-column="33" selection-end-line="3" selection-end-column="33" />
</state>
</provider>
</entry>
<entry file="file://$APPLICATION_CONFIG_DIR$/consoles/db/4defc9a2-e1ce-4207-91c9-549baaa59221/console.sql">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/pom.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="75">
<caret line="5" lean-forward="true" selection-start-line="5" selection-end-line="5" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Score.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="75">
<caret line="9" selection-start-line="9" selection-end-line="9" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Policeman.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="270">
<caret line="60" column="54" selection-start-line="60" selection-start-column="54" selection-end-line="60" selection-end-column="54" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#2351#2629#0" expanded="true" />
<element signature="e#2628#2629#0" expanded="true" />
<element signature="e#4512#4513#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Level.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="255">
<caret line="21" selection-start-line="21" selection-end-line="21" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Manager.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="115">
<caret line="122" column="33" lean-forward="true" selection-start-line="122" selection-start-column="33" selection-end-line="122" selection-end-column="33" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="das://4defc9a2-e1ce-4207-91c9-549baaa59221/schema/prison4life/table/daily_respect_task">
<provider selected="true" editor-type-id="com.intellij.database.editor.DatabaseTableFileEditorProvider">
<state>
<filtering enabled="true" />
</state>
</provider>
</entry>
<entry file="das://4defc9a2-e1ce-4207-91c9-549baaa59221/schema/prison4life/table/players_in_cages">
<provider selected="true" editor-type-id="com.intellij.database.editor.DatabaseTableFileEditorProvider">
<state>
<filtering enabled="true" />
</state>
</provider>
</entry>
<entry file="das://4defc9a2-e1ce-4207-91c9-549baaa59221/schema/prison4life/table/player_stats">
<provider selected="true" editor-type-id="com.intellij.database.editor.DatabaseTableFileEditorProvider">
<state>
<filtering enabled="true" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/PrisonAPI.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="265">
<caret line="21" column="40" selection-start-line="21" selection-start-column="40" selection-end-line="21" selection-end-column="40" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Faction.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-35">
<caret line="94" column="76" lean-forward="true" selection-start-line="94" selection-start-column="76" selection-end-line="94" selection-end-column="76" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/ru/prisonlife/api/template/Prisoner.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="460">
<caret line="202" column="148" selection-start-line="202" selection-start-column="148" selection-end-line="202" selection-end-column="148" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#8118#8119#0" expanded="true" />
<element signature="e#8148#8149#0" expanded="true" />
<element signature="e#8181#8182#0" expanded="true" />
<element signature="e#8210#8211#0" expanded="true" />
<element signature="e#8241#8242#0" expanded="true" />
<element signature="e#8269#8270#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>
<state key="ArtifactsStructureConfigurable.UI">
<settings>
<artifact-editor />
<last-edited>PrisonAPI:jar</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
<option value="0.5" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="FacetStructureConfigurable.UI">
<settings>
<last-edited>No facets are configured</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="GlobalLibrariesConfigurable.UI">
<settings>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="JdkListConfigurable.UI">
<settings>
<last-edited>1.8</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="ModuleStructureConfigurable.UI">
<settings>
<last-edited>PrisonAPI</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="ProjectLibrariesConfigurable.UI">
<settings>
<last-edited>spigot-1.12</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
</states>
</component>
</project>

View File

@@ -6,7 +6,7 @@
<groupId>ru.prisonlife</groupId> <groupId>ru.prisonlife</groupId>
<artifactId>prison-api</artifactId> <artifactId>prison-api</artifactId>
<version>0.1.0.4</version> <version>0.1.1</version>
<properties> <properties>
<java.encoding>UTF-8</java.encoding> <java.encoding>UTF-8</java.encoding>

View File

@@ -1,3 +0,0 @@
Manifest-Version: 1.0
Main-Class: ru.prisonlife.api.PrisonAPI

View File

@@ -0,0 +1,28 @@
package ru.prisonlife.api;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File;
public enum Configurations {
FACTIONS("plugins/PrisonFactions/"), MANAGER("plugins/PrisonManager/"),
CAGES("plugins/PrisonCages/"), SUSPECT("plugins/PrisonSuspect/"),
ECONOMY("plugins/PrisonEconomy/"), RESPECT("plugins/PrisonRespect/");
private File file;
private FileConfiguration fileConfiguration;
Configurations(String path) {
file = new File(path);
fileConfiguration = YamlConfiguration.loadConfiguration(new File(file.getPath(), "parameters.yml"));
}
public FileConfiguration execute() {
return fileConfiguration;
}
public File root() {
return file;
}
}

View File

@@ -1,25 +1,37 @@
package ru.prisonlife.api; package ru.prisonlife.api;
import org.bukkit.Bukkit; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.Plugin; import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import ru.prisonlife.api.storage.InfoOfWanted;
import ru.prisonlife.api.storage.RegistrationPrisonerForCage;
import ru.prisonlife.api.storage.trades.TradeFormat;
import ru.prisonlife.api.storage.trades.TradeType;
import ru.prisonlife.api.template.BoardCage;
import ru.prisonlife.api.template.Manager;
import ru.prisonlife.api.template.Policeman;
import java.sql.Connection; import java.io.File;
import java.sql.DriverManager; import java.sql.*;
import java.sql.SQLException; import java.util.*;
public class PrisonAPI extends JavaPlugin { public class PrisonAPI extends JavaPlugin {
public static final String PLUGIN_PATH = "plugins/PrisonManager"; public static final String PLUGIN_MANAGER_PATH = "plugins/PrisonManager";
public static Map<String, List<List<Integer>>> CACHE_TERR_EDITOR = new HashMap<>();
public static Map<String, RegistrationPrisonerForCage> ARRESTED = new HashMap<>();
public static Map<TradeType, Map<String, TradeFormat>> TRADES = new HashMap<>();
public static Map<String, BoardCage> SIGN_FOR_CAGES = new HashMap<>();
public static final Plugin plugin = Bukkit.getPluginManager().getPlugin("PrisonAPI"); public static Connection CONN;
public enum Factions { public enum Factions {
NONE(0), ASIANS(1), LATINOS(2), NIGGAZ(3), POLICE(4); NONE(0), ASIANS(1), LATINOS(2), NIGGAZ(3), POLICE(4);
public static Factions valueOf(int id) { public static Factions valueOf(int id) {
for (Factions factions : Factions.values()) { for(Factions factions : Factions.values()) {
if (factions.id == id) { if(factions.id == id) {
return factions; return factions;
} }
} }
@@ -38,9 +50,9 @@ public class PrisonAPI extends JavaPlugin {
} }
} }
public static Connection CONN;
public void onEnable() { public void onEnable() {
for(TradeType type : TradeType.values())
PrisonAPI.TRADES.put(type, new HashMap<>());
try { try {
CONN = DriverManager.getConnection( CONN = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/prison4life", "jdbc:mysql://localhost:3306/prison4life",
@@ -48,15 +60,51 @@ public class PrisonAPI extends JavaPlugin {
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
getServer().getPluginManager().registerEvents(new Policeman(null), this);
} }
public void onDisable() { public void onDisable() {
try { try {
if (!CONN.isClosed()) { if(!CONN.isClosed()) {
CONN.close(); CONN.close();
} }
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
public static Manager getRandomPrison() {
File[] prisons = Configurations.MANAGER.root().listFiles();
assert prisons != null; String _this = prisons[new Random().nextInt(prisons.length)].getName();
return new Manager(_this.replace("PRISON_", "").replace(".yml", ""));
}
public static List<InfoOfWanted> getSulist() {
try(PreparedStatement statement = PrisonAPI.CONN.prepareStatement("SELECT UUID, SUSPECT FROM player_stats WHERE SUSPECT > ?")) {
statement.setInt(1, 0);
List<InfoOfWanted> iow = new ArrayList<>();
try(ResultSet resultSet = statement.executeQuery()) {
while(resultSet.next()) {
UUID uuid = UUID.fromString(resultSet.getString(1));
int su = resultSet.getInt(2);
iow.add(new InfoOfWanted(uuid, su));
}
if(iow.size() != 0)
return iow;
else
return null;
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public static TradeFormat getTradedCageByRole(Player player) {
for(TradeType i : TRADES.keySet())
for(String j : TRADES.get(i).keySet())
if(TRADES.get(i).get(j).trader.equals(player) || TRADES.get(i).get(j).member.equals(player))
return TRADES.get(i).get(j);
return null;
}
} }

View File

@@ -0,0 +1,15 @@
package ru.prisonlife.api.storage;
import org.bukkit.Bukkit;
import java.util.UUID;
public class InfoOfWanted {
public String name;
public int suspect;
public InfoOfWanted(UUID uuid, int suspect) {
name = Bukkit.getOfflinePlayer(uuid).getName();
this.suspect = suspect;
}
}

View File

@@ -0,0 +1,22 @@
package ru.prisonlife.api.storage;
public class RegistrationPrisonerForCage {
public String prison, cage;
public int time, blocks;
public RegistrationPrisonerForCage(String prison, String cage, int time, int blocks) {
this.prison = prison;
this.cage = cage;
this.time = time;
this.blocks = blocks;
}
public void toFinish() {
time = 0;
blocks = 0;
}
public boolean isReady() {
return time <= 0 && blocks <= 0;
}
}

View File

@@ -0,0 +1,68 @@
package ru.prisonlife.api.storage.trades;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import ru.prisonlife.api.Configurations;
import ru.prisonlife.api.PrisonAPI;
import ru.prisonlife.api.template.Cage;
public class InviteInCage extends TradeFormat {
private ProtectedRegion region;
public InviteInCage(Cage cage, Player trader, Player member, int time) {
super(cage, trader, member, time);
region = WorldGuardPlugin.inst().getRegionManager(cage.getWorld()).getRegion(cage.name);
tradeType = TradeType.CAGE;
}
@Override
public void start() {
PrisonAPI.TRADES.get(TradeType.CAGE).put(cage.name, this);
trade.runTaskTimer(Bukkit.getPluginManager().getPlugin("PrisonCages"), 20, 20);
}
@Override
public void accept() {
trade.cancel();
region.getMembers().addPlayer(member.getUniqueId());
cage.addGuest(member.getUniqueId().toString());
trader.sendMessage(ChatColor.translateAlternateColorCodes('&',
__convert__(Configurations.CAGES.execute().getString("MESSAGES.INVITE.OWNER.END"))));
member.sendMessage(ChatColor.translateAlternateColorCodes('&',
__convert__(Configurations.CAGES.execute().getString("MESSAGES.INVITE.TARGET.END"))));
PrisonAPI.TRADES.get(TradeType.CAGE).remove(cage.name);
}
@Override
public void exception(Player player) {
if(player != null) {
player.sendMessage(ChatColor.translateAlternateColorCodes('&',
Configurations.CAGES.execute().getString("MESSAGES.INVITE.EXCEPTION")));
}
}
@Override
public void deny(Player player) {
trade.cancel();
if(player.equals(trader)) {
trader.sendMessage(ChatColor.translateAlternateColorCodes('&',
__convert__(Configurations.CAGES.execute().getString("MESSAGES.INVITE.OWNER.DENY.FOR_OWNER"))));
member.sendMessage(ChatColor.translateAlternateColorCodes('&',
__convert__(Configurations.CAGES.execute().getString("MESSAGES.INVITE.OWNER.DENY.FOR_TARGET"))));
} else {
trader.sendMessage( ChatColor.translateAlternateColorCodes('&',
__convert__(Configurations.CAGES.execute().getString("MESSAGES.INVITE.TARGET.DENY.FOR_OWNER"))));
member.sendMessage( ChatColor.translateAlternateColorCodes('&',
__convert__(Configurations.CAGES.execute().getString("MESSAGES.INVITE.TARGET.DENY.FOR_TARGET"))));
}
PrisonAPI.TRADES.get(TradeType.CAGE).remove(cage.name);
}
private String __convert__(String msg) {
return msg.replace("%cage_name%", cage.name).replace("%cage_rent%", String.valueOf(cage.getPaid()));
}
}

View File

@@ -0,0 +1,76 @@
package ru.prisonlife.api.storage.trades;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import ru.prisonlife.api.Configurations;
import ru.prisonlife.api.PrisonAPI;
import ru.prisonlife.api.template.Cage;
public class SaleCage extends TradeFormat {
public int price;
private ProtectedRegion region;
public SaleCage(Cage cage, Player trader, Player member, int price, int time) {
super(cage, trader, member, time);
this.price = price;
region = WorldGuardPlugin.inst().getRegionManager(cage.getWorld()).getRegion(cage.name);
tradeType = TradeType.CAGE;
}
@Override
public void start() {
PrisonAPI.TRADES.get(TradeType.CAGE).put(cage.name, this);
trade.runTaskTimer(Bukkit.getPluginManager().getPlugin("PrisonCages"), 20, 20);
}
@Override
public void accept() {
trade.cancel();
cage.sellCage(member, price);
region.getOwners().removePlayer(trader.getUniqueId());
region.getOwners().addPlayer(member.getUniqueId());
trader.sendMessage(ChatColor.translateAlternateColorCodes('&',
__convert__(Configurations.CAGES.execute().getString("MESSAGES.SALE.OWNER.END"))));
member.sendMessage(ChatColor.translateAlternateColorCodes('&',
__convert__(Configurations.CAGES.execute().getString("MESSAGES.SALE.BUYER.END"))));
PrisonAPI.TRADES.get(TradeType.CAGE).remove(cage.name);
}
@Override
public void exception(Player player) {
if(player != null) {
player.sendMessage(ChatColor.translateAlternateColorCodes('&',
__convert__(Configurations.CAGES.execute().getString("MESSAGES.SALE.EXCEPTION"))));
}
}
@Override
public void deny(Player player) {
trade.cancel();
if(player.equals(trader)) {
trader.sendMessage(ChatColor.translateAlternateColorCodes('&',
__convert__(Configurations.CAGES.execute().getString("MESSAGES.SALE.OWNER.DENY.FOR_OWNER"))));
member.sendMessage(ChatColor.translateAlternateColorCodes('&',
__convert__(Configurations.CAGES.execute().getString("MESSAGES.SALE.OWNER.DENY.FOR_BUYER"))));
} else {
trader.sendMessage( ChatColor.translateAlternateColorCodes('&',
__convert__(Configurations.CAGES.execute().getString("MESSAGES.SALE.BUYER.DENY.FOR_OWNER"))));
member.sendMessage( ChatColor.translateAlternateColorCodes('&',
__convert__(Configurations.CAGES.execute().getString("MESSAGES.SALE.BUYER.DENY.FOR_BUYER"))));
}
PrisonAPI.TRADES.get(TradeType.CAGE).remove(cage.name);
}
private String __convert__(String msg) {
return msg.replace(
"%cage_name%", cage.name).replace("%cage_rent%", cage.getPaid() + "").replace(
"%cage_seller", trader.getName()).replace("%cage_buy%", member.getName()).replace(
"%cage_price%", price + "").replace(
"%default_price%", cage.getDefaultRentPrice() + "");
}
}

View File

@@ -0,0 +1,10 @@
package ru.prisonlife.api.storage.trades;
import org.bukkit.entity.Player;
public interface Trade {
void start();
void accept();
void deny(Player player);
void exception(Player player);
}

View File

@@ -0,0 +1,36 @@
package ru.prisonlife.api.storage.trades;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import ru.prisonlife.api.PrisonAPI;
import ru.prisonlife.api.template.Cage;
public abstract class TradeFormat implements Trade {
public Cage cage;
public Player trader, member;
public int time;
public TradeType tradeType;
public BukkitRunnable trade = new BukkitRunnable() {
@Override
public void run() {
if(time > 0 && trader.isOnline() && member.isOnline())
--time;
else {
cancel();
exception(trader.isOnline() ? trader : (member.isOnline() ? member : null));
PrisonAPI.TRADES.get(tradeType).remove(cage.name);
/*for(TradeType type : PrisonAPI.TRADES.keySet())
if(tradeType == type)
PrisonAPI.TRADES.get(type).remove(cage.name);*/
}
}
};
public TradeFormat(Cage cage, Player trader, Player member, int time) {
this.cage = cage;
this.trader = trader;
this.member = member;
this.time = time;
}
}

View File

@@ -0,0 +1,5 @@
package ru.prisonlife.api.storage.trades;
public enum TradeType {
CAGE
}

View File

@@ -0,0 +1,57 @@
package ru.prisonlife.api.template;
import org.bukkit.ChatColor;
import org.bukkit.block.Sign;
public class BoardCage {
public String name;
public Sign sign;
public Cage cage;
private String[] startMenu;
private String boldWhite = ChatColor.WHITE + "" + ChatColor.BOLD;
public BoardCage(Sign sign) {
this.sign = sign;
name = ChatColor.stripColor(sign.getLine(1));
cage = Cage.getExisting(name);
Cage.getExisting(name).boardCage = this;
}
public void setStartMenu(String[] startMenu){
this.startMenu = startMenu;
}
public String[] getStartMenu() {
return startMenu;
}
public void editLine(int i, String str) {
sign.setLine(i, str);
sign.update();
}
public void startMenu() {
for(int i = 0; i < startMenu.length; i++)
sign.setLine(i, startMenu[i]);
sign.update();
}
public void newOwner(String name) {
editLine(2, boldWhite + name);
editLine(3, boldWhite + "Дней: " + cage.getPaid());
}
public void downDaysLeft() {
int oldPaid = cage.getPaid();
cage.setPaid(oldPaid - 1);
editLine(3, boldWhite + "Дней: " + (oldPaid - 1));
}
public void upDaysLeft() {
int oldPaid = cage.getPaid();
cage.setPaid(oldPaid + 1);
editLine(3, boldWhite + "Дней: " + (oldPaid + 1));
}
}

View File

@@ -0,0 +1,415 @@
package ru.prisonlife.api.template;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import org.bukkit.*;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import ru.prisonlife.api.Configurations;
import ru.prisonlife.api.PrisonAPI;
import java.io.File;
import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.*;
public class Cage {
public String name;
public BoardCage boardCage;
private static Map<String, Cage> storage = new HashMap<>(); // HOT FIX EBUCHEY INFLYACII PAMYATI!
private FileConfiguration[] configurations = new FileConfiguration[2];
private File[] modules = new File[2];
private static final String[] FILES = {"main.yml", "upgrade.yml"};
private File dir;
private ProtectedRegion region;
private Cage(String name) {
this.name = name;
dir = new File(Configurations.CAGES.root().getPath(), name);
String[][] inside = {{"WORLD", "OWNER", "PAID", "RENT", "CURRENT_RENT", "SALE_PRICE", "MAXIMUM_TERM", "SPAWN_POINT.WORLD", "SPAWN_POINT.CORDS", "GUESTS"},
{"FRIENDS", "ENDER_CHEST", "HACK_CHEST", "HACK_DOOR", "NEW_PRICE"}};
if(!dir.exists()) {
dir.mkdir();
try {
for(int k = 0; k < 2; k++) {
modules[k] = new File(dir.getPath(), FILES[k]);
configurations[k] = YamlConfiguration.loadConfiguration(modules[k]);
for(int j = 0; j < inside[k].length; j++)
configurations[k].set(inside[k][j], k == 0 ? "-" : false);
configurations[k].save(modules[k]);
}
} catch(IOException z) {
z.printStackTrace();
}
}
}
public static void create(String name) {
storage.put(name, new Cage(name));
}
public static Cage getExisting(String name) {
return storage.get(name);
}
public static boolean exists(String name) {
return storage.containsKey(name);
}
public ProtectedRegion getRegion() {
return region;
}
public World getWorld() {
return Bukkit.getWorld(configurations[0].getString("WORLD"));
}
public String getOwner() {
return configurations[0].getString("OWNER");
}
public int getPaid() {
return configurations[0].getInt("PAID");
}
public int getRentPrice() {
return configurations[0].getInt("CURRENT_RENT");
}
public int getDefaultRentPrice() { return configurations[0].getInt("RENT"); }
public int getSalePrice() {
return configurations[0].getInt("SALE_PRICE");
}
public int getMaximumTerm() {
return configurations[0].getInt("MAXIMUM_TERM");
}
public String getWorldOfPoint() {
return configurations[0].getString("SPAWN_POINT.WORLD");
}
public List<Double> getCordsOfPoint() {
return configurations[0].getDoubleList("SPAWN_POINT.CORDS");
}
public List<String> getGuests() {
return configurations[0].getStringList("GUESTS");
}
public boolean hasUpgradeGuests() {
return configurations[1].getBoolean("FRIENDS");
}
public boolean hasUpgradeEnderChest() { return configurations[1].getBoolean("ENDER_CHEST"); }
public boolean hasUpgradeHackChest() {
return configurations[1].getBoolean("HACK_CHEST");
}
public boolean hasUpgradeHackDoor() {
return configurations[1].getBoolean("HACK_DOOR");
}
public boolean hasUpgradeNewPrice() {
return configurations[1].getBoolean("NEW_PRICE");
}
public void setRegion(ProtectedRegion region) {
this.region = region;
}
public void setWorld(String name) {
try {
configurations[0].set("WORLD", name);
configurations[0].save(modules[0]);
} catch(IOException e) {
e.printStackTrace();
}
}
public void setOwner(String uuid) {
try {
configurations[0].set("OWNER", uuid);
configurations[0].save(modules[0]);
try(PreparedStatement statement = PrisonAPI.CONN.prepareStatement("UPDATE player_stats SET HOME_CAGE = ? WHERE UUID = ?")) {
statement.setString(1, name);
statement.setString(2, uuid);
statement.executeUpdate();
}
} catch(IOException | SQLException e) {
e.printStackTrace();
}
}
public void setPaid(int value) {
try {
configurations[0].set("PAID", value);
configurations[0].save(modules[0]);
} catch(IOException e) {
e.printStackTrace();
}
}
public void setRentPrice(int price) {
try {
configurations[0].set("CURRENT_RENT", price);
configurations[0].save(modules[0]);
} catch (IOException e) {
e.printStackTrace();
}
}
public void setDefaultRentPrice(int price) {
try {
configurations[0].set("RENT", price);
configurations[0].save(modules[0]);
} catch (IOException e) {
e.printStackTrace();
}
}
public void setSalePrice(int price) {
try {
configurations[0].set("SALE_PRICE", price);
configurations[0].save(modules[0]);
} catch(IOException e) {
e.printStackTrace();
}
}
public void setMaximumTerm(int term) {
try {
configurations[0].set("MAXIMUM_TERM", term);
configurations[0].save(modules[0]);
} catch(IOException e) {
e.printStackTrace();
}
}
public void setWorldOfPoint(String world) {
try {
configurations[0].set("SPAWN_POINT.WORLD", world);
configurations[0].save(modules[0]);
} catch(IOException e) {
e.printStackTrace();
}
}
public void setCordsOfPoint(List<Double> point) {
try {
configurations[0].set("SPAWN_POINT.CORDS", point);
configurations[0].save(modules[0]);
} catch(IOException e) {
e.printStackTrace();
}
}
public void setGuests(List<String> guests) {
try {
configurations[0].set("GUESTS", guests == null ? "-" : guests);
configurations[0].save(modules[0]);
} catch(IOException e) {
e.printStackTrace();
}
}
public void addGuest(String guest) {
try {
List<String> guests = getGuests();
guests.add(guest);
configurations[0].set("GUESTS", guests);
configurations[0].save(modules[0]);
try(PreparedStatement statement = PrisonAPI.CONN.prepareStatement("UPDATE player_stats SET HOME_CAGE = ? WHERE UUID = ?")) {
statement.setString(1, name);
statement.setString(2, guest);
statement.executeUpdate();
}
} catch(IOException | SQLException e) {
e.printStackTrace();
}
}
public void delGuest(String guest) {
List<String> list = getGuests();
if(list.contains(guest)) {
region.getMembers().removePlayer(guest);
list.remove(guest);
try {
configurations[0].set("GUESTS", list);
configurations[0].save(modules[0]);
__clear__(Bukkit.getOfflinePlayer(UUID.fromString(guest)));
} catch(IOException e) {
e.printStackTrace();
}
}
}
public void setUpgradeGuests(boolean status) {
try {
configurations[1].set("FRIENDS", status);
configurations[1].save(modules[1]);
} catch(IOException e) {
e.printStackTrace();
}
}
public void setUpgradeEnderChest(boolean status) {
try {
configurations[1].set("ENDER_CHEST", status);
configurations[1].save(modules[1]);
} catch(IOException e) {
e.printStackTrace();
}
}
public void setUpgradeHackChest(boolean status) {
try {
configurations[1].set("HACK_CHEST", status);
configurations[1].save(modules[1]);
} catch(IOException e) {
e.printStackTrace();
}
}
public void setUpgradeHackDoor(boolean status) {
try {
configurations[1].set("HACK_DOOR", status);
configurations[1].save(modules[1]);
} catch(IOException e) {
e.printStackTrace();
}
}
public void setUpgradeNewPrice(boolean status) {
try {
configurations[1].set("NEW_PRICE", status);
configurations[1].save(modules[1]);
} catch(IOException e) {
e.printStackTrace();
}
}
public void rebootUpgrades() {
setUpgradeGuests(false);
setUpgradeEnderChest(false);
setUpgradeHackDoor(false);
setUpgradeHackChest(false);
setUpgradeNewPrice(false);
}
public void mainInfo(Player whom) {
String owner = getOwner();
List<OfflinePlayer> guests = transformGuestsToOfflinePlayers(getGuests());
String[] info = {
"Владелец: " + ChatColor.RED + (!owner.equals("-") ? Bukkit.getOfflinePlayer(UUID.fromString(owner)).getName() : "-"),
"Цена покупки на один день: " + ChatColor.YELLOW + "" + ChatColor.BOLD + getRentPrice(),
"Цена продажи: " + ChatColor.YELLOW + "" + ChatColor.BOLD + getSalePrice(),
"Максимальный срок аренды: " + ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + getMaximumTerm() + ChatColor.RESET + " дн.",
"Оплачено: " + ChatColor.GREEN + "" + ChatColor.BOLD + getPaid() + ChatColor.RESET + " дн.",
"Гости: " + getGuests()
};
for(String i : info) {
if(i.equals(info[5])) {
if(guests.size() == 0)
i = "Гости: -";
else {
StringBuilder iBuilder = new StringBuilder(i);
for(OfflinePlayer j : guests)
iBuilder.append(ChatColor.GOLD).append(j.getName()).append(" ");
i = iBuilder.toString();
}
}
whom.sendMessage(i + "\n");
}
}
public void gradeInfo(Player whom) {
String[] info = {
"<Друзья>: ", "<Эндер-сундук>: ", "<Взлом сундуков>: ",
"<Взлом двери>: ", "<Снижение цены на аренду>: "
};
boolean[] status = {
hasUpgradeGuests(), hasUpgradeEnderChest(), hasUpgradeHackChest(),
hasUpgradeHackDoor(), hasUpgradeNewPrice()
};
whom.sendMessage("Улучшения: \n");
for(int i = 0; i < info.length; i++)
whom.sendMessage(info[i] + (status[i] ? "+" : "-"));
}
public void teleport(Player player) {
List<Double> c = getCordsOfPoint();
player.teleport(new Location(Bukkit.getWorld(getWorldOfPoint()), c.get(0), c.get(1), c.get(2)));
}
public void sellCage(Player player, int price) {
try {
Prisoner trader = new Prisoner(Bukkit.getOfflinePlayer(UUID.fromString(getOwner())).getPlayer()), buyer = new Prisoner(player);
buyer.getWallet().deposit(price);
trader.getWallet().addBalance(price);
__rm_guests__();
__clear__(trader.getPlayer());
setOwner(player.getUniqueId().toString());
boardCage.newOwner(player.getName());
} catch (SQLException e) {
e.printStackTrace();
}
}
public void ownerLeaveCage() {
Player p = Bukkit.getOfflinePlayer(UUID.fromString(getOwner())).getPlayer();
Prisoner ps = new Prisoner(p);
try {
region.getOwners().removePlayer(p.getUniqueId());
ps.getWallet().addBalance(getSalePrice());
__rm_guests__();
__clear__(p);
setOwner("-");
setPaid(0);
rebootUpgrades();
boardCage.startMenu();
} catch (SQLException e) {
e.printStackTrace();
}
}
public List<OfflinePlayer> transformGuestsToOfflinePlayers(List<String> guests) {
List<OfflinePlayer> list = new ArrayList<>();
if(guests != null) {
for(String i : guests)
list.add(Bukkit.getOfflinePlayer(UUID.fromString(i)));
return list;
} else
return null;
}
private void __clear__(OfflinePlayer player) {
try {
try(PreparedStatement statement = PrisonAPI.CONN.prepareStatement("UPDATE player_stats SET HOME_CAGE = ? WHERE UUID = ?")) {
statement.setString(1, "-");
statement.setString(2, player.getUniqueId().toString());
statement.executeUpdate();
}
} catch(SQLException e) {
e.printStackTrace();
}
}
private void __rm_guests__() {
List<OfflinePlayer> guests = transformGuestsToOfflinePlayers(getGuests());
if(guests != null && guests.size() != 0) {
for(OfflinePlayer g : guests) {
region.getMembers().removePlayer(g.getUniqueId());
__clear__(g.getPlayer());
}
setGuests(null);
}
}
}

View File

@@ -18,46 +18,43 @@ public class Faction {
} }
public String getType() throws SQLException { public String getType() throws SQLException {
try (PreparedStatement statement = PrisonAPI.CONN.prepareStatement("SELECT FACTION FROM player_stats WHERE UUID = ?")) { try(PreparedStatement statement = PrisonAPI.CONN.prepareStatement("SELECT FACTION FROM player_stats WHERE UUID = ?")) {
statement.setString(1, me.getPlayer().getUniqueId().toString()); statement.setString(1, me.getPlayer().getUniqueId().toString());
try (ResultSet resultSet = statement.executeQuery()) { try(ResultSet resultSet = statement.executeQuery()) {
if (resultSet.next()) { if(resultSet.next())
return resultSet.getString(1); return resultSet.getString(1);
} else { else
return "null"; return "null";
} }
} }
} }
}
public int getId() throws SQLException { public int getId() throws SQLException {
try (PreparedStatement statement = PrisonAPI.CONN.prepareStatement("SELECT FACTION FROM player_stats WHERE UUID = ?")) { try(PreparedStatement statement = PrisonAPI.CONN.prepareStatement("SELECT FACTION FROM player_stats WHERE UUID = ?")) {
statement.setString(1, me.getPlayer().getUniqueId().toString()); statement.setString(1, me.getPlayer().getUniqueId().toString());
try (ResultSet resultSet = statement.executeQuery()) { try(ResultSet resultSet = statement.executeQuery()) {
if (resultSet.next()) { if(resultSet.next())
return PrisonAPI.Factions.valueOf(resultSet.getString(1)).getId(); return PrisonAPI.Factions.valueOf(resultSet.getString(1)).getId();
} }
} }
}
return 0; return 0;
} }
public int getRangId() throws SQLException { public int getRangId() throws SQLException {
try (PreparedStatement statement = PrisonAPI.CONN.prepareStatement("SELECT F_RANG FROM player_stats WHERE UUID = ?")) { try(PreparedStatement statement = PrisonAPI.CONN.prepareStatement("SELECT F_RANG FROM player_stats WHERE UUID = ?")) {
statement.setString(1, me.getPlayer().getUniqueId().toString()); statement.setString(1, me.getPlayer().getUniqueId().toString());
try (ResultSet resultSet = statement.executeQuery()) { try(ResultSet resultSet = statement.executeQuery()) {
if (resultSet.next()) { if(resultSet.next())
return resultSet.getInt(1); return resultSet.getInt(1);
} else { else
return 0; return 0;
} }
} }
} }
}
public String getRangType() throws SQLException { public String getRangType() throws SQLException {
String[][] post = { String[][] post = {
@@ -91,25 +88,23 @@ public class Faction {
} }
public int getRespect() throws SQLException { public int getRespect() throws SQLException {
try (PreparedStatement statement = PrisonAPI.CONN.prepareStatement("SELECT RESPECT FROM prison4life.player_stats WHERE UUID = ?")) { try(PreparedStatement statement = PrisonAPI.CONN.prepareStatement("SELECT RESPECT FROM prison4life.player_stats WHERE UUID = ?")) {
statement.setString(1, me.getPlayer().getUniqueId().toString()); statement.setString(1, me.getPlayer().getUniqueId().toString());
try(ResultSet resultSet = statement.executeQuery()) {
try (ResultSet resultSet = statement.executeQuery()) { if(resultSet.next())
if (resultSet.next()) {
return resultSet.getInt(1); return resultSet.getInt(1);
} else { else
return 0; return 0;
} }
} }
} }
}
public void addRespect(int value) throws SQLException { public void addRespect(int value) throws SQLException {
setRespect(getRespect() + value); setRespect(getRespect() + value);
} }
public void setRespect(int value) throws SQLException { public void setRespect(int value) throws SQLException {
try (PreparedStatement statement = PrisonAPI.CONN.prepareStatement("UPDATE player_stats SET RESPECT = ? WHERE UUID = ?")) { try(PreparedStatement statement = PrisonAPI.CONN.prepareStatement("UPDATE player_stats SET RESPECT = ? WHERE UUID = ?")) {
statement.setInt(1, value); statement.setInt(1, value);
statement.setString(2, me.getPlayer().getUniqueId().toString()); statement.setString(2, me.getPlayer().getUniqueId().toString());
@@ -118,18 +113,17 @@ public class Faction {
} }
public int getRespectDailyCooldown() throws SQLException { public int getRespectDailyCooldown() throws SQLException {
try (PreparedStatement statement = PrisonAPI.CONN.prepareStatement("SELECT COOLDOWN FROM daily_respect_task WHERE UUID = ?")) { try(PreparedStatement statement = PrisonAPI.CONN.prepareStatement("SELECT COOLDOWN FROM daily_respect_task WHERE UUID = ?")) {
statement.setString(1, me.getPlayer().getUniqueId().toString()); statement.setString(1, me.getPlayer().getUniqueId().toString());
try (ResultSet resultSet = statement.executeQuery()) { try(ResultSet resultSet = statement.executeQuery()) {
if (resultSet.next()) { if(resultSet.next())
return resultSet.getInt(1); return resultSet.getInt(1);
} else { else
return 0; return 0;
} }
} }
} }
}
public void addRespectDailyCooldown(int value) throws SQLException { public void addRespectDailyCooldown(int value) throws SQLException {
setRespectDailyCooldown(getRespectDailyCooldown() + value); setRespectDailyCooldown(getRespectDailyCooldown() + value);

View File

@@ -18,7 +18,7 @@ public class Manager {
private FileConfiguration fileConfiguration; private FileConfiguration fileConfiguration;
public Manager(String id) { public Manager(String id) {
file = new File(PrisonAPI.PLUGIN_PATH + "/", "PRISON_" + id + ".yml"); file = new File(PrisonAPI.PLUGIN_MANAGER_PATH + "/", "PRISON_" + id + ".yml");
fileConfiguration = YamlConfiguration.loadConfiguration(file); fileConfiguration = YamlConfiguration.loadConfiguration(file);
} }
@@ -26,6 +26,10 @@ public class Manager {
return file.exists(); return file.exists();
} }
public String getName() {
return file.getName().replace("PRISON_", "").replace(".yml", "");
}
public String getWorld() { public String getWorld() {
return fileConfiguration.getString("WORLD"); return fileConfiguration.getString("WORLD");
} }
@@ -55,7 +59,7 @@ public class Manager {
} }
public List<Integer> getSpawnCords(int faction) { public List<Integer> getSpawnCords(int faction) {
return fileConfiguration.getIntegerList("FACTIONS." + selectFactType(faction) + ".CORDS"); return fileConfiguration.getIntegerList("FACTIONS." + PrisonAPI.Factions.valueOf(faction) + ".CORDS");
} }
public void setSpawnCords(int faction, List<Integer> data) { public void setSpawnCords(int faction, List<Integer> data) {
@@ -139,26 +143,39 @@ public class Manager {
} }
public List<String> getAllTerrs() { public List<String> getAllTerrs() {
try {
List<String> terrs = new ArrayList<>(); List<String> terrs = new ArrayList<>();
for(String t : fileConfiguration.getConfigurationSection("TERRITORIES").getKeys(false)) for (String t : fileConfiguration.getConfigurationSection("TERRITORIES").getKeys(false))
terrs.add(t); terrs.add(t);
return terrs; return terrs;
} catch(NullPointerException z) {
return null;
}
} }
public List<String> getCages() { public List<String> getCages() {
try {
List<String> cages = new ArrayList<>(); List<String> cages = new ArrayList<>();
for(String c : fileConfiguration.getConfigurationSection("CAGES").getKeys(false)) for (String c : fileConfiguration.getConfigurationSection("CAGES").getKeys(false))
cages.add(c); cages.add(c);
return cages; return cages;
} catch(NullPointerException z) {
return null;
}
} }
public List<Integer> getPointCage(String cage) { public List<Integer> getPointCage(String cage) {
return new ArrayList<>(fileConfiguration.getIntegerList("CAGES." + cage)); return new ArrayList<>(fileConfiguration.getIntegerList("CAGES." + cage));
} }
public Location getLocationCage(String cage) {
List<Integer> point = getPointCage(cage);
return new Location(Bukkit.getWorld(getWorld()), point.get(0) + 0.5, point.get(1), point.get(2) + 0.5);
}
public void teleportInToCage(Prisoner prs, String cage) { public void teleportInToCage(Prisoner prs, String cage) {
List<Integer> data =fileConfiguration.getIntegerList("CAGES." + cage); List<Integer> data = fileConfiguration.getIntegerList("CAGES." + cage);
Location loc = new Location(Bukkit.getWorld(fileConfiguration.getString("WORLD")), Location loc = new Location(Bukkit.getWorld(getWorld()),
data.get(0) + 0.5, data.get(1), data.get(2) + 0.5); data.get(0) + 0.5, data.get(1), data.get(2) + 0.5);
prs.getPlayer().teleport(loc); prs.getPlayer().teleport(loc);
} }

View File

@@ -2,100 +2,103 @@ package ru.prisonlife.api.template;
import net.md_5.bungee.api.ChatMessageType; import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
import ru.prisonlife.api.Configurations;
import ru.prisonlife.api.PrisonAPI; import ru.prisonlife.api.PrisonAPI;
import ru.prisonlife.api.storage.RegistrationPrisonerForCage;
import java.io.File;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Random; import java.util.Random;
public class Policeman extends Prisoner { public class Policeman extends Prisoner implements Listener {
private Map<Prisoner, BukkitRunnable> timeInCage = new HashMap<>(); private static Map<String, BukkitRunnable> TIME_IN_CAGE = new HashMap<>(), ACTION_BAR = new HashMap<>();
private static final Plugin API = Bukkit.getPluginManager().getPlugin("PrisonAPI");
public Policeman(Player player) { public Policeman(Player player) {
super(player); super(player);
} }
public void arrestPrisoner(Prisoner prs) throws SQLException { public boolean arrestPrisoner(Prisoner prs) throws SQLException {
if(prs.getPlayer().isOnline()) { Player p = prs.getPlayer();
Manager mng = new Manager(super.getPrison()); if(p.isOnline()) {
String prison = super.getPrison(), uuid = p.getUniqueId().toString();
Manager mng = new Manager(prison);
List<String> all_cages = mng.getCages(); List<String> all_cages = mng.getCages();
PreparedStatement st = PrisonAPI.CONN.prepareStatement("SELECT UUID FROM player_stats WHERE UUID = ?"); if(all_cages != null) {
st.setString(1, me.getUniqueId().toString());
try(ResultSet resultSet = st.executeQuery()) {
if(!resultSet.next()) {
int su = prs.getSuspect(); int su = prs.getSuspect();
st.close(); String cage = all_cages.get(new Random().nextInt(all_cages.size()));
st = PrisonAPI.CONN.prepareStatement( PrisonAPI.ARRESTED.put(uuid, new RegistrationPrisonerForCage(prison, cage, su * 6, su * 100));
"INSERT INTO players_in_cages(NAME, UUID, TIME_IN_CAGE, BLOCKS_LEFT) " +
"VALUES (?, ?, ?, ?)");
st.setString(1, getPlayer().getName());
st.setString(2, me.getUniqueId().toString());
st.setInt(3, (su * 6));
st.setInt(4, (su * 100));
st.executeUpdate();
}
}
st.close();
prs.setSuspect(0); prs.setSuspect(0);
mng.teleportInToCage(prs, all_cages.get(new Random().nextInt(all_cages.size()))); mng.teleportInToCage(prs, cage);
FileConfiguration configurationSuspect = YamlConfiguration.loadConfiguration(new File("plugins/PrisonSuspect/", "parameters.yml")); __put__(prs);
String actionMessage = ChatColor.translateAlternateColorCodes('&', __start__(uuid);
configurationSuspect.getString("MESSAGES.ACTION_BAR_PROGRESS")); return true;
BukkitRunnable actionBar = new BukkitRunnable() {//"MESSAGES.WHEN_PRISONER_CAN_EXIT_FROM_CAGE" } else
me.sendMessage(ChatColor.RED + "Произошла аварийная ошибка.\nСообщите администраторам об отсутствии карцеров на сервере!");
}
return false;
}
public static void freeFromArrest(Prisoner prs) {
Player p = prs.getPlayer();
String uuid = p.getUniqueId().toString();
p.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&',
Configurations.SUSPECT.execute().getString("MESSAGES.WHEN_PRISONER_CAN_EXIT_FROM_CAGE")));
PrisonAPI.ARRESTED.get(uuid).toFinish();
ACTION_BAR.get(uuid).cancel();
TIME_IN_CAGE.get(uuid).cancel();
ACTION_BAR.remove(uuid);
TIME_IN_CAGE.remove(uuid);
}
@EventHandler
private void startThreadsForJoinedPlayer(PlayerJoinEvent e) {
Player p = e.getPlayer();
String uuid = p.getUniqueId().toString();
if(PrisonAPI.ARRESTED.containsKey(uuid)) {
__put__(new Prisoner(p));
__start__(uuid);
}
}
private void __start__(String uuid) {
ACTION_BAR.get(uuid).runTaskTimer(API, 5, 5);
TIME_IN_CAGE.get(uuid).runTaskTimer(API, 20 * 60, 20 * 60);
}
private void __put__(Prisoner prs) {
Player p = prs.getPlayer();
String uuid = p.getUniqueId().toString();
ACTION_BAR.put(uuid, new BukkitRunnable() {
@Override @Override
public void run() { public void run() {
prs.getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(actionMessage)); if(p.isOnline())
} p.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(
}; ChatColor.translateAlternateColorCodes('&', Configurations.SUSPECT.execute().getString(
timeInCage.put(prs, new BukkitRunnable() { "MESSAGES.ACTION_BAR_PROGRESS").replace("%time%", String.valueOf(
@Override prs.getTimeLeftInCage())).replace("%blocks%", String.valueOf(
public void run() { // Future = Пометить, что когда in Cage и вышел, то удалить поток, а если зашёл и in Cage - запустить ~ Optimize prs.getBlocksLeftToBreak()))))); // prs.getTimeLeftInCage() и prs.getBlocksLeftToBreak() <- статистика оставшегося (реал тайм)
try {
int time = 0;
String uuid = prs.getPlayer().getUniqueId().toString();
PreparedStatement st = PrisonAPI.CONN.prepareStatement(
"SELECT TIME_IN_CAGE FROM players_in_cages WHERE UUID = ?");
st.setString(1, uuid);
try(ResultSet resultSet = st.executeQuery()) {
if(resultSet.next())
time = resultSet.getInt(1);
}
if(time == 0) {
prs.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&',
configurationSuspect.getString("MESSAGES.WHEN_PRISONER_CAN_EXIT_FROM_CAGE")));
actionBar.cancel();
cancel();
timeInCage.remove(prs);
st = PrisonAPI.CONN.prepareStatement("DELETE FROM players_in_cages WHERE UUID = ?");
st.setString(1, uuid);
st.execute();
} else {
if(prs.getPlayer().isOnline()) {
st = PrisonAPI.CONN.prepareStatement("UPDATE players_in_cages SET TIME_IN_CAGE = " + (time - 1) + " WHERE UUID = ?");
st.setString(1, uuid);
st.execute();
}
}
st.close();
} catch(SQLException e) {
e.printStackTrace();
}
} }
}); });
int m = 20 * 60; TIME_IN_CAGE.put(uuid, new BukkitRunnable() {
actionBar.runTaskTimer(PrisonAPI.plugin, 5, 5); @Override
timeInCage.get(prs).runTaskTimer(PrisonAPI.plugin, m, m); public void run() {
if(p.isOnline())
if(PrisonAPI.ARRESTED.get(uuid).time < 2) freeFromArrest(prs);
else --PrisonAPI.ARRESTED.get(uuid).time;
} }
});
} }
} }

View File

@@ -14,6 +14,7 @@ import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.UUID;
public class Prisoner { public class Prisoner {
@@ -41,7 +42,7 @@ public class Prisoner {
public String getPrison() { public String getPrison() {
Location loc = me.getLocation(); Location loc = me.getLocation();
for (File file : Objects.requireNonNull(new File(PrisonAPI.PLUGIN_PATH).listFiles())) { for(File file : Objects.requireNonNull(new File(PrisonAPI.PLUGIN_MANAGER_PATH).listFiles())) {
FileConfiguration fileConfiguration = YamlConfiguration.loadConfiguration(file); FileConfiguration fileConfiguration = YamlConfiguration.loadConfiguration(file);
List<List<Integer>> data = new ArrayList<>(); List<List<Integer>> data = new ArrayList<>();
List<Integer> fromConfig = fileConfiguration.getIntegerList("DIAGONAL_POINTS"), List<Integer> fromConfig = fileConfiguration.getIntegerList("DIAGONAL_POINTS"),
@@ -49,19 +50,19 @@ public class Prisoner {
int[] loc_n = {loc.getBlockX(), loc.getBlockY() - 1, loc.getBlockZ()}; int[] loc_n = {loc.getBlockX(), loc.getBlockY() - 1, loc.getBlockZ()};
data.add(fromConfig.subList(0, 3)); data.add(fromConfig.subList(0, 3));
data.add(fromConfig.subList(3, 6)); data.add(fromConfig.subList(3, 6));
for (int i = 0; i < 3; i++) { for(int i = 0; i < 3; i++) {
min.add(Math.min(data.get(0).get(i), data.get(1).get(i))); min.add(Math.min(data.get(0).get(i), data.get(1).get(i)));
max.add(Math.max(data.get(0).get(i), data.get(1).get(i))); max.add(Math.max(data.get(0).get(i), data.get(1).get(i)));
} }
int c = 0; int c = 0;
for (int k : loc_n) { for(int k : loc_n) {
for (int n = 0; n < 3; n++) { for (int n = 0; n < 3; n++) {
if (k >= min.get(n) && k <= max.get(n)) { if (k >= min.get(n) && k <= max.get(n)) {
++c; ++c;
} }
} }
} }
if (c == 3) { if(c == 3) {
return file.getName().replace("PRISON_", "").replace(".yml", ""); return file.getName().replace("PRISON_", "").replace(".yml", "");
} }
} }
@@ -72,7 +73,7 @@ public class Prisoner {
String prison = getPrison(); String prison = getPrison();
if(!prison.equals("Not Prison")) { if(!prison.equals("Not Prison")) {
Location loc = me.getLocation(); Location loc = me.getLocation();
FileConfiguration fileConfiguration = YamlConfiguration.loadConfiguration(new File(PrisonAPI.PLUGIN_PATH, "PRISON_" + prison + ".yml")); FileConfiguration fileConfiguration = YamlConfiguration.loadConfiguration(new File(PrisonAPI.PLUGIN_MANAGER_PATH, "PRISON_" + prison + ".yml"));
try { try {
if(fileConfiguration.getConfigurationSection("TERRITORIES").getKeys(false).size() != 0) { if(fileConfiguration.getConfigurationSection("TERRITORIES").getKeys(false).size() != 0) {
for(String terr : fileConfiguration.getConfigurationSection("TERRITORIES").getKeys(false)) { for(String terr : fileConfiguration.getConfigurationSection("TERRITORIES").getKeys(false)) {
@@ -107,8 +108,8 @@ public class Prisoner {
public void teleportToFactionSpawn() { public void teleportToFactionSpawn() {
try { try {
Prisoner ps = new Prisoner(me); Prisoner ps = new Prisoner(me);
Manager mng = new Manager(getPrison()); String prison = getPrison(), f = ps.getFaction().getType();
String f = ps.getFaction().getType(); Manager mng = prison.equals("Not Prison") ? PrisonAPI.getRandomPrison() : new Manager(prison);
List<Integer> c = mng.getSpawnCords(ps.getFaction().getId()); List<Integer> c = mng.getSpawnCords(ps.getFaction().getId());
if(!f.equals("NONE") && c.size() != 0) if(!f.equals("NONE") && c.size() != 0)
me.teleport(new Location(Bukkit.getWorld(mng.getWorld()), c.get(0) + 0.5, c.get(1), c.get(2) + 0.5)); me.teleport(new Location(Bukkit.getWorld(mng.getWorld()), c.get(0) + 0.5, c.get(1), c.get(2) + 0.5));
@@ -138,7 +139,6 @@ public class Prisoner {
try(PreparedStatement statement = PrisonAPI.CONN.prepareStatement("UPDATE player_stats SET SUSPECT = ? WHERE UUID = ?")) { try(PreparedStatement statement = PrisonAPI.CONN.prepareStatement("UPDATE player_stats SET SUSPECT = ? WHERE UUID = ?")) {
statement.setInt(1, value); statement.setInt(1, value);
statement.setString(2, me.getPlayer().getUniqueId().toString()); statement.setString(2, me.getPlayer().getUniqueId().toString());
statement.executeUpdate(); statement.executeUpdate();
} }
} catch(SQLException z) { } catch(SQLException z) {
@@ -148,67 +148,85 @@ public class Prisoner {
public void addSuspect(int value) { public void addSuspect(int value) {
int su = getSuspect() + value; int su = getSuspect() + value;
setSuspect(su);
if(su > 6) if(su > 6)
setSuspect(su - (su - 6)); setSuspect(su - (su - 6));
else
setSuspect(su);
} }
public int getTimeLeftInCage() { public void delSuspect(int value) {
try { int su = getSuspect() - value;
PreparedStatement statement = PrisonAPI.CONN.prepareStatement("SELECT TIME_IN_CAGE FROM players_in_cages WHERE UUID = ?"); if(su < 0)
statement.setString(1, me.getUniqueId().toString()); setSuspect(0);
try(ResultSet resultSet = statement.executeQuery()) { else
if(resultSet.next()) setSuspect(su);
return resultSet.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
} }
public void setTimeLeftInCage(int value) { public Cage getCage() {
try { try {
PreparedStatement statement = PrisonAPI.CONN.prepareStatement("SELECT TIME_IN_CAGE FROM players_in_cages WHERE UUID = ?"); try(PreparedStatement statement = PrisonAPI.CONN.prepareStatement("SELECT HOME_CAGE FROM player_stats WHERE UUID = ?")) {
statement.setString(1, me.getUniqueId().toString()); statement.setString(1, me.getPlayer().getUniqueId().toString());
try(ResultSet resultSet = statement.executeQuery()) { try(ResultSet resultSet = statement.executeQuery()) {
if(resultSet.next()) { if(resultSet.next()) {
statement = PrisonAPI.CONN.prepareStatement("UPDATE players_in_cages SET TIME_IN_CAGE = ? WHERE UUID = ?"); String name = resultSet.getString(1);
statement.setInt(1, value); if(!name.equals("-")) {
statement.setString(2, me.getUniqueId().toString()); return Cage.getExisting(name);
statement.execute();
} }
} }
}
}
} catch(SQLException z) {
z.printStackTrace();
}
return null;
}
public void setCage(String name) {
try {
try(PreparedStatement statement = PrisonAPI.CONN.prepareStatement("UPDATE player_stats SET HOME_CAGE = ? WHERE UUID = ?")) {
statement.setString(1, name);
statement.setString(2, me.getPlayer().getUniqueId().toString());
statement.execute();
}
} catch(SQLException z) { } catch(SQLException z) {
z.printStackTrace(); z.printStackTrace();
} }
} }
public int getBlocksLeftToBreak() { public void leaveTheCage() {
try { Cage cage = getCage();
PreparedStatement statement = PrisonAPI.CONN.prepareStatement("SELECT BLOCKS_LEFT FROM players_in_cages WHERE UUID = ?"); if(cage != null)
statement.setString(1, me.getUniqueId().toString()); if(Bukkit.getOfflinePlayer(UUID.fromString(cage.getOwner())).getPlayer().equals(me))
try(ResultSet resultSet = statement.executeQuery()) { cage.ownerLeaveCage();
if(resultSet.next()) else
return resultSet.getInt(1); cage.delGuest(me.getUniqueId().toString());
}
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
} }
public boolean isLocateInCage() {
try { public int getTimeLeftInCage() {
PreparedStatement statement = PrisonAPI.CONN.prepareStatement("SELECT UUID FROM players_in_cages WHERE UUID = ?"); return PrisonAPI.ARRESTED.get(me.getUniqueId().toString()).time;
statement.setString(1, me.getUniqueId().toString());
try(ResultSet resultSet = statement.executeQuery()) {
if(resultSet.next())
return true;
} }
} catch (SQLException e) {
e.printStackTrace(); public void setTimeLeftInCage(int value) {
PrisonAPI.ARRESTED.get(me.getUniqueId().toString()).time = value;
} }
public int getBlocksLeftToBreak() {
return PrisonAPI.ARRESTED.get(me.getUniqueId().toString()).blocks;
}
public void setBlocksLeftToBreak(int value) {
PrisonAPI.ARRESTED.get(me.getUniqueId().toString()).blocks = value;
}
public boolean isArrested() {
return PrisonAPI.ARRESTED.containsKey(me.getUniqueId().toString());
}
public boolean isMemberTrade() {
return false; return false;
} }
@@ -233,9 +251,9 @@ public class Prisoner {
statement.close(); statement.close();
statement = PrisonAPI.CONN.prepareStatement( statement = PrisonAPI.CONN.prepareStatement(
"INSERT INTO player_stats(NAME, UUID, LEVEL, POINTS, FACTION, RESPECT, F_RANG, SUSPECT, WALLET, " + "INSERT INTO player_stats(NAME, UUID, LEVEL, POINTS, HOME_CAGE, FACTION, RESPECT, F_RANG, SUSPECT, WALLET, " +
"G_TIME, D_BLOCKS, K_PLAYERS, K_MOBS, DEATHS) " "G_TIME, D_BLOCKS, K_PLAYERS, K_MOBS, DEATHS) "
+ "VALUES (?, ?, 1, 0, 'NONE', 0, 0, 0, 0, 0, 0, 0, 0, 0)"); + "VALUES (?, ?, 1, 0, '-', 'NONE', 0, 0, 0, 0, 0, 0, 0, 0, 0)");
statement.setString(1, getPlayer().getName()); statement.setString(1, getPlayer().getName());
statement.setString(2, me.getUniqueId().toString()); statement.setString(2, me.getUniqueId().toString());
statement.executeUpdate(); statement.executeUpdate();
@@ -256,4 +274,14 @@ public class Prisoner {
} }
statement.close(); statement.close();
} }
@Override
public boolean equals(Object obj) {
if(obj == null) return false;
else if(obj instanceof Prisoner) {
Prisoner that = (Prisoner) obj;
return this.me.equals(that.me);
}
return false;
}
} }

View File

@@ -15,11 +15,11 @@ public class Score {
} }
public double getPoints() throws SQLException { public double getPoints() throws SQLException {
try (PreparedStatement statement = PrisonAPI.CONN.prepareStatement("SELECT POINTS FROM player_stats WHERE UUID = ?")) { try(PreparedStatement statement = PrisonAPI.CONN.prepareStatement("SELECT POINTS FROM player_stats WHERE UUID = ?")) {
statement.setString(1, me.getPlayer().getUniqueId().toString()); statement.setString(1, me.getPlayer().getUniqueId().toString());
try (ResultSet resultSet = statement.executeQuery()) { try (ResultSet resultSet = statement.executeQuery()) {
if (resultSet.next()) { if(resultSet.next()) {
return resultSet.getDouble(1); return resultSet.getDouble(1);
} else { } else {
return 0d; //TODO нужно или default значение, или exception return 0d; //TODO нужно или default значение, или exception
@@ -29,7 +29,7 @@ public class Score {
} }
public void setPoints(double value) throws SQLException { public void setPoints(double value) throws SQLException {
try (PreparedStatement statement = PrisonAPI.CONN.prepareStatement("UPDATE player_stats SET POINTS = ? WHERE UUID = ?")) { try(PreparedStatement statement = PrisonAPI.CONN.prepareStatement("UPDATE player_stats SET POINTS = ? WHERE UUID = ?")) {
statement.setDouble(1, value); statement.setDouble(1, value);
statement.setString(2, me.getPlayer().getUniqueId().toString()); statement.setString(2, me.getPlayer().getUniqueId().toString());

View File

@@ -1,3 +0,0 @@
Manifest-Version: 1.0
Main-Class: ru.prisonlife.api.PrisonAPI

View File

@@ -1,4 +0,0 @@
name: PrisonAPI
version: ${project.version}
authors: [Overlord_S, Prot_CN, Wani4ka, DmitriyMX]
main: ru.prisonlife.api.PrisonAPI