Shit happens
This commit is contained in:
parent
ff5d043d31
commit
d1e24488e9
|
@ -0,0 +1,8 @@
|
||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module version="4">
|
||||||
|
<component name="FacetManager">
|
||||||
|
<facet type="minecraft" name="Minecraft">
|
||||||
|
<configuration>
|
||||||
|
<autoDetectTypes>
|
||||||
|
<platformType>SPIGOT</platformType>
|
||||||
|
</autoDetectTypes>
|
||||||
|
</configuration>
|
||||||
|
</facet>
|
||||||
|
</component>
|
||||||
|
</module>
|
|
@ -0,0 +1,6 @@
|
||||||
|
<component name="ArtifactManager">
|
||||||
|
<artifact type="jar" build-on-make="true" name="LandCore">
|
||||||
|
<output-path>$PROJECT_DIR$/out/artifacts/LandCore</output-path>
|
||||||
|
<root id="archive" name="LandCore.jar" />
|
||||||
|
</artifact>
|
||||||
|
</component>
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CompilerConfiguration">
|
||||||
|
<annotationProcessing>
|
||||||
|
<profile name="Maven default annotation processors profile" enabled="true">
|
||||||
|
<sourceOutputDir name="target/generated-sources/annotations" />
|
||||||
|
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
|
||||||
|
<outputRelativeToContentRoot value="true" />
|
||||||
|
<module name="LandCore" />
|
||||||
|
</profile>
|
||||||
|
</annotationProcessing>
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DiscordProjectSettings">
|
||||||
|
<option name="show" value="PROJECT_FILES" />
|
||||||
|
<option name="description" value="" />
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Encoding">
|
||||||
|
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
|
||||||
|
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,19 @@
|
||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<profile version="1.0">
|
||||||
|
<option name="myName" value="Project Default" />
|
||||||
|
<inspection_tool class="AutoCloseableResource" enabled="true" level="WARNING" enabled_by_default="true">
|
||||||
|
<option name="METHOD_MATCHER_CONFIG" value="java.util.Formatter,format,java.io.Writer,append,com.google.common.base.Preconditions,checkNotNull,org.hibernate.Session,close,java.io.PrintWriter,printf,java.io.PrintStream,printf,com.mongodb.client.MongoClients,create" />
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="ConstantConditions" enabled="true" level="WARNING" enabled_by_default="true">
|
||||||
|
<option name="SUGGEST_NULLABLE_ANNOTATIONS" value="false" />
|
||||||
|
<option name="DONT_REPORT_TRUE_ASSERT_STATEMENTS" value="false" />
|
||||||
|
<option name="REPORT_CONSTANT_REFERENCE_VALUES" value="false" />
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="DuplicatedCode" enabled="true" level="WEAK WARNING" enabled_by_default="true">
|
||||||
|
<Languages>
|
||||||
|
<language minSize="107" name="Java" />
|
||||||
|
</Languages>
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="UNCHECKED_WARNING" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
|
</profile>
|
||||||
|
</component>
|
|
@ -0,0 +1,30 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="RemoteRepositoriesConfiguration">
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="central" />
|
||||||
|
<option name="name" value="Central Repository" />
|
||||||
|
<option name="url" value="https://repo.maven.apache.org/maven2" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="destroystokyo-releases" />
|
||||||
|
<option name="name" value="destroystokyo-releases" />
|
||||||
|
<option name="url" value="https://repo.destroystokyo.com/repository/maven-releases/" />
|
||||||
|
</remote-repository>
|
||||||
|
<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="destroystokyo-snapshots" />
|
||||||
|
<option name="name" value="destroystokyo-snapshots" />
|
||||||
|
<option name="url" value="https://repo.destroystokyo.com/repository/maven-snapshots/" />
|
||||||
|
</remote-repository>
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="JpaBuddyIdeaProjectConfig">
|
||||||
|
<option name="renamerInitialized" value="true" />
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?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="MavenProjectsManager">
|
||||||
|
<option name="originalFiles">
|
||||||
|
<list>
|
||||||
|
<option value="$PROJECT_DIR$/pom.xml" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||||
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectType">
|
||||||
|
<option name="id" value="jpab" />
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,124 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Palette2">
|
||||||
|
<group name="Swing">
|
||||||
|
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
||||||
|
</item>
|
||||||
|
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
||||||
|
<initial-values>
|
||||||
|
<property name="text" value="Button" />
|
||||||
|
</initial-values>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||||
|
<initial-values>
|
||||||
|
<property name="text" value="RadioButton" />
|
||||||
|
</initial-values>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||||
|
<initial-values>
|
||||||
|
<property name="text" value="CheckBox" />
|
||||||
|
</initial-values>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
||||||
|
<initial-values>
|
||||||
|
<property name="text" value="Label" />
|
||||||
|
</initial-values>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||||
|
<preferred-size width="150" height="-1" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||||
|
<preferred-size width="150" height="-1" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||||
|
<preferred-size width="150" height="-1" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||||
|
<preferred-size width="150" height="50" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||||
|
<preferred-size width="150" height="50" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||||
|
<preferred-size width="150" height="50" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||||
|
<preferred-size width="150" height="50" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
||||||
|
<preferred-size width="150" height="50" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||||
|
<preferred-size width="150" height="50" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||||
|
<preferred-size width="200" height="200" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||||
|
<preferred-size width="200" height="200" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
||||||
|
<preferred-size width="-1" height="20" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
||||||
|
</item>
|
||||||
|
</group>
|
||||||
|
</component>
|
||||||
|
</project>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,156 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>me.devkevin.landcore</groupId>
|
||||||
|
<artifactId>LandCore</artifactId>
|
||||||
|
<version>1.3-SNAPSHOT</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<java.version>1.8</java.version>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>destroystokyo-releases</id>
|
||||||
|
<url>https://repo.destroystokyo.com/repository/maven-releases/</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>destroystokyo-snapshots</id>
|
||||||
|
<url>https://repo.destroystokyo.com/repository/maven-snapshots/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<!-- Spigot 1.8.8 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>club.inverted</groupId>
|
||||||
|
<artifactId>inverted-spigot</artifactId>
|
||||||
|
<version>1.8.8-R0.1-SNAPSHOT</version>
|
||||||
|
<scope>system</scope>
|
||||||
|
<systemPath>${project.basedir}/lib/Carbon-Server-1.8.8-R0.1-SNAPSHOT.jar</systemPath>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- MongoDB Java Driver -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.mongodb</groupId>
|
||||||
|
<artifactId>mongo-java-driver</artifactId>
|
||||||
|
<version>3.12.11</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.httpcomponents</groupId>
|
||||||
|
<artifactId>httpclient</artifactId>
|
||||||
|
<version>4.5.3</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- NickAPI -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>xyz.haoshoku.nick</groupId>
|
||||||
|
<artifactId>nickapi</artifactId>
|
||||||
|
<version>5.0.2-SNAPSHOT</version>
|
||||||
|
<scope>system</scope>
|
||||||
|
<systemPath>${project.basedir}/lib/NickAPI-v6.5.jar</systemPath>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Lombok -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<version>1.18.24</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>redis.clients</groupId>
|
||||||
|
<artifactId>jedis</artifactId>
|
||||||
|
<version>2.9.0</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.code.gson</groupId>
|
||||||
|
<artifactId>gson</artifactId>
|
||||||
|
<version>2.8.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-lang3</artifactId>
|
||||||
|
<version>3.3.2</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.googlecode.json-simple</groupId>
|
||||||
|
<artifactId>json-simple</artifactId>
|
||||||
|
<version>1.1.1</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- ViaVersion-3.2.1 API -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>ViaVersion-3.2.1</groupId>
|
||||||
|
<artifactId>ViaVersion-3.2.1</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<scope>system</scope>
|
||||||
|
<systemPath>${project.basedir}/lib/ViaVersion-3.2.1.jar</systemPath>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- ProtocolLib -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.comphenix.protocol</groupId>
|
||||||
|
<artifactId>ProtocolLib</artifactId>
|
||||||
|
<version>yes</version>
|
||||||
|
<scope>system</scope>
|
||||||
|
<systemPath>${project.basedir}/lib/ProtocolLib.jar</systemPath>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<configuration>
|
||||||
|
<source>${java.version}</source>
|
||||||
|
<target>${java.version}</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
|
<version>3.2.4</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<createDependencyReducedPom>false</createDependencyReducedPom>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
|
</project>
|
|
@ -0,0 +1,346 @@
|
||||||
|
package me.devkevin.landcore;
|
||||||
|
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
import lombok.Getter;
|
||||||
|
import me.devkevin.landcore.commands.impl.*;
|
||||||
|
import me.devkevin.landcore.commands.impl.staff.*;
|
||||||
|
import me.devkevin.landcore.commands.impl.staff.punish.*;
|
||||||
|
import me.devkevin.landcore.commands.impl.toggle.ToggleGlobalChat;
|
||||||
|
import me.devkevin.landcore.commands.impl.toggle.ToggleMessagesCommand;
|
||||||
|
import me.devkevin.landcore.commands.impl.toggle.ToggleSoundsCommand;
|
||||||
|
import me.devkevin.landcore.disguise.commands.DisguiseCommand;
|
||||||
|
import me.devkevin.landcore.disguise.manager.DisguiseManager;
|
||||||
|
import me.devkevin.landcore.disguise.commands.UndisguiseCommand;
|
||||||
|
import me.devkevin.landcore.disguise.menu.DisguiseMenu;
|
||||||
|
import me.devkevin.landcore.faction.commands.FactionHelpCommand;
|
||||||
|
import me.devkevin.landcore.faction.commands.captain.*;
|
||||||
|
import me.devkevin.landcore.faction.commands.leader.FactionDescriptionCommand;
|
||||||
|
import me.devkevin.landcore.faction.commands.leader.FactionDisbandCommand;
|
||||||
|
import me.devkevin.landcore.faction.commands.player.*;
|
||||||
|
import me.devkevin.landcore.faction.listener.FactionListener;
|
||||||
|
import me.devkevin.landcore.faction.manager.FactionManager;
|
||||||
|
import me.devkevin.landcore.gson.CustomLocationTypeAdapterFactory;
|
||||||
|
import me.devkevin.landcore.gson.ItemStackTypeAdapterFactory;
|
||||||
|
import me.devkevin.landcore.listeners.*;
|
||||||
|
import me.devkevin.landcore.listeners.redis.*;
|
||||||
|
import me.devkevin.landcore.managers.MenuManager;
|
||||||
|
import me.devkevin.landcore.managers.PlayerManager;
|
||||||
|
import me.devkevin.landcore.managers.ProfileManager;
|
||||||
|
import me.devkevin.landcore.managers.StaffManager;
|
||||||
|
import me.devkevin.landcore.nametag.NameTagAdapter;
|
||||||
|
import me.devkevin.landcore.nametag.impl.InternalNametag;
|
||||||
|
import me.devkevin.landcore.player.color.ColorCommand;
|
||||||
|
import me.devkevin.landcore.player.color.SetColorCommand;
|
||||||
|
import me.devkevin.landcore.player.color.menu.ColorMenu;
|
||||||
|
import me.devkevin.landcore.player.grant.procedure.GrantProcedureListener;
|
||||||
|
import me.devkevin.landcore.player.info.UserCommand;
|
||||||
|
import me.devkevin.landcore.player.notes.commands.NoteAddCommand;
|
||||||
|
import me.devkevin.landcore.player.notes.commands.NoteRemoveCommand;
|
||||||
|
import me.devkevin.landcore.player.notes.commands.NotesCommand;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.player.rank.commands.*;
|
||||||
|
import me.devkevin.landcore.player.tags.PrefixCommand;
|
||||||
|
import me.devkevin.landcore.player.tags.menu.PrefixMenu;
|
||||||
|
import me.devkevin.landcore.punishment.listener.PunishmentListener;
|
||||||
|
import me.devkevin.landcore.redis.RedisMessenger;
|
||||||
|
import me.devkevin.landcore.server.ServerSettings;
|
||||||
|
import me.devkevin.landcore.server.filter.Filter;
|
||||||
|
import me.devkevin.landcore.storage.database.MongoStorage;
|
||||||
|
import me.devkevin.landcore.store.StorePCoinMenu;
|
||||||
|
import me.devkevin.landcore.task.BroadcastTask;
|
||||||
|
import me.devkevin.landcore.task.GrantDisguiseCheckTask;
|
||||||
|
import me.devkevin.landcore.utils.inventory.UIListener;
|
||||||
|
import me.devkevin.landcore.utils.menu.ButtonListener;
|
||||||
|
import me.devkevin.landcore.utils.menu.MenuUpdateTask;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import me.devkevin.landcore.utils.packet.PacketAdapter;
|
||||||
|
import me.devkevin.landcore.utils.packet.PacketListener;
|
||||||
|
import me.devkevin.landcore.utils.structure.Cuboid;
|
||||||
|
import net.minecraft.server.v1_8_R3.Packet;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandMap;
|
||||||
|
import org.bukkit.configuration.serialization.ConfigurationSerializable;
|
||||||
|
import org.bukkit.configuration.serialization.ConfigurationSerialization;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public class LandCore extends JavaPlugin {
|
||||||
|
@Getter
|
||||||
|
private static LandCore instance;
|
||||||
|
|
||||||
|
public static GsonBuilder GSONBUILDER;
|
||||||
|
public static Gson GSON;
|
||||||
|
public static final Random RANDOM = new Random();
|
||||||
|
|
||||||
|
private ServerSettings serverSettings;
|
||||||
|
private Filter filter;
|
||||||
|
private MongoStorage mongoStorage;
|
||||||
|
|
||||||
|
private ProfileManager profileManager;
|
||||||
|
private StaffManager staffManager;
|
||||||
|
private PlayerManager playerManager;
|
||||||
|
private MenuManager menuManager;
|
||||||
|
private RedisMessenger redisMessenger;
|
||||||
|
private static Field bukkitCommandMap;
|
||||||
|
private PrefixMenu prefixMenu;
|
||||||
|
private ColorMenu colorMenu;
|
||||||
|
private DisguiseMenu disguiseMenu;
|
||||||
|
private DisguiseManager disguiseManager;
|
||||||
|
private PacketListener packetListener;
|
||||||
|
private FactionManager factionManager;
|
||||||
|
private StorePCoinMenu storePCoinMenu;
|
||||||
|
|
||||||
|
private static void registerSerializableClass(Class<?> clazz) {
|
||||||
|
if (ConfigurationSerializable.class.isAssignableFrom(clazz)) {
|
||||||
|
Class<? extends ConfigurationSerializable> serializable = clazz.asSubclass(ConfigurationSerializable.class);
|
||||||
|
ConfigurationSerialization.registerClass(serializable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable() {
|
||||||
|
instance = this;
|
||||||
|
|
||||||
|
LandCore.GSONBUILDER = new GsonBuilder()
|
||||||
|
.registerTypeAdapterFactory(new CustomLocationTypeAdapterFactory())
|
||||||
|
.registerTypeAdapterFactory(new ItemStackTypeAdapterFactory());
|
||||||
|
LandCore.GSON = LandCore.GSONBUILDER.create();
|
||||||
|
|
||||||
|
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
|
||||||
|
saveDefaultConfig();
|
||||||
|
|
||||||
|
registerSerializableClass(Cuboid.class);
|
||||||
|
|
||||||
|
serverSettings = new ServerSettings(this);
|
||||||
|
filter = new Filter();
|
||||||
|
|
||||||
|
redisMessenger = new RedisMessenger(
|
||||||
|
this,
|
||||||
|
getConfig().getString("redis.host"),
|
||||||
|
getConfig().getInt("redis.port"),
|
||||||
|
getConfig().getInt("redis.timeout"),
|
||||||
|
getConfig().getString("redis.password")
|
||||||
|
);
|
||||||
|
|
||||||
|
redisMessenger.registerListeners(
|
||||||
|
new FreezeListener(this),
|
||||||
|
new FrozenDisconnectListener(this),
|
||||||
|
new HelpopListener(this),
|
||||||
|
new ReportListener(this),
|
||||||
|
new StaffChatListener(this),
|
||||||
|
new StaffStreamListener(this),
|
||||||
|
new RedisServerMonitorListener(this),
|
||||||
|
new RedisFactionListener(this)
|
||||||
|
);
|
||||||
|
|
||||||
|
redisMessenger.initialize();
|
||||||
|
mongoStorage = new MongoStorage(this);
|
||||||
|
|
||||||
|
this.disableLoggers();
|
||||||
|
this.addServerMonitor();
|
||||||
|
|
||||||
|
Bukkit.getConsoleSender().sendMessage(CC.SEPARATOR);
|
||||||
|
Bukkit.getConsoleSender().sendMessage(CC.translate("&eLandCore &8- &b" + getDescription().getVersion()));
|
||||||
|
Bukkit.getConsoleSender().sendMessage(CC.translate(" "));
|
||||||
|
Bukkit.getConsoleSender().sendMessage(CC.translate("&b • &eDeveloper: &eDevKevin"));
|
||||||
|
Bukkit.getConsoleSender().sendMessage(CC.translate("&b • &eMongo: &f" + (mongoStorage.isConnected() ? "&aenabled" : "&cdisabled")));
|
||||||
|
Bukkit.getConsoleSender().sendMessage(CC.translate("&b • &eRedis: &f" + (redisMessenger.isActive() ? "&aenabled" : "&cdisabled")));
|
||||||
|
Bukkit.getConsoleSender().sendMessage(CC.SEPARATOR);
|
||||||
|
|
||||||
|
profileManager = new ProfileManager();
|
||||||
|
staffManager = new StaffManager(this);
|
||||||
|
playerManager = new PlayerManager();
|
||||||
|
menuManager = new MenuManager(this);
|
||||||
|
prefixMenu = new PrefixMenu();
|
||||||
|
colorMenu = new ColorMenu();
|
||||||
|
disguiseMenu = new DisguiseMenu();
|
||||||
|
disguiseManager = new DisguiseManager();
|
||||||
|
factionManager = new FactionManager();
|
||||||
|
storePCoinMenu = new StorePCoinMenu();
|
||||||
|
|
||||||
|
new InternalNametag(this, new NameTagAdapter());
|
||||||
|
//LandSpigot.getInstance().registerPacketHandler(new EntityPacketHandler());
|
||||||
|
|
||||||
|
Arrays.asList(
|
||||||
|
new BroadcastCommand(this),
|
||||||
|
new ClearChatCommand(this),
|
||||||
|
new IgnoreCommand(this),
|
||||||
|
new ListCommand(),
|
||||||
|
new MessageCommand(this),
|
||||||
|
new RankCommand(this),
|
||||||
|
new ReplyCommand(this),
|
||||||
|
new StaffChatCommand(this),
|
||||||
|
new TeleportCommand(this),
|
||||||
|
new ToggleMessagesCommand(this),
|
||||||
|
new ToggleGlobalChat(this),
|
||||||
|
new ToggleSoundsCommand(this),
|
||||||
|
new VanishCommand(this),
|
||||||
|
new ReportCommand(this),
|
||||||
|
new CheckCommand(this),
|
||||||
|
new HelpOpCommand(this),
|
||||||
|
new PingCommand(),
|
||||||
|
new BanCommand(this),
|
||||||
|
new MuteCommand(this),
|
||||||
|
new UnbanCommand(this),
|
||||||
|
new UnmuteCommand(this),
|
||||||
|
new WarnCommand(this),
|
||||||
|
new KickCommand(this),
|
||||||
|
new MuteChatCommand(this),
|
||||||
|
new SlowChatCommand(this),
|
||||||
|
new GameModeCommand(),
|
||||||
|
new ShutdownCommand(this),
|
||||||
|
new FreezeCommand(this),
|
||||||
|
new WhitelistCommand(this),
|
||||||
|
new GrantCommand(this),
|
||||||
|
new GrantsCommand(this),
|
||||||
|
new QuickGrantCommand(this),
|
||||||
|
new UserCommand(this),
|
||||||
|
new PlayTimeCommand(this),
|
||||||
|
new RankListCommand(),
|
||||||
|
new NoteAddCommand(this),
|
||||||
|
new NoteRemoveCommand(this),
|
||||||
|
new NotesCommand(this),
|
||||||
|
new MisplaceCommand(this),
|
||||||
|
new PrefixCommand(this),
|
||||||
|
new ColorCommand(this),
|
||||||
|
new SetColorCommand(this),
|
||||||
|
new BuildServerCommand(this),
|
||||||
|
new TeleportPositionCommand(this),
|
||||||
|
new FeedCommand(this),
|
||||||
|
new HealCommand(this),
|
||||||
|
new AltsCommand(this),
|
||||||
|
new UndisguiseCommand(this),
|
||||||
|
new DisguiseCommand(this),
|
||||||
|
new EnchantCommand(this),
|
||||||
|
|
||||||
|
// factions
|
||||||
|
new FactionHelpCommand(this),
|
||||||
|
new FactionAcceptCommand(this),
|
||||||
|
new FactionCreateCommand(this),
|
||||||
|
new FactionLeaveCommand(this),
|
||||||
|
new FactionInfoCommand(this),
|
||||||
|
new FactionDescriptionCommand(this),
|
||||||
|
new FactionDisbandCommand(this),
|
||||||
|
new FactionDemoteCommand(this),
|
||||||
|
new FactionInviteCommand(this),
|
||||||
|
new FactionKickCommand(this),
|
||||||
|
new FactionPasswordCommand(this),
|
||||||
|
new FactionPromoteCommand(this),
|
||||||
|
new FactionChatCommand(this),
|
||||||
|
|
||||||
|
new PCoinsCommand(this),
|
||||||
|
new StoreCommand(this)
|
||||||
|
).forEach(command -> registerCommand(command, getName()));
|
||||||
|
|
||||||
|
Arrays.asList(
|
||||||
|
new PlayerListener(this),
|
||||||
|
new ButtonListener(),
|
||||||
|
new MessageListener(this),
|
||||||
|
new InventoryListener(this),
|
||||||
|
new HelpCommandListener(this),
|
||||||
|
new PlayerInteractListener(this),
|
||||||
|
new UIListener(),
|
||||||
|
new GrantProcedureListener(this),
|
||||||
|
new PunishmentListener(),
|
||||||
|
new FactionListener()
|
||||||
|
).forEach(listener -> getServer().getPluginManager().registerEvents(listener, this));
|
||||||
|
|
||||||
|
getServer().getScheduler().runTaskTimerAsynchronously(this, new BroadcastTask(this), 20 * 120L, 20 * 120L);
|
||||||
|
new MenuUpdateTask();
|
||||||
|
new GrantDisguiseCheckTask();
|
||||||
|
|
||||||
|
//WindSpigot.getInstance().registerPacketListener(new PacketListener());
|
||||||
|
|
||||||
|
packetListener = new PacketListener();
|
||||||
|
new PlayerPacketListener(this, packetListener);
|
||||||
|
|
||||||
|
Rank.importRanks();
|
||||||
|
CC.logConsole(CC.PRIMARY + "[LandCore] " + CC.SECONDARY + "Core has started successfully.");
|
||||||
|
CC.logConsole(CC.PRIMARY + "[LandCore] " + CC.GREEN + " All databases connected successfully.");
|
||||||
|
|
||||||
|
getServer().getScheduler().runTaskTimerAsynchronously(this, () -> {
|
||||||
|
factionManager.save();
|
||||||
|
}, 0L, 6000L);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
this.getServer().getScheduler().cancelTasks(this);
|
||||||
|
|
||||||
|
Map<String, Object> message = Maps.newHashMap();
|
||||||
|
message.put("server", this.getServerName());
|
||||||
|
|
||||||
|
this.getRedisMessenger().sendOff("server-monitor-remove", message);
|
||||||
|
|
||||||
|
factionManager.save();
|
||||||
|
getServer().getOnlinePlayers().parallelStream().forEach(player -> factionManager.savePlayerFaction(player));
|
||||||
|
|
||||||
|
try {
|
||||||
|
Thread.sleep(1000L);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Player player : getServer().getOnlinePlayers()) {
|
||||||
|
player.kickPlayer(CC.RED + "The server is restarting.");
|
||||||
|
|
||||||
|
// remove fake players
|
||||||
|
LandCore.getInstance().getPlayerManager().getDummyPlayers().remove(player.getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
profileManager.saveProfiles();
|
||||||
|
serverSettings.saveConfig();
|
||||||
|
|
||||||
|
Bukkit.getScheduler().cancelTasks(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getServerName() {
|
||||||
|
return getConfig().getString("server_name");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNetworkName() {
|
||||||
|
return getConfig().getString("network_name");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void registerCommand(Command cmd, String fallbackPrefix) {
|
||||||
|
try {
|
||||||
|
if (bukkitCommandMap == null) {
|
||||||
|
bukkitCommandMap = Bukkit.getServer().getClass().getDeclaredField("commandMap");
|
||||||
|
bukkitCommandMap.setAccessible(true);
|
||||||
|
}
|
||||||
|
CommandMap commandMap = (CommandMap) bukkitCommandMap.get(Bukkit.getServer());
|
||||||
|
commandMap.register(cmd.getName(), fallbackPrefix, cmd);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Bukkit.getLogger().info("[LandCore] CommandMap failed to register.");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void disableLoggers() {
|
||||||
|
Logger.getLogger("org.mongodb.driver.connection").setLevel(Level.OFF);
|
||||||
|
Logger.getLogger("org.mongodb.driver.cluster").setLevel(Level.OFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addServerMonitor() {
|
||||||
|
Map<String, Object> message = Maps.newHashMap();
|
||||||
|
message.put("server", this.getServerName());
|
||||||
|
|
||||||
|
this.getRedisMessenger().send("server-monitor-add", message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public <E extends Packet<?>> void registerAdapter(Class<? extends E> classType, PacketAdapter<E> handler) {
|
||||||
|
packetListener.registerAdapter(classType, handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,191 @@
|
||||||
|
package me.devkevin.landcore;
|
||||||
|
|
||||||
|
import com.google.common.io.ByteArrayDataOutput;
|
||||||
|
import com.google.common.io.ByteStreams;
|
||||||
|
import lombok.Getter;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.PlayerVersion;
|
||||||
|
import me.devkevin.landcore.utils.item.ItemBuilder;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import lombok.experimental.UtilityClass;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.enchantments.Enchantment;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import us.myles.ViaVersion.api.Via;
|
||||||
|
|
||||||
|
import java.text.DateFormat;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 18/01/2023 @ 13:49
|
||||||
|
* CorePluginAPI / land.pvp.core / LandCore
|
||||||
|
*/
|
||||||
|
@UtilityClass
|
||||||
|
public class LandCoreAPI {
|
||||||
|
public final static ItemStack PLACEHOLDER_ITEM = new ItemBuilder(Material.STAINED_GLASS_PANE)
|
||||||
|
.durability(7)
|
||||||
|
.name("&a")
|
||||||
|
.lore(" ")
|
||||||
|
.hideFlags()
|
||||||
|
.build();
|
||||||
|
|
||||||
|
public static String getColorPing(int ping) {
|
||||||
|
if (ping <= 40) return CC.translate("&a" + ping);
|
||||||
|
if (ping <= 70) return CC.translate("&e" + ping);
|
||||||
|
if (ping <= 100) return CC.translate("&6" + ping);
|
||||||
|
else return CC.translate("&c" + ping);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isInteger(String index) {
|
||||||
|
try {
|
||||||
|
Integer.parseInt(index);
|
||||||
|
return true;
|
||||||
|
} catch (Exception ignored) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void sendToServer(Player player, String server) {
|
||||||
|
try {
|
||||||
|
ByteArrayDataOutput out = ByteStreams.newDataOutput();
|
||||||
|
out.writeUTF("Connect");
|
||||||
|
out.writeUTF(server);
|
||||||
|
player.sendMessage(CC.translate("&aSending to " + server + "..."));
|
||||||
|
player.sendPluginMessage(LandCore.getInstance(), "BungeeCord", out.toByteArray());
|
||||||
|
} catch (Exception e) {
|
||||||
|
player.sendMessage(CC.translate("&cAn Error occurred while sending to the server."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getMaxEnchantLevel(Player player) {
|
||||||
|
CoreProfile profile = LandCore.getInstance().getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
|
||||||
|
if (profile.hasRank(Rank.DEVELOPER)) return 9999;
|
||||||
|
if (profile.hasRank(Rank.DEVELOPER)) return 21;
|
||||||
|
if (profile.hasRank(Rank.DEVELOPER)) return 14;
|
||||||
|
if (profile.hasRank(Rank.DEVELOPER)) return 7;
|
||||||
|
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Enchantment getEnchantmentByName(Object object) {
|
||||||
|
String value = object.toString().replace("_", "").trim();
|
||||||
|
|
||||||
|
switch (value.toUpperCase()) {
|
||||||
|
case "PROT":
|
||||||
|
case "PROTECTION":
|
||||||
|
return Enchantment.PROTECTION_ENVIRONMENTAL;
|
||||||
|
case "UNB":
|
||||||
|
case "UNBREAKING":
|
||||||
|
return Enchantment.DURABILITY;
|
||||||
|
case "FIREP":
|
||||||
|
case "FP":
|
||||||
|
case "FIREPROTECTION":
|
||||||
|
return Enchantment.PROTECTION_FIRE;
|
||||||
|
case "FEATHERF":
|
||||||
|
case "FL":
|
||||||
|
case "FEATHERFALLING":
|
||||||
|
return Enchantment.PROTECTION_FALL;
|
||||||
|
case "BLASTP":
|
||||||
|
case "BP":
|
||||||
|
case "BLASTPROTECTION":
|
||||||
|
return Enchantment.PROTECTION_EXPLOSIONS;
|
||||||
|
case "SHARP":
|
||||||
|
case "SHARPNESS":
|
||||||
|
return Enchantment.DAMAGE_ALL;
|
||||||
|
case "KNOCK":
|
||||||
|
case "KNOCKBACK":
|
||||||
|
return Enchantment.KNOCKBACK;
|
||||||
|
case "FIREA":
|
||||||
|
case "FA":
|
||||||
|
case "FIRE":
|
||||||
|
case "FIREASPECT":
|
||||||
|
return Enchantment.FIRE_ASPECT;
|
||||||
|
case "L":
|
||||||
|
case "LOOT":
|
||||||
|
case "LOOTING":
|
||||||
|
return Enchantment.LOOT_BONUS_MOBS;
|
||||||
|
case "F":
|
||||||
|
case "FORT":
|
||||||
|
case "FORTUNE":
|
||||||
|
return Enchantment.LOOT_BONUS_BLOCKS;
|
||||||
|
case "ST":
|
||||||
|
case "SILK":
|
||||||
|
case "SILKTOUCH":
|
||||||
|
return Enchantment.SILK_TOUCH;
|
||||||
|
case "EFF":
|
||||||
|
case "EFFICIENCY":
|
||||||
|
return Enchantment.DIG_SPEED;
|
||||||
|
case "SM":
|
||||||
|
case "SMITE":
|
||||||
|
return Enchantment.DAMAGE_UNDEAD;
|
||||||
|
case "INF":
|
||||||
|
case "INFINITY":
|
||||||
|
return Enchantment.ARROW_INFINITE;
|
||||||
|
case "FLA":
|
||||||
|
case "FLAME":
|
||||||
|
return Enchantment.ARROW_FIRE;
|
||||||
|
case "PUNCH":
|
||||||
|
return Enchantment.ARROW_KNOCKBACK;
|
||||||
|
case "POWER":
|
||||||
|
return Enchantment.ARROW_DAMAGE;
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Language {
|
||||||
|
USE_NUMBERS("USE_NUMBERS", "{prefix} &cPlease use numbers."),
|
||||||
|
ENCHANT_MUST_HOLD_ITEM("ENCHANT.MUST-HOLD-ITEM", "{prefix} &eYou must hold item in order to enchant."),
|
||||||
|
ENCHANT_ENCHANT_MUST_BE_POSITIVE("ENCHANT.ENCHANT-MUST-BE-POSITIVE", "{prefix} &eEnchant level must be positive."),
|
||||||
|
ENCHANT_MAXIMUM_LEVEL_EXCEEDED("ENCHANT.MAXIMUM-LEVEL-EXCEEDED", "{prefix} &eYour maximum level for enchant is &6<level>&e."),
|
||||||
|
ENCHANT_WRONG_ENCHANTMENT("ENCHANT.WRONG-ENCHANTMENT", "{prefix} &eYou've entered wrong enchantment."),
|
||||||
|
ENCHANT_ITEM_DOESNT_HAVE_ENCHANT("ENCHANT.ITEM-IS-NOT-ENCHANTED", "{prefix} &eYour item does not have that enchantment."),
|
||||||
|
ENCHANT_REMOVED("ENCHANT.REMOVED", "{prefix} &eYou've removed &6<enchant> &eenchantment from your item."),
|
||||||
|
ENCHANT_ADDED("ENCHANT.ADDED", "{prefix} &eYou've added &6<enchant> &eenchantment to your item.");
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
private String path;
|
||||||
|
@Getter
|
||||||
|
private String value;
|
||||||
|
@Getter
|
||||||
|
private List<String> listValue;
|
||||||
|
|
||||||
|
Language(String path, String value) {
|
||||||
|
this.path = path;
|
||||||
|
this.value = value;
|
||||||
|
this.listValue = new ArrayList<>(Collections.singletonList(value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public PlayerVersion getPlayerVersion(Player player) {
|
||||||
|
return PlayerVersion.getVersionFromRaw(Via.getAPI().getPlayerVersion(player.getUniqueId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract class LandCoreListener implements Listener {
|
||||||
|
public LandCoreListener(JavaPlugin javaPlugin) {
|
||||||
|
Bukkit.getServer().getPluginManager().registerEvents(this, javaPlugin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getTodayDate() {
|
||||||
|
Date todayDate = new Date();
|
||||||
|
DateFormat todayDateFormat = new SimpleDateFormat("MMM dd, yyyy");
|
||||||
|
todayDateFormat.setTimeZone(TimeZone.getTimeZone("US/Eastern"));
|
||||||
|
return todayDateFormat.format(todayDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getCurrentTime() {
|
||||||
|
DateFormat dateFormat = new SimpleDateFormat("hh:mm a");
|
||||||
|
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("US/Eastern"));
|
||||||
|
dateFormat.setTimeZone(cal.getTimeZone());
|
||||||
|
return dateFormat.format(cal.getTime());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
package me.devkevin.landcore.callback;
|
||||||
|
|
||||||
|
import org.bson.Document;
|
||||||
|
|
||||||
|
public interface DocumentCallback {
|
||||||
|
void call(Document document, boolean found);
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package me.devkevin.landcore.callback;
|
||||||
|
|
||||||
|
public interface WebCallback {
|
||||||
|
void callback(String response);
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
package me.devkevin.landcore.commands;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
public abstract class BaseCommand extends Command {
|
||||||
|
private static final String LINE_SEPARATOR = System.lineSeparator();
|
||||||
|
private final Rank requiredRank;
|
||||||
|
|
||||||
|
protected BaseCommand(String name, Rank requiredRank) {
|
||||||
|
super(name);
|
||||||
|
this.requiredRank = requiredRank;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected BaseCommand(String name) {
|
||||||
|
this(name, Rank.MEMBER);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean execute(CommandSender sender, String alias, String[] args) {
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
Player player = (Player) sender;
|
||||||
|
CoreProfile profile = LandCore.getInstance().getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
|
||||||
|
if (!profile.hasRank(requiredRank)) {
|
||||||
|
player.sendMessage(CC.RED + "You don't have the required rank to perform this command.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
execute(sender, args);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected final void setAliases(String... aliases) {
|
||||||
|
if (aliases.length > 0) {
|
||||||
|
setAliases(aliases.length == 1 ? Collections.singletonList(aliases[0]) : Arrays.asList(aliases));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected final void setUsage(String... uses) {
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
|
||||||
|
for (int i = 0; i < uses.length; i++) {
|
||||||
|
String use = uses[i];
|
||||||
|
|
||||||
|
builder.append(use);
|
||||||
|
|
||||||
|
if (i + 1 != uses.length) {
|
||||||
|
builder.append(LINE_SEPARATOR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setUsage(builder.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void execute(CommandSender sender, String[] args);
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package me.devkevin.landcore.commands;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public abstract class PlayerCommand extends BaseCommand {
|
||||||
|
protected PlayerCommand(String name, Rank requiredRank) {
|
||||||
|
super(name, requiredRank);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected PlayerCommand(String name) {
|
||||||
|
super(name, Rank.MEMBER);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected final void execute(CommandSender sender, String[] args) {
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
execute((Player) sender, args);
|
||||||
|
} else {
|
||||||
|
sender.sendMessage(CC.RED + "Only players can perform this command.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void execute(Player player, String[] args);
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
package me.devkevin.landcore.commands.impl;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.BaseCommand;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
public class ClearChatCommand extends BaseCommand {
|
||||||
|
private static final String BLANK_MESSAGE = String.join("", Collections.nCopies(150, "§8 §8 §1 §3 §3 §7 §8 §r\n"));
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public ClearChatCommand(LandCore plugin) {
|
||||||
|
super("clearchat", Rank.TRIAL_MOD);
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("cc");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(CommandSender sender, String[] args) {
|
||||||
|
for (Player player : plugin.getServer().getOnlinePlayers()) {
|
||||||
|
CoreProfile profile = plugin.getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
|
||||||
|
if (!profile.hasStaff()) {
|
||||||
|
player.sendMessage(BLANK_MESSAGE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin.getServer().broadcastMessage(CC.GREEN + "The chat was cleared by " + sender.getName() + ".");
|
||||||
|
sender.sendMessage(CC.YELLOW + "Don't worry, staff can still see cleared messages.");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,87 @@
|
||||||
|
package me.devkevin.landcore.commands.impl;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.LandCoreAPI;
|
||||||
|
import me.devkevin.landcore.commands.BaseCommand;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.TaskUtil;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.enchantments.Enchantment;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 13/02/2023 @ 19:55
|
||||||
|
* EnchantCommand / me.devkevin.landcore.commands.impl / LandCore
|
||||||
|
*/
|
||||||
|
public class EnchantCommand extends BaseCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public EnchantCommand(LandCore plugin) {
|
||||||
|
super("enchant", Rank.DEVELOPER);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(CommandSender sender, String[] args) {
|
||||||
|
TaskUtil.runAsync(() -> {
|
||||||
|
Player player = (Player) sender;
|
||||||
|
|
||||||
|
if (args.length < 2) {
|
||||||
|
player.sendMessage(CC.translate("&cCorrect usage: /enchant <enchantment> <level>"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemStack item = player.getItemInHand();
|
||||||
|
|
||||||
|
if (item == null || item.getType() == Material.AIR) {
|
||||||
|
player.sendMessage(LandCoreAPI.Language.ENCHANT_MUST_HOLD_ITEM.toString());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!LandCoreAPI.isInteger(args[1])) {
|
||||||
|
player.sendMessage(LandCoreAPI.Language.USE_NUMBERS.toString());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int level = Integer.parseInt(args[1]);
|
||||||
|
|
||||||
|
if (level < 0) {
|
||||||
|
player.sendMessage(LandCoreAPI.Language.ENCHANT_ENCHANT_MUST_BE_POSITIVE.toString());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (level > LandCoreAPI.getMaxEnchantLevel(player)) {
|
||||||
|
player.sendMessage(LandCoreAPI.Language.ENCHANT_MAXIMUM_LEVEL_EXCEEDED.toString()
|
||||||
|
.replace("<level>", String.valueOf(LandCoreAPI.getMaxEnchantLevel(player))));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Enchantment enchantment = LandCoreAPI.getEnchantmentByName(args[0]);
|
||||||
|
|
||||||
|
if (enchantment == null) {
|
||||||
|
player.sendMessage(LandCoreAPI.Language.ENCHANT_WRONG_ENCHANTMENT.toString());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (level == 0) {
|
||||||
|
if (!item.containsEnchantment(enchantment)) {
|
||||||
|
player.sendMessage(LandCoreAPI.Language.ENCHANT_ITEM_DOESNT_HAVE_ENCHANT.toString());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
item.removeEnchantment(enchantment);
|
||||||
|
player.sendMessage(LandCoreAPI.Language.ENCHANT_REMOVED.toString()
|
||||||
|
.replace("<enchant>", enchantment.getName().toUpperCase().replace("_", " ") + " " + level));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
item.addUnsafeEnchantment(enchantment, level);
|
||||||
|
player.sendMessage(LandCoreAPI.Language.ENCHANT_ADDED.toString()
|
||||||
|
.replace("<enchant>", enchantment.getName().toUpperCase().replace("_", " ")));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package me.devkevin.landcore.commands.impl;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 07/02/2023 @ 18:07
|
||||||
|
* FeedCommand / me.devkevin.landcore.commands.impl / LandCore
|
||||||
|
*/
|
||||||
|
public class FeedCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public FeedCommand(LandCore plugin) {
|
||||||
|
super("feed", Rank.ADMIN);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
player.sendMessage(CC.GOLD + CC.B + "You now have full hunger");
|
||||||
|
player.setFoodLevel(20);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package me.devkevin.landcore.commands.impl;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 07/02/2023 @ 18:08
|
||||||
|
* HealCommand / me.devkevin.landcore.commands.impl / LandCore
|
||||||
|
*/
|
||||||
|
public class HealCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public HealCommand(LandCore plugin) {
|
||||||
|
super("heal", Rank.ADMIN);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
player.sendMessage(CC.GOLD + CC.B + "You now have fully healed.");
|
||||||
|
player.setHealth(player.getMaxHealth());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
package me.devkevin.landcore.commands.impl;
|
||||||
|
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.utils.StringUtil;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import me.devkevin.landcore.utils.timer.Timer;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class HelpOpCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public HelpOpCommand(LandCore plugin) {
|
||||||
|
super("helpop");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setUsage(CC.RED + "/helpop <help message>");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
if (args.length < 1) {
|
||||||
|
player.sendMessage(usageMessage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CoreProfile profile = plugin.getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
Timer cooldownTimer = profile.getReportCooldownTimer();
|
||||||
|
|
||||||
|
if (cooldownTimer.isActive()) {
|
||||||
|
player.sendMessage(CC.RED + "You can't request assistance for another " + cooldownTimer.formattedExpiration() + ".");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String request = StringUtil.buildString(args, 0);
|
||||||
|
|
||||||
|
Map<String, Object> requestMap = Maps.newHashMap();
|
||||||
|
requestMap.put("server", plugin.getServerName());
|
||||||
|
requestMap.put("player", player.getName());
|
||||||
|
requestMap.put("request", request);
|
||||||
|
|
||||||
|
plugin.getRedisMessenger().send("help-op", requestMap);
|
||||||
|
|
||||||
|
player.sendMessage(CC.GREEN + "Request sent: " + CC.R + request);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,57 @@
|
||||||
|
package me.devkevin.landcore.commands.impl;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import me.devkevin.landcore.utils.message.Messages;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class IgnoreCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public IgnoreCommand(LandCore plugin) {
|
||||||
|
super("ignore");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("unignore");
|
||||||
|
setUsage(CC.RED + "Usage: /ignore <player>");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
if (args.length < 1) {
|
||||||
|
player.sendMessage(usageMessage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Player target = plugin.getServer().getPlayer(args[0]);
|
||||||
|
|
||||||
|
if (target == null) {
|
||||||
|
player.sendMessage(Messages.PLAYER_NOT_FOUND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (target.getName().equals(player.getName())) {
|
||||||
|
player.sendMessage(CC.RED + "You can't ignore yourself!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CoreProfile targetProfile = plugin.getProfileManager().getProfile(target.getUniqueId());
|
||||||
|
|
||||||
|
if (targetProfile.hasStaff()) {
|
||||||
|
player.sendMessage(CC.RED + "You can't ignore a staff member. If this staff member is harrassing you " +
|
||||||
|
"or engaging in other abusive manners, please report this or contact a higher staff member.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CoreProfile profile = plugin.getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
|
||||||
|
if (profile.hasPlayerIgnored(target.getUniqueId())) {
|
||||||
|
profile.unignore(target.getUniqueId());
|
||||||
|
player.sendMessage(CC.GREEN + "No longer ignoring " + target.getName() + ".");
|
||||||
|
} else {
|
||||||
|
profile.ignore(target.getUniqueId());
|
||||||
|
player.sendMessage(CC.GREEN + "Now ignoring " + target.getName() + ".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package me.devkevin.landcore.commands.impl;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.commands.BaseCommand;
|
||||||
|
import me.devkevin.landcore.utils.PlayerList;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
public class ListCommand extends BaseCommand {
|
||||||
|
public ListCommand() {
|
||||||
|
super("list");
|
||||||
|
setAliases("online", "players", "who");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(CommandSender sender, String[] args) {
|
||||||
|
PlayerList onlinePlayerList = PlayerList.newList().sortedByRank();
|
||||||
|
|
||||||
|
sender.sendMessage(" ");
|
||||||
|
sender.sendMessage(PlayerList.ORDERED_RANKS);
|
||||||
|
sender.sendMessage(" ");
|
||||||
|
sender.sendMessage("(" + onlinePlayerList.size() + ") " + onlinePlayerList.asColoredNames());
|
||||||
|
sender.sendMessage(" ");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,56 @@
|
||||||
|
package me.devkevin.landcore.commands.impl;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.event.player.PlayerMessageEvent;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.utils.StringUtil;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import me.devkevin.landcore.utils.message.Messages;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class MessageCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public MessageCommand(LandCore plugin) {
|
||||||
|
super("message");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("msg", "m", "whisper", "w", "tell", "t");
|
||||||
|
setUsage(CC.RED + "Usage: /message <player> <message>");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
if (args.length < 2) {
|
||||||
|
player.sendMessage(usageMessage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CoreProfile profile = plugin.getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
|
||||||
|
if (profile.getActiveMute() != null) {
|
||||||
|
if (profile.getActiveMute().isActive()) {
|
||||||
|
player.sendMessage(CC.RED + "You're muted for another " + profile.getActiveBan().getTimeRemaining() + ".");
|
||||||
|
} else if (profile.getActiveMute().isPermanent()) {
|
||||||
|
player.sendMessage(CC.RED + "You're permanently muted.");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Player target = plugin.getServer().getPlayer(args[0]);
|
||||||
|
|
||||||
|
if (target == null) {
|
||||||
|
player.sendMessage(Messages.PLAYER_NOT_FOUND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CoreProfile targetProfile = plugin.getProfileManager().getProfile(target.getUniqueId());
|
||||||
|
|
||||||
|
if (targetProfile.hasPlayerIgnored(player.getUniqueId())) {
|
||||||
|
player.sendMessage(CC.RED + "That player is ignoring you!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin.getServer().getPluginManager().callEvent(new PlayerMessageEvent(player, target, StringUtil.buildString(args, 1)));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,105 @@
|
||||||
|
package me.devkevin.landcore.commands.impl;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.LandCoreAPI;
|
||||||
|
import me.devkevin.landcore.commands.BaseCommand;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import me.devkevin.landcore.utils.message.Messages;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 24/03/2023 @ 1:43
|
||||||
|
* P_CoinsCommand / me.devkevin.landcore.commands.impl / LandCore
|
||||||
|
*/
|
||||||
|
public class PCoinsCommand extends BaseCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public PCoinsCommand(LandCore plugin) {
|
||||||
|
super("pcoin", Rank.MANAGER);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(CommandSender sender, String[] args) {
|
||||||
|
if (args.length == 3) {
|
||||||
|
if (args[0].equalsIgnoreCase("set")) {
|
||||||
|
Player target = Bukkit.getPlayer(args[1]);
|
||||||
|
|
||||||
|
if (target == null) {
|
||||||
|
sender.sendMessage(Messages.PLAYER_NOT_FOUND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CoreProfile targetAccount = plugin.getProfileManager().getProfile(target.getUniqueId());
|
||||||
|
|
||||||
|
if (!LandCoreAPI.isInteger(args[2]) || Integer.parseInt(args[2]) < 0) {
|
||||||
|
sender.sendMessage(CC.RED + "Please use numbers.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
targetAccount.setP_coin(Integer.parseInt(args[2]));
|
||||||
|
|
||||||
|
sender.sendMessage("&eYou have successfully set &6" + targetAccount.getP_coin() + "'s &ePCoins to &6" + target.getName() + "&e.\"");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (args[0].equalsIgnoreCase("add")) {
|
||||||
|
Player target = Bukkit.getPlayer(args[1]);
|
||||||
|
|
||||||
|
if (target == null) {
|
||||||
|
sender.sendMessage(Messages.PLAYER_NOT_FOUND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CoreProfile targetAccount = plugin.getProfileManager().getProfile(target.getUniqueId());
|
||||||
|
|
||||||
|
if (!LandCoreAPI.isInteger(args[2]) || Integer.parseInt(args[2]) <= 0) {
|
||||||
|
sender.sendMessage(CC.RED + "Please use numbers.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
targetAccount.setP_coin(targetAccount.getP_coin() + Integer.parseInt(args[2]));
|
||||||
|
|
||||||
|
sender.sendMessage("&eYou have successfully added &6" + targetAccount.getP_coin() + "'s &ePCoins to &6" + target.getName() + "&e.\"");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (args[0].equalsIgnoreCase("remove")) {
|
||||||
|
Player target = Bukkit.getPlayer(args[1]);
|
||||||
|
|
||||||
|
if (target == null) {
|
||||||
|
sender.sendMessage(Messages.PLAYER_NOT_FOUND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CoreProfile targetAccount = plugin.getProfileManager().getProfile(target.getUniqueId());
|
||||||
|
|
||||||
|
if (!LandCoreAPI.isInteger(args[2]) || Integer.parseInt(args[2]) <= 0) {
|
||||||
|
sender.sendMessage(CC.RED + "Please use numbers.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Integer.parseInt(args[2]) > targetAccount.getP_coin()) {
|
||||||
|
sender.sendMessage(CC.translate("&cInvalid amount."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
targetAccount.setP_coin(targetAccount.getP_coin() - Integer.parseInt(args[2]));
|
||||||
|
|
||||||
|
sender.sendMessage("&eYou have successfully removed &6" + targetAccount.getP_coin() + "'s &ePCoins to &6" + target.getName() + "&e.\"");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sender.sendMessage(" ");
|
||||||
|
sender.sendMessage(CC.translate("&e&lCoins HELP"));
|
||||||
|
sender.sendMessage(CC.translate("&e/pcoin set <player> <amount>"));
|
||||||
|
sender.sendMessage(CC.translate("&e/pcoin add <player> <amount>"));
|
||||||
|
sender.sendMessage(CC.translate("&e/pcoin remove <player> <amount>"));
|
||||||
|
sender.sendMessage(" ");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
package me.devkevin.landcore.commands.impl;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCoreAPI;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class PingCommand extends PlayerCommand {
|
||||||
|
public PingCommand() {
|
||||||
|
super("ping");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
Player target = args.length < 1 || Bukkit.getPlayer(args[0]) == null ? player : Bukkit.getPlayer(args[0]);
|
||||||
|
int targetPing = target.spigot().getPing();
|
||||||
|
|
||||||
|
if (target == player) {
|
||||||
|
player.sendMessage(CC.PRIMARY + "Your ping is " + CC.SECONDARY + LandCoreAPI.getColorPing(targetPing) + CC.PRIMARY + " ms.");
|
||||||
|
} else {
|
||||||
|
int difference = targetPing - player.spigot().getPing();
|
||||||
|
String name = target.getDisplayName();
|
||||||
|
|
||||||
|
player.sendMessage(name + CC.PRIMARY + "'s ping is " + CC.SECONDARY + targetPing + CC.PRIMARY + " ms "
|
||||||
|
+ CC.ACCENT + "(" + (difference > 0 ? "+" : "") + LandCoreAPI.getColorPing(difference) + " difference)" + CC.PRIMARY + ".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
package me.devkevin.landcore.commands.impl;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.apache.commons.lang.time.DurationFormatUtils;
|
||||||
|
import org.bukkit.Statistic;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/01/2023 @ 1:13
|
||||||
|
* PlayTimeCommand / land.pvp.core.commands.impl / LandCore
|
||||||
|
*/
|
||||||
|
public class PlayTimeCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public PlayTimeCommand(LandCore plugin) {
|
||||||
|
super("playtime");
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
if (args.length == 0) {
|
||||||
|
long time = player.getStatistic(Statistic.PLAY_ONE_TICK);
|
||||||
|
|
||||||
|
player.sendMessage(CC.translate("&eYour playtime is &6" + DurationFormatUtils.formatDurationWords(time * 50L, true, true) + " &eon this server."));
|
||||||
|
} else {
|
||||||
|
Player target = this.plugin.getServer().getPlayer(args[0]);
|
||||||
|
|
||||||
|
if (target == null || !target.isOnline()) {
|
||||||
|
assert target != null;
|
||||||
|
player.sendMessage(CC.RED + "No player matching " + CC.YELLOW + target.getName() + CC.RED + " is connected to this server");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
long time = target.getStatistic(Statistic.PLAY_ONE_TICK);
|
||||||
|
|
||||||
|
player.sendMessage(CC.translate(plugin.getProfileManager().getProfile(target.getUniqueId()).getGrant().getRank().getColor() + target.getName() + "'s &eplaytime is &6" + DurationFormatUtils.formatDurationWords(time * 50L, true, true) + " &eon this server."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
package me.devkevin.landcore.commands.impl;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.event.player.PlayerMessageEvent;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.utils.StringUtil;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class ReplyCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public ReplyCommand(LandCore plugin) {
|
||||||
|
super("reply");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("r");
|
||||||
|
setUsage(CC.RED + "Usage: /reply <message>");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
if (args.length < 1) {
|
||||||
|
player.sendMessage(usageMessage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CoreProfile profile = plugin.getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
|
||||||
|
if (profile.getActiveMute() != null) {
|
||||||
|
if (profile.getActiveMute().isActive()) {
|
||||||
|
player.sendMessage(CC.RED + "You're muted for another " + profile.getActiveBan().getTimeRemaining() + ".");
|
||||||
|
} else if (profile.getActiveMute().isPermanent()) {
|
||||||
|
player.sendMessage(CC.RED + "You're permanently muted.");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Player target = plugin.getServer().getPlayer(profile.getConverser());
|
||||||
|
|
||||||
|
if (target == null) {
|
||||||
|
player.sendMessage(CC.RED + "You are not in a conversation.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CoreProfile targetProfile = plugin.getProfileManager().getProfile(target.getUniqueId());
|
||||||
|
|
||||||
|
if (targetProfile.hasPlayerIgnored(player.getUniqueId())) {
|
||||||
|
player.sendMessage(CC.RED + "That player is ignoring you!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin.getServer().getPluginManager().callEvent(new PlayerMessageEvent(player, target, StringUtil.buildString(args, 0)));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
package me.devkevin.landcore.commands.impl;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.inventory.menu.impl.ReportMenu;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import me.devkevin.landcore.utils.message.Messages;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class ReportCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public ReportCommand(LandCore plugin) {
|
||||||
|
super("report");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setUsage(CC.RED + "Usage: /report <player>");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
if (args.length == 0) {
|
||||||
|
player.sendMessage(usageMessage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Player target = plugin.getServer().getPlayer(args[0]);
|
||||||
|
|
||||||
|
if (target == null) {
|
||||||
|
player.sendMessage(Messages.PLAYER_NOT_FOUND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (player == target) {
|
||||||
|
player.sendMessage(CC.RED + "You can't report yourself!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CoreProfile targetProfile = plugin.getProfileManager().getProfile(target.getUniqueId());
|
||||||
|
|
||||||
|
if (targetProfile.hasStaff()) {
|
||||||
|
player.sendMessage(CC.RED + "You can't report a staff member. If this staff member is harassing you or" +
|
||||||
|
" engaging in other abusive manners, please report this or contact a higher staff member.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args.length == 1 || args.length == 2) {
|
||||||
|
if (target.getName() != null || targetProfile.getName() != null) {
|
||||||
|
CoreProfile profile = plugin.getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
|
||||||
|
profile.setReportingPlayerName(target.getName());
|
||||||
|
plugin.getMenuManager().getMenu(ReportMenu.class).open(player);
|
||||||
|
} else {
|
||||||
|
player.sendMessage(CC.RED + "Error: That player does not exist.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
package me.devkevin.landcore.commands.impl;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 24/03/2023 @ 20:43
|
||||||
|
* StoreCommand / me.devkevin.landcore.commands.impl / LandCore
|
||||||
|
*/
|
||||||
|
public class StoreCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public StoreCommand(LandCore plugin) {
|
||||||
|
super("store");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("pstore");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
player.openInventory(this.plugin.getStorePCoinMenu().menu(player).getCurrentPage());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
package me.devkevin.landcore.commands.impl;
|
||||||
|
|
||||||
|
import com.google.common.primitives.Ints;
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 07/02/2023 @ 18:05
|
||||||
|
* TeleportPositionCommand / me.devkevin.landcore.commands.impl / LandCore
|
||||||
|
*/
|
||||||
|
public class TeleportPositionCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public TeleportPositionCommand(LandCore plugin) {
|
||||||
|
super("tppos", Rank.DEVELOPER);
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("teleportposition");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
if (args.length < 3) {
|
||||||
|
player.sendMessage(CC.RED + "Usage: /tppos <x> <y> <z>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Integer x = Ints.tryParse(args[0]);
|
||||||
|
Integer y = Ints.tryParse(args[1]);
|
||||||
|
Integer z = Ints.tryParse(args[2]);
|
||||||
|
|
||||||
|
if (x == null || y == null || z == null) {
|
||||||
|
player.sendMessage(CC.RED + "Location not found.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
player.sendMessage(CC.GRAY + "Teleporting...");
|
||||||
|
player.teleport(new Location(player.getWorld(), (double) x, (double) y, (double) z));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import me.devkevin.landcore.utils.message.Messages;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 09/02/2023 @ 17:25
|
||||||
|
* AltsCommand / me.devkevin.landcore.commands.impl.staff / LandCore
|
||||||
|
*/
|
||||||
|
public class AltsCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public AltsCommand(LandCore plugin) {
|
||||||
|
super("alts", Rank.TRIAL_MOD);
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("dupeip");
|
||||||
|
setUsage(CC.RED + "Usage: /alts <name:ip>");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
Player target = plugin.getServer().getPlayer(args[0]);
|
||||||
|
CoreProfile coreProfile = this.plugin.getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
|
||||||
|
if (target == null || coreProfile == null) {
|
||||||
|
player.sendMessage(Messages.PLAYER_NOT_FOUND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<CoreProfile> alts = new ArrayList<>();
|
||||||
|
|
||||||
|
for (UUID altUUID : coreProfile.getKnownAlts()) {
|
||||||
|
CoreProfile altProfile = this.plugin.getProfileManager().getProfile(altUUID);
|
||||||
|
|
||||||
|
if (altProfile != null) {
|
||||||
|
alts.add(altProfile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (alts.isEmpty()) {
|
||||||
|
player.sendMessage(CC.RED + "This player has no known alt accounts.");
|
||||||
|
} else {
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
|
||||||
|
for (CoreProfile altProfile : alts) {
|
||||||
|
builder.append(altProfile.getName());
|
||||||
|
builder.append(", ");
|
||||||
|
}
|
||||||
|
|
||||||
|
player.sendMessage(CC.GOLD + "Alts: " + CC.R + builder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.BaseCommand;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.StringUtil;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
public class BroadcastCommand extends BaseCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public BroadcastCommand(LandCore plugin) {
|
||||||
|
super("broadcast", Rank.ADMIN);
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("bc");
|
||||||
|
setUsage(CC.RED + "Usage: /broadcast <message> [-god]");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(CommandSender sender, String[] args) {
|
||||||
|
if (args.length == 0) {
|
||||||
|
sender.sendMessage(usageMessage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String message = CC.SECONDARY + "[Alert] " + CC.PRIMARY
|
||||||
|
+ ChatColor.translateAlternateColorCodes('&', StringUtil.buildString(args, 0)).trim();
|
||||||
|
|
||||||
|
if (message.endsWith(" -god")) {
|
||||||
|
message = message.substring(12, message.length() - 5).trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin.getServer().broadcastMessage(message);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.LandCoreAPI;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 07/02/2023 @ 17:46
|
||||||
|
* BuilServerCommand / me.devkevin.landcore.commands.impl / LandCore
|
||||||
|
*/
|
||||||
|
public class BuildServerCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public BuildServerCommand(LandCore plugin) {
|
||||||
|
super("buildserver", Rank.BUILDER);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
LandCoreAPI.sendToServer(player, "build");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,68 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff;
|
||||||
|
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.BaseCommand;
|
||||||
|
import me.devkevin.landcore.event.player.PlayerFreezeEvent;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class FreezeCommand extends BaseCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public FreezeCommand(LandCore plugin) {
|
||||||
|
super("freeze", Rank.SENIOR_MOD);
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("screenshare", "ss");
|
||||||
|
setUsage("/freeze <player>");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(CommandSender sender, String[] args) {
|
||||||
|
if (args.length < 1) {
|
||||||
|
sender.sendMessage(CC.RED + getUsage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Player target = Bukkit.getPlayer(args[0]);
|
||||||
|
|
||||||
|
if (target != null) {
|
||||||
|
|
||||||
|
CoreProfile targetProfile = plugin.getProfileManager().getProfile(target.getUniqueId());
|
||||||
|
|
||||||
|
if (targetProfile.hasStaff()) {
|
||||||
|
sender.sendMessage(CC.RED + "If you believe a staff member is cheating, please alert higher staff.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String server = plugin.getServerName();
|
||||||
|
String targetName = target.getName();
|
||||||
|
String senderName = sender.getName();
|
||||||
|
|
||||||
|
Map<String, Object> map = Maps.newHashMap();
|
||||||
|
map.put("server", server);
|
||||||
|
map.put("frozen", targetName);
|
||||||
|
map.put("sender", senderName);
|
||||||
|
|
||||||
|
if (targetProfile.freeze(sender)) {
|
||||||
|
map.put("isFrozen", true);
|
||||||
|
plugin.getRedisMessenger().send("freeze-listener", map);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
map.put("isFrozen", false);
|
||||||
|
plugin.getRedisMessenger().send("freeze-listener", map);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
PlayerFreezeEvent event = new PlayerFreezeEvent(target);
|
||||||
|
this.plugin.getServer().getPluginManager().callEvent(event);
|
||||||
|
|
||||||
|
sender.sendMessage(CC.RED + "That player is offline or does not exist.");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class GameModeCommand extends PlayerCommand {
|
||||||
|
public GameModeCommand() {
|
||||||
|
super("gamemode", Rank.SENIOR_MOD);
|
||||||
|
setAliases("gm");
|
||||||
|
setUsage(CC.RED + "Usage: /gamemode <mode|id>");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
if (args.length < 1) {
|
||||||
|
player.sendMessage(usageMessage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (args[0].toLowerCase()) {
|
||||||
|
case "1":
|
||||||
|
case "creative":
|
||||||
|
case "c":
|
||||||
|
player.setGameMode(GameMode.CREATIVE);
|
||||||
|
player.sendMessage(CC.GREEN + "Your game mode was set to creative.");
|
||||||
|
break;
|
||||||
|
case "0":
|
||||||
|
case "survival":
|
||||||
|
case "s":
|
||||||
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
|
player.sendMessage(CC.GREEN + "Your game mode was set to survival.");
|
||||||
|
break;
|
||||||
|
case "2":
|
||||||
|
case "adventure":
|
||||||
|
case "a":
|
||||||
|
player.setGameMode(GameMode.ADVENTURE);
|
||||||
|
player.sendMessage(CC.GREEN + "Your game mode was set to adventure.");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
player.sendMessage(usageMessage);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.BaseCommand;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 23/01/2023 @ 17:57
|
||||||
|
* MisplaceCommand / me.devkevin.landcore.commands.impl.staff / LandCore
|
||||||
|
*/
|
||||||
|
public class MisplaceCommand extends BaseCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public MisplaceCommand(LandCore plugin) {
|
||||||
|
super("xp", Rank.MANAGER);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(CommandSender sender, String[] args) {
|
||||||
|
Player target = this.plugin.getServer().getPlayer(args[0]);
|
||||||
|
|
||||||
|
CoreProfile coreProfile = this.plugin.getProfileManager().getProfile(target.getUniqueId());
|
||||||
|
try {
|
||||||
|
double d = Double.parseDouble(args[1]);
|
||||||
|
if (d > 0.25) {
|
||||||
|
sender.sendMessage(CC.RED + "Warning! " + d + " is over the recommended amount. The recommended amount is 0.25.");
|
||||||
|
}
|
||||||
|
coreProfile.setMisplace(d);
|
||||||
|
sender.sendMessage(CC.GREEN + "Misplace set to " + d + ".");
|
||||||
|
} catch (Exception ex) {
|
||||||
|
sender.sendMessage(CC.RED + "Invalid amount.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class MuteChatCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public MuteChatCommand(LandCore plugin) {
|
||||||
|
super("mutechat", Rank.TRIAL_MOD);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
boolean globalChatMuted = !plugin.getServerSettings().isGlobalChatMuted();
|
||||||
|
|
||||||
|
plugin.getServerSettings().setGlobalChatMuted(globalChatMuted);
|
||||||
|
plugin.getServer().broadcastMessage(globalChatMuted ? CC.RED + "Global chat has been muted by " + player.getName() + "."
|
||||||
|
: CC.GREEN + "Global chat has been enabled by " + plugin.getProfileManager().getProfile(player.getUniqueId()).getRank().getColor() + player.getName() + ".");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,63 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.BaseCommand;
|
||||||
|
import me.devkevin.landcore.event.server.ServerShutdownCancelEvent;
|
||||||
|
import me.devkevin.landcore.event.server.ServerShutdownScheduleEvent;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.task.ShutdownTask;
|
||||||
|
import me.devkevin.landcore.utils.NumberUtil;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
public class ShutdownCommand extends BaseCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public ShutdownCommand(LandCore plugin) {
|
||||||
|
super("shutdown", Rank.ADMIN);
|
||||||
|
this.plugin = plugin;
|
||||||
|
setUsage(CC.RED + "Usage: /shutdown <seconds|cancel>");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(CommandSender sender, String[] args) {
|
||||||
|
if (args.length < 1) {
|
||||||
|
sender.sendMessage(usageMessage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String arg = args[0];
|
||||||
|
|
||||||
|
if (arg.equals("cancel")) {
|
||||||
|
ShutdownTask task = plugin.getServerSettings().getShutdownTask();
|
||||||
|
|
||||||
|
if (task == null) {
|
||||||
|
sender.sendMessage(CC.RED + "There is no shutdown in progress.");
|
||||||
|
} else {
|
||||||
|
plugin.getServer().getPluginManager().callEvent(new ServerShutdownCancelEvent());
|
||||||
|
|
||||||
|
task.cancel();
|
||||||
|
plugin.getServerSettings().setShutdownTask(null);
|
||||||
|
plugin.getServer().broadcastMessage(CC.GREEN + "The shutdown in progress has been cancelled by " + sender.getName() + ".");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Integer seconds = NumberUtil.getInteger(arg);
|
||||||
|
|
||||||
|
if (seconds == null) {
|
||||||
|
sender.sendMessage(usageMessage);
|
||||||
|
} else {
|
||||||
|
if (seconds >= 5 && seconds <= 300) {
|
||||||
|
plugin.getServer().getPluginManager().callEvent(new ServerShutdownScheduleEvent());
|
||||||
|
|
||||||
|
ShutdownTask task = new ShutdownTask(seconds);
|
||||||
|
|
||||||
|
plugin.getServerSettings().setShutdownTask(task);
|
||||||
|
task.runTaskTimer(plugin, 0L, 20L);
|
||||||
|
} else {
|
||||||
|
sender.sendMessage(CC.RED + "Please enter a time between 5 and 300 seconds.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,67 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.BaseCommand;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
public class SlowChatCommand extends BaseCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public SlowChatCommand(LandCore plugin) {
|
||||||
|
super("slowchat", Rank.TRIAL_MOD);
|
||||||
|
this.plugin = plugin;
|
||||||
|
setUsage(CC.RED + "Usage: /slowchat <seconds|disable>");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Integer getInt(String arg) {
|
||||||
|
try {
|
||||||
|
int i = Integer.parseInt(arg);
|
||||||
|
|
||||||
|
if (i < 4 || i > 60) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return i;
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(CommandSender sender, String[] args) {
|
||||||
|
if (args.length < 1) {
|
||||||
|
sender.sendMessage(usageMessage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String arg = args[0];
|
||||||
|
|
||||||
|
switch (arg.toLowerCase()) {
|
||||||
|
case "off":
|
||||||
|
case "toggle":
|
||||||
|
case "disable":
|
||||||
|
int slowChatTime = plugin.getServerSettings().getSlowChatTime();
|
||||||
|
|
||||||
|
if (slowChatTime == -1) {
|
||||||
|
sender.sendMessage(CC.RED + "Slow chat is already disabled!");
|
||||||
|
} else {
|
||||||
|
plugin.getServerSettings().setSlowChatTime(-1);
|
||||||
|
plugin.getServer().broadcastMessage(CC.RED + "Slow chat has been disabled by " + sender.getName() + ".");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Integer time = getInt(arg);
|
||||||
|
|
||||||
|
if (time == null) {
|
||||||
|
sender.sendMessage(CC.RED + "You must enter a valid time between 4 and 60 seconds.");
|
||||||
|
} else {
|
||||||
|
plugin.getServerSettings().setSlowChatTime(time);
|
||||||
|
plugin.getServer().broadcastMessage(CC.YELLOW + "Slow chat has been enabled and set to " + time
|
||||||
|
+ " seconds by " + sender.getName() + ".");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.StringUtil;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class StaffChatCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public StaffChatCommand(LandCore plugin) {
|
||||||
|
super("staffchat", Rank.TRIAL_MOD);
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("sc");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
CoreProfile profile = plugin.getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
|
||||||
|
if (args.length == 0) {
|
||||||
|
boolean inStaffChat = !profile.isInStaffChat();
|
||||||
|
|
||||||
|
profile.setInStaffChat(inStaffChat);
|
||||||
|
|
||||||
|
player.sendMessage(inStaffChat ? CC.GREEN + "You are now in staff chat." : CC.RED + "You are no longer in staff chat.");
|
||||||
|
} else {
|
||||||
|
String message = StringUtil.buildString(args, 0);
|
||||||
|
|
||||||
|
plugin.getStaffManager().messageStaff(profile.getChatFormat(), message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,68 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import me.devkevin.landcore.utils.message.Messages;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class TeleportCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public TeleportCommand(LandCore plugin) {
|
||||||
|
super("tp", Rank.TRIAL_MOD);
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("teleport");
|
||||||
|
setUsage(CC.RED + "Usage: /teleport <player> [player]");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isOffline(Player checker, Player target) {
|
||||||
|
if (target == null) {
|
||||||
|
checker.sendMessage(Messages.PLAYER_NOT_FOUND);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void teleport(Player to, Player from) {
|
||||||
|
to.teleport(from);
|
||||||
|
to.sendMessage(CC.GREEN + "You have been teleported to " + from.getName() + ".");
|
||||||
|
|
||||||
|
CoreProfile fromProfile = plugin.getProfileManager().getProfile(from.getUniqueId());
|
||||||
|
|
||||||
|
if (fromProfile.hasStaff()) {
|
||||||
|
from.sendMessage(CC.GREEN + to.getName() + " has been teleported to you.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
if (args.length < 1) {
|
||||||
|
player.sendMessage(usageMessage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Player target = plugin.getServer().getPlayer(args[0]);
|
||||||
|
|
||||||
|
if (isOffline(player, target)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args.length < 2) {
|
||||||
|
teleport(player, target);
|
||||||
|
} else {
|
||||||
|
Player target2 = plugin.getServer().getPlayer(args[1]);
|
||||||
|
|
||||||
|
if (isOffline(player, target2)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
teleport(target, target2);
|
||||||
|
|
||||||
|
player.sendMessage(CC.GREEN + "Teleported " + target.getName() + " to " + target2.getName() + ".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.BaseCommand;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class VanishCommand extends BaseCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public VanishCommand(LandCore plugin) {
|
||||||
|
super("vanish", Rank.TRIAL_MOD);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(CommandSender sender, String[] args) {
|
||||||
|
Player player = (Player) sender;
|
||||||
|
CoreProfile profile = plugin.getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
boolean vanished = !profile.isVanished();
|
||||||
|
|
||||||
|
profile.setVanished(vanished);
|
||||||
|
|
||||||
|
for (Player online : plugin.getServer().getOnlinePlayers()) {
|
||||||
|
plugin.getStaffManager().hideVanishedStaffFromPlayer(online);
|
||||||
|
}
|
||||||
|
|
||||||
|
player.sendMessage(vanished ? CC.GREEN + "Poof, you vanished." : CC.RED + "You're visible again.");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,59 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.BaseCommand;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.server.ServerSettings;
|
||||||
|
import me.devkevin.landcore.server.WhitelistMode;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.Server;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
public class WhitelistCommand extends BaseCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public WhitelistCommand(LandCore plugin) {
|
||||||
|
super("whitelist", Rank.ADMIN);
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("wl");
|
||||||
|
setUsage(CC.RED + "Usage: /whitelist <none|ranks|staff>");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(CommandSender sender, String[] args) {
|
||||||
|
if (args.length < 1) {
|
||||||
|
sender.sendMessage(usageMessage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ServerSettings settings = plugin.getServerSettings();
|
||||||
|
|
||||||
|
switch (args[0].toLowerCase()) {
|
||||||
|
case "none":
|
||||||
|
case "off":
|
||||||
|
settings.setServerWhitelistMode(WhitelistMode.NONE);
|
||||||
|
break;
|
||||||
|
case "ranks":
|
||||||
|
case "donors":
|
||||||
|
settings.setServerWhitelistMode(WhitelistMode.RANKS);
|
||||||
|
break;
|
||||||
|
case "staff":
|
||||||
|
case "on":
|
||||||
|
settings.setServerWhitelistMode(WhitelistMode.STAFF);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sender.sendMessage(CC.RED + "That's not a valid whitelist mode!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
WhitelistMode whitelistMode = settings.getServerWhitelistMode();
|
||||||
|
Server server = plugin.getServer();
|
||||||
|
|
||||||
|
if (whitelistMode == WhitelistMode.NONE) {
|
||||||
|
server.broadcastMessage(CC.GREEN + "The server is no longer whitelisted!");
|
||||||
|
} else {
|
||||||
|
whitelistMode.activate();
|
||||||
|
server.broadcastMessage(CC.RED + "The server is now whitelisted (Mode: " + whitelistMode + ").");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,79 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff.punish;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.BaseCommand;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.punishment.Punishment;
|
||||||
|
import me.devkevin.landcore.punishment.PunishmentType;
|
||||||
|
import me.devkevin.landcore.utils.Duration;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class BanCommand extends BaseCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public BanCommand(LandCore plugin) {
|
||||||
|
super("ban", Rank.MOD);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(CommandSender sender, String[] args) {
|
||||||
|
Player target = Bukkit.getPlayer(args[0]);
|
||||||
|
|
||||||
|
CoreProfile profile = plugin.getProfileManager().getProfile(target.getUniqueId());
|
||||||
|
|
||||||
|
if (args.length < 3) {
|
||||||
|
sender.sendMessage(CC.RED + "Usage: /ban <player> <duration> <reason> " + CC.GRAY + "[-s]" + CC.RED + ".");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (profile == null) {
|
||||||
|
sender.sendMessage(CC.RED + "Could no load " + target.getName() + " database. Contact with the developer.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Objects.requireNonNull(profile).getActiveBan() != null) {
|
||||||
|
sender.sendMessage(CC.RED + "That player is already banned.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
long duration = Duration.fromString(args[1]).getValue();
|
||||||
|
boolean silent = args[args.length - 1].equalsIgnoreCase("-s");
|
||||||
|
|
||||||
|
if (duration == -1) {
|
||||||
|
sender.sendMessage(CC.RED + "That duration is not valid.");
|
||||||
|
sender.sendMessage(CC.RED + "Example: [perm/1y1m1w1d]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String staffName = sender instanceof Player ? plugin.getProfileManager().getProfile(((Player) sender).getUniqueId()).getGrant().getRank().getColor() + sender.getName() : CC.D_RED + "Console";
|
||||||
|
|
||||||
|
Punishment punishment = new Punishment(UUID.randomUUID(), PunishmentType.BAN, System.currentTimeMillis(),
|
||||||
|
args[1], duration);
|
||||||
|
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
punishment.setAddedBy(((Player) sender).getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
profile.getPunishments().add(punishment);
|
||||||
|
profile.save(true);
|
||||||
|
|
||||||
|
punishment.broadcast(staffName, target, silent);
|
||||||
|
|
||||||
|
Player player = profile.getPlayer();
|
||||||
|
|
||||||
|
if (player != null) {
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
player.kickPlayer(punishment.getKickMessage());
|
||||||
|
}
|
||||||
|
}.runTask(LandCore.getInstance());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff.punish;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.punishment.menu.PunishmentsMenu;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 09/02/2023 @ 15:26
|
||||||
|
* CheckCommand / me.devkevin.landcore.commands.impl.staff.punish / LandCore
|
||||||
|
*/
|
||||||
|
public class CheckCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public CheckCommand(LandCore plugin) {
|
||||||
|
super("check", Rank.MOD);
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("c");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
OfflinePlayer target = Bukkit.getOfflinePlayer(args[0]);
|
||||||
|
|
||||||
|
CoreProfile profile = plugin.getProfileManager().getProfile(target.getUniqueId());
|
||||||
|
|
||||||
|
if (profile == null) {
|
||||||
|
player.sendMessage(CC.RED + "Could no load " + target.getName() + " database. Contact with the developer.");
|
||||||
|
}
|
||||||
|
|
||||||
|
new PunishmentsMenu(profile).openMenu(player);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,69 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff.punish;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.BaseCommand;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.punishment.Punishment;
|
||||||
|
import me.devkevin.landcore.punishment.PunishmentType;
|
||||||
|
import me.devkevin.landcore.utils.Duration;
|
||||||
|
import me.devkevin.landcore.utils.StringUtil;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import me.devkevin.landcore.utils.message.Messages;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class KickCommand extends BaseCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public KickCommand(LandCore plugin) {
|
||||||
|
super("kick", Rank.TRIAL_MOD);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(CommandSender sender, String[] args) {
|
||||||
|
Player target = Bukkit.getPlayer(args[0]);
|
||||||
|
|
||||||
|
CoreProfile profile = plugin.getProfileManager().getProfile(target.getUniqueId());
|
||||||
|
|
||||||
|
if (args.length < 2) {
|
||||||
|
sender.sendMessage(CC.RED + "Usage: /kick <player> <reason> " + CC.GRAY + "[-s]" + CC.RED + ".");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (profile == null) {
|
||||||
|
sender.sendMessage(CC.RED + "Could no load " + target.getName() + " database. Contact with the developer.");
|
||||||
|
}
|
||||||
|
|
||||||
|
String staffName = sender instanceof Player ? plugin.getProfileManager().getProfile(((Player) sender).getUniqueId()).getGrant().getRank().getColor() + sender.getName() : CC.D_RED + "Console";
|
||||||
|
|
||||||
|
|
||||||
|
Punishment punishment = new Punishment(target.getUniqueId(), PunishmentType.KICK, System.currentTimeMillis(),
|
||||||
|
args[1], -1);
|
||||||
|
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
punishment.setAddedBy(((Player) sender).getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
Objects.requireNonNull(profile).getPunishments().add(punishment);
|
||||||
|
profile.save(true);
|
||||||
|
|
||||||
|
punishment.broadcast(staffName, target, true);
|
||||||
|
|
||||||
|
Player player = profile.getPlayer();
|
||||||
|
|
||||||
|
if (player != null) {
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
player.kickPlayer(punishment.getKickMessage());
|
||||||
|
}
|
||||||
|
}.runTask(LandCore.getInstance());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,81 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff.punish;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.BaseCommand;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.punishment.Punishment;
|
||||||
|
import me.devkevin.landcore.punishment.PunishmentType;
|
||||||
|
import me.devkevin.landcore.utils.Duration;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class MuteCommand extends BaseCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public MuteCommand(LandCore plugin) {
|
||||||
|
super("mute", Rank.TRIAL_MOD);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(CommandSender sender, String[] args) {
|
||||||
|
Player target = Bukkit.getPlayer(args[0]);
|
||||||
|
|
||||||
|
CoreProfile profile = plugin.getProfileManager().getProfile(target.getUniqueId());
|
||||||
|
|
||||||
|
|
||||||
|
if (args.length < 3) {
|
||||||
|
sender.sendMessage(CC.RED + "Usage: /mute <player> <duration> <reason> " + CC.GRAY + "[-s]" + CC.RED + ".");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (profile == null) {
|
||||||
|
sender.sendMessage(CC.RED + "Could no load " + target.getName() + " database. Contact with the developer.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Objects.requireNonNull(profile).getActiveMute() != null) {
|
||||||
|
sender.sendMessage(CC.RED + "That player is already muted.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
long duration = Duration.fromString(args[1]).getValue();
|
||||||
|
boolean silent = args[args.length - 1].equalsIgnoreCase("-s");
|
||||||
|
|
||||||
|
if (duration == -1) {
|
||||||
|
sender.sendMessage(CC.RED + "That duration is not valid.");
|
||||||
|
sender.sendMessage(CC.RED + "Example: [perm/1y1m1w1d]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String staffName = sender instanceof Player ? plugin.getProfileManager().getProfile(((Player) sender).getUniqueId()).getGrant().getRank().getColor() + sender.getName() : CC.D_RED + "Console";
|
||||||
|
|
||||||
|
Punishment punishment = new Punishment(target.getUniqueId(), PunishmentType.MUTE, System.currentTimeMillis(),
|
||||||
|
args[1], duration);
|
||||||
|
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
punishment.setAddedBy(((Player) sender).getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
profile.getPunishments().add(punishment);
|
||||||
|
profile.save(true);
|
||||||
|
|
||||||
|
Player player = profile.getPlayer();
|
||||||
|
|
||||||
|
|
||||||
|
if (player != null) {
|
||||||
|
String senderName = sender instanceof Player ? plugin.getProfileManager().getProfiles().get(((Player) sender).getUniqueId()).getGrant().getRank().getColor() : CC.D_RED + "Console";
|
||||||
|
player.sendMessage(CC.RED + "You have been muted by " + senderName + CC.RED + " for: " + CC.YELLOW + args[1]);
|
||||||
|
|
||||||
|
if (!punishment.isPermanent()) {
|
||||||
|
player.sendMessage(CC.RED + "This mute will expire in " + CC.YELLOW + punishment.getTimeRemaining());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
punishment.broadcast(staffName, target, silent);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff.punish;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.BaseCommand;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.punishment.Punishment;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class UnbanCommand extends BaseCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public UnbanCommand(LandCore plugin) {
|
||||||
|
super("unban", Rank.MOD);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(CommandSender sender, String[] args) {
|
||||||
|
OfflinePlayer target = Bukkit.getOfflinePlayer(args[0]);
|
||||||
|
|
||||||
|
if (args.length < 2) {
|
||||||
|
sender.sendMessage(CC.RED + "Usage: /unban <player> <reason> " + CC.GRAY + "[-s]" + CC.RED + ".");
|
||||||
|
}
|
||||||
|
|
||||||
|
CoreProfile profile = plugin.getProfileManager().getProfile(target.getUniqueId());
|
||||||
|
|
||||||
|
if (profile == null) {
|
||||||
|
sender.sendMessage(CC.RED + "Could no load " + target.getName() + " database. Contact with the developer.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((profile != null ? profile.getActiveBan() : null) == null) {
|
||||||
|
sender.sendMessage(CC.RED + "That player is not banned.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean silent = args[args.length - 1].equalsIgnoreCase("-s");
|
||||||
|
|
||||||
|
String staffName = sender instanceof Player ? plugin.getProfileManager().getProfile(((Player) sender).getUniqueId()).getGrant().getRank().getColor() + sender.getName() : CC.D_RED + "Console";
|
||||||
|
|
||||||
|
Punishment punishment = profile.getActiveBan();
|
||||||
|
punishment.setPardonedAt(System.currentTimeMillis());
|
||||||
|
punishment.setPardonedReason(args[1]);
|
||||||
|
punishment.setPardoned(true);
|
||||||
|
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
punishment.setPardonedBy(((Player) sender).getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
profile.save(true);
|
||||||
|
|
||||||
|
punishment.broadcast(staffName, target.getPlayer(), silent);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,57 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff.punish;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.BaseCommand;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.punishment.Punishment;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class UnmuteCommand extends BaseCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public UnmuteCommand(LandCore plugin) {
|
||||||
|
super("unmute", Rank.MOD);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(CommandSender sender, String[] args) {
|
||||||
|
Player target = Bukkit.getPlayer(args[0]);
|
||||||
|
|
||||||
|
if (args.length < 2) {
|
||||||
|
sender.sendMessage(CC.RED + "Usage: /unmute <player> <reason> " + CC.GRAY + "[-s]" + CC.RED + ".");
|
||||||
|
}
|
||||||
|
|
||||||
|
CoreProfile profile = plugin.getProfileManager().getProfile(target.getUniqueId());
|
||||||
|
|
||||||
|
if (profile == null) {
|
||||||
|
sender.sendMessage(CC.RED + "Could no load " + target.getName() + " database. Contact with the developer.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((profile != null ? profile.getActiveMute() : null) == null) {
|
||||||
|
sender.sendMessage(CC.RED + "That player is not muted.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean silent = args[args.length - 1].equalsIgnoreCase("-s");
|
||||||
|
|
||||||
|
String staffName = sender instanceof Player ? plugin.getProfileManager().getProfile(((Player) sender).getUniqueId()).getGrant().getRank().getColor() + sender.getName() : CC.D_RED + "Console";
|
||||||
|
|
||||||
|
Punishment punishment = profile.getActiveMute();
|
||||||
|
punishment.setPardonedAt(System.currentTimeMillis());
|
||||||
|
punishment.setPardonedReason(args[1]);
|
||||||
|
punishment.setPardoned(true);
|
||||||
|
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
punishment.setPardonedBy(((Player) sender).getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
profile.save(true);
|
||||||
|
|
||||||
|
punishment.broadcast(staffName, target, silent);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,67 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.staff.punish;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.BaseCommand;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.punishment.Punishment;
|
||||||
|
import me.devkevin.landcore.punishment.PunishmentType;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 09/02/2023 @ 15:52
|
||||||
|
* WarnCommand / me.devkevin.landcore.commands.impl.staff.punish / LandCore
|
||||||
|
*/
|
||||||
|
public class WarnCommand extends BaseCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public WarnCommand(LandCore plugin) {
|
||||||
|
super("warn", Rank.TRIAL_MOD);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(CommandSender sender, String[] args) {
|
||||||
|
Player target = Bukkit.getPlayer(args[0]);
|
||||||
|
|
||||||
|
if (args.length < 2) {
|
||||||
|
sender.sendMessage(CC.RED + "Usage: /warn <player> <reason> " + CC.GRAY + "[-s]" + CC.RED + ".");
|
||||||
|
}
|
||||||
|
|
||||||
|
CoreProfile profile = plugin.getProfileManager().getProfile(target.getUniqueId());
|
||||||
|
|
||||||
|
if (profile == null) {
|
||||||
|
sender.sendMessage(CC.RED + "Could no load " + target.getName() + " database. Contact with the developer.");
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean silent = args[args.length - 1].equalsIgnoreCase("-s");
|
||||||
|
|
||||||
|
String staffName = sender instanceof Player ? plugin.getProfileManager().getProfile(((Player) sender).getUniqueId()).getGrant().getRank().getColor() + sender.getName() : CC.D_RED + "Console";
|
||||||
|
|
||||||
|
Punishment punishment = new Punishment(target.getUniqueId(), PunishmentType.WARN, System.currentTimeMillis(),
|
||||||
|
args[1], -1);
|
||||||
|
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
punishment.setAddedBy(((Player) sender).getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
Objects.requireNonNull(profile).getPunishments().add(punishment);
|
||||||
|
profile.save(true);
|
||||||
|
|
||||||
|
Player player = profile.getPlayer();
|
||||||
|
|
||||||
|
if (player != null) {
|
||||||
|
String senderName = sender instanceof Player ? plugin.getProfileManager().getProfiles().get(((Player) sender).getUniqueId()).getGrant().getRank().getColor() : CC.D_RED + "Console";
|
||||||
|
player.sendMessage(CC.RED + "You have been warned by " + senderName + CC.RED + " for: " + CC.YELLOW + args[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
punishment.broadcast(staffName, target, silent);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.toggle;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class ToggleGlobalChat extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public ToggleGlobalChat(LandCore plugin) {
|
||||||
|
super("toggleglobalchat");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("togglechat", "tgc");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
CoreProfile profile = plugin.getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
boolean enabled = !profile.isGlobalChatEnabled();
|
||||||
|
|
||||||
|
profile.setGlobalChatEnabled(enabled);
|
||||||
|
player.sendMessage(enabled ? CC.GREEN + "Global chat enabled." : CC.RED + "Global chat disabled.");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.toggle;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class ToggleMessagesCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public ToggleMessagesCommand(LandCore plugin) {
|
||||||
|
super("togglemessages");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("tpm");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
CoreProfile profile = plugin.getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
boolean messaging = !profile.isMessaging();
|
||||||
|
|
||||||
|
profile.setMessaging(messaging);
|
||||||
|
player.sendMessage(messaging ? CC.GREEN + "Messages enabled." : CC.RED + "Messages disabled.");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
package me.devkevin.landcore.commands.impl.toggle;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class ToggleSoundsCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public ToggleSoundsCommand(LandCore plugin) {
|
||||||
|
super("togglesounds");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("sounds", "ts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
CoreProfile profile = plugin.getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
boolean playingSounds = !profile.isPlayingSounds();
|
||||||
|
|
||||||
|
profile.setPlayingSounds(playingSounds);
|
||||||
|
player.sendMessage(playingSounds ? CC.GREEN + "Sounds enabled." : CC.RED + "Sounds disabled.");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,67 @@
|
||||||
|
package me.devkevin.landcore.disguise.commands;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.BaseCommand;
|
||||||
|
import me.devkevin.landcore.disguise.manager.DisguiseManager;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import xyz.haoshoku.nick.api.NickAPI;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 09/02/2023 @ 18:58
|
||||||
|
* DisguiseCommand / me.devkevin.landcore.disguise / LandCore
|
||||||
|
*/
|
||||||
|
public class DisguiseCommand extends BaseCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public DisguiseCommand(LandCore plugin) {
|
||||||
|
super("disguise", Rank.TRIAL_MOD); // temp rank for test
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(CommandSender sender, String[] args) {
|
||||||
|
Player player = (Player) sender;
|
||||||
|
|
||||||
|
if ("random".equals(args[0])) {
|
||||||
|
String disguiseName;
|
||||||
|
String disguiseSkin = DisguiseManager.generateSkin().split(":")[0];
|
||||||
|
|
||||||
|
if (DisguiseManager.nickData.get(player) != null) {
|
||||||
|
disguiseName = DisguiseManager.nickData.get(player);
|
||||||
|
} else {
|
||||||
|
disguiseName = DisguiseManager.generate();
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin.getDisguiseManager().setPlayerDisguise(player, disguiseName, disguiseSkin);
|
||||||
|
|
||||||
|
// first disguise a player and then after 2 sec open the rank menu
|
||||||
|
plugin.getServer().getScheduler().runTaskLater(plugin, () -> {
|
||||||
|
// check is player in nicked yet so we won't get errors
|
||||||
|
if (NickAPI.isNicked(player)) {
|
||||||
|
player.openInventory(this.plugin.getDisguiseMenu().getRankMenu().getCurrentPage());
|
||||||
|
}
|
||||||
|
}, 20L);
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (NickAPI.nickExists(args[0])) {
|
||||||
|
player.sendMessage(CC.RED + "That name is already used.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin.getDisguiseManager().setPlayerDisguise(player, args[0], args[1]);
|
||||||
|
|
||||||
|
// first disguise a player and then after 2 sec open the rank menu
|
||||||
|
plugin.getServer().getScheduler().runTaskLater(plugin, () -> {
|
||||||
|
// check is player in nicked yet so we won't get errors
|
||||||
|
if (NickAPI.isNicked(player)) {
|
||||||
|
player.openInventory(this.plugin.getDisguiseMenu().getRankMenu().getCurrentPage());
|
||||||
|
}
|
||||||
|
}, 20L);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
package me.devkevin.landcore.disguise.commands;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.BaseCommand;
|
||||||
|
import me.devkevin.landcore.managers.PlayerManager;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import xyz.haoshoku.nick.NickPlugin;
|
||||||
|
import xyz.haoshoku.nick.api.NickAPI;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 10/02/2023 @ 0:23
|
||||||
|
* UndisguiseCommand / me.devkevin.landcore.disguise / LandCore
|
||||||
|
*/
|
||||||
|
public class UndisguiseCommand extends BaseCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public UndisguiseCommand(LandCore plugin) {
|
||||||
|
super("undisguise", Rank.TRIAL_MOD); // temp rank for test
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
Player player = (Player) sender;
|
||||||
|
|
||||||
|
CoreProfile coreProfile = plugin.getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
|
||||||
|
if (NickAPI.isNicked(player)) {
|
||||||
|
NickAPI.resetNick(player);
|
||||||
|
NickAPI.resetSkin(player);
|
||||||
|
NickAPI.resetGameProfileName(player);
|
||||||
|
NickAPI.resetUniqueId(player);
|
||||||
|
NickAPI.refreshPlayer(player);
|
||||||
|
NickAPI.refreshPlayerSync(player);
|
||||||
|
|
||||||
|
coreProfile.setDisguiseRank(null); // when player un disguise we reset the rank
|
||||||
|
|
||||||
|
player.setDisplayName(player.getName());
|
||||||
|
player.setPlayerListName(player.getName());
|
||||||
|
|
||||||
|
player.sendMessage(CC.SECONDARY + "You've been " + CC.RED + "undisguised" + CC.SECONDARY + " and reset to your default skin.");
|
||||||
|
} else {
|
||||||
|
player.sendMessage(CC.RED + "You aren't currently disguised!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,265 @@
|
||||||
|
package me.devkevin.landcore.disguise.manager;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.nametag.impl.InternalNametag;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import net.minecraft.server.v1_8_R3.EntityPlayer;
|
||||||
|
import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo;
|
||||||
|
import net.minecraft.server.v1_8_R3.PacketPlayOutRespawn;
|
||||||
|
import net.minecraft.server.v1_8_R3.WorldSettings;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
import xyz.haoshoku.nick.NickPlugin;
|
||||||
|
import xyz.haoshoku.nick.api.NickAPI;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 09/02/2023 @ 18:53
|
||||||
|
* DisguiseManager / me.devkevin.landcore.disguise / LandCore
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
public class DisguiseManager {
|
||||||
|
public static HashMap<Player, String> nickData = new HashMap<>();
|
||||||
|
|
||||||
|
private static final List<String> skinNames = Arrays.asList("_rsu:Killer", "E_Girl:E-girl", "MHF_Sheep:Sheep Man", "BackupDancer:L", "Arro:Arabian", "bennyknight:Badman", "MHF_Herobrine:Herobrine",
|
||||||
|
"MHF_Villager:Villager", "CocoDeMedellin:Black Goku", "SheAGoldDigger:Blue Goku", "MHF_Enderman:Enderman", "Marcel:Marcel", "Zwergoor:Emoji",
|
||||||
|
"HikakinGames:Youtuber", "loudoggydog3010:Juice Wrld", "Reinstallation:Rambo Chicken", "SolluxCaptor:Nezuko", "DevKevin:DevKevin", "Brandy:Brandy",
|
||||||
|
"Grief:Grief", "Nimble:Nimble", "fangirl:fangirl", "Pokemon:Pokemon", "icy:icy", "Magista80:Magista80");
|
||||||
|
|
||||||
|
|
||||||
|
private static final List<String> shortWords = Arrays.asList("About", "Active", "Admit", "Advise", "Again", "After", "Agent", "Alive", "Alone", "Beach", "Basket", "Basic", "Bath", "Battle",
|
||||||
|
"Bean", "Beat", "Bed", "Become", "Begin", "Before", "Beer", "Behind", "Blade", "Black", "Blue", "Bomb", "Brush", "Build", "Bunch", "Button", "Biz", "Busy",
|
||||||
|
"Box", "Boy", "Break", "Best", "Better", "Cake", "Camera", "Campus", "Cap", "Card", "Care", "Case", "Catch", "Center", "Chain", "Chair", "Chara", "Charge",
|
||||||
|
"Chase", "Cheap", "Cheese", "Check", "Close", "Choose", "Christ", "Circle", "Dad", "Dance", "Dark", "Data", "Dead", "Defend", "Desert", "Desk", "Device",
|
||||||
|
"Detect", "Dinner", "Direct", "Dirt", "Dirty", "Doctor", "Down", "Drama", "Draw", "Dream", "Drop", "Earth", "Eat", "Easy", "Editor", "Effect", "Eight",
|
||||||
|
"Elect", "Effort", "Emote", "Enter", "Engine", "Enemy", "Empty", "Entry", "Error", "Enough", "Every", "Exact", "Eye", "Expert", "Face", "Fact", "Fade",
|
||||||
|
"Fail", "Family", "Famous", "Farmer", "Father", "Fight", "Find", "Finger", "Fire", "First", "Fit", "Fix", "Fish", "Field", "Floor", "Focus", "Fly",
|
||||||
|
"Forest", "Force", "Frame", "Uber");
|
||||||
|
|
||||||
|
private static final List<String> longWords = Arrays.asList("Actually", "Aircraft", "Backbone", "Blooming", "Brightly", "Building", "Camellia", "Cardinal", "Careless", "Chemical", "Cheerful",
|
||||||
|
"Civilian", "Daughter", "Demolish", "Detector", "Disaster", "Disposal", "Electron", "Elective", "Engaging", "Enormous", "Erection", "Evidence", "Exertion",
|
||||||
|
"External", "Faithful", "Familiar", "Favorite", "Fearless", "Fixation", "Fragment", "Generous", "Grateful", "Grievous", "Hydrogen", "Horrible", "Ignorant",
|
||||||
|
"Industry", "Majority", "Military", "Mountain", "Mythical", "Normally", "Numerous", "Organism", "Overview", "Pacifist", "Pentagon", "Perilous", "Physical",
|
||||||
|
"Precious", "Prestige", "Puzzling", "Railroad", "Reckless");
|
||||||
|
|
||||||
|
private static final List<String> conjuctions = Arrays.asList("The", "Da", "And", "Of", "By", "Is", "El", "Its", "MC", "GANGMEMBER", "xXx", "_", "__");
|
||||||
|
|
||||||
|
private static final List<String> onlyNames = Arrays.asList("Ibirawyr", "Niniel", "Celahan", "Gwysien", "Figovudd", "Zathiel", "Adwiawyth", "Nydinia", "Laraeb", "Eowendasa", "Grendakin",
|
||||||
|
"Werradia", "Cauth", "Umigolian", "Tardond", "Dwearia", "Yeiwyn", "Adraclya", "Zaev", "Thabeth", "Chuven", "Zaredon", "Bob", "Robert", "Johnny", "Joy",
|
||||||
|
"Matthew", "Michael", "Jacob", "Joshua", "Daniel", "Christopher", "Andrew", "Ethan", "Joseph", "William", "Anthony", "David", "Alexander", "Nicholas",
|
||||||
|
"Ryan", "Tyler", "James", "John", "Jonathan", "Noah", "Brandon", "Christian", "Dylan", "Samuel", "Benjamin", "Nathan", "Zachary", "Logan", "Justin",
|
||||||
|
"Gabriel", "Emily", "Madison", "Emma", "Olivia", "Hannah", "Abigail", "Isabella", "Samantha", "Elizabeth", "Ashley", "Alexis", "Sarah", "Sophia",
|
||||||
|
"Alyssa", "Grace", "Ava", "Taylor", "Brianna", "Lauren", "Chloe", "Natalie", "Kayla", "Jessica", "Anna", "Victoria", "Mia", "Hailey", "Sydney", "Jasmine");
|
||||||
|
|
||||||
|
private static final List<String> japaneseNames = Arrays.asList("Ai", "Aya", "Ayako", "Itsuki", "Eita", "Eiko", "Kanta", "Kaito", "Kenta", "Kento", "Kouki", "Kouta", "Kouya", "Kou",
|
||||||
|
"Keito", "Keita", "Saya", "Sayako", "Sara", "Sizuki", "Sizuko", "Sizuno", "Sizuya", "Suzuka", "Suzuki", "Suzuko", "Sumi", "Seiya", "Souta", "Souya",
|
||||||
|
"Sou", "Taichi", "Takuya", "Tatsuki", "Chitose", "Tutomu", "Tumuya", "Tetsuya", "Tetsuto", "Tekuto", "Touya", "Tomi", "Nami", "Nao", "Neo", "Notomi",
|
||||||
|
"Haruya", "Harumi", "Haruto", "Hitomi", "Hitoshi", "Fuuta", "Fuyuki", "Fuuto", "Mami", "Maya", "Mai", "Masaya", "Masahiro", "Masato", "Misaki", "Mitsuki",
|
||||||
|
"Mutsuki", "Mei", "Yae", "Yuuto", "Yuuta", "Yuuya", "Youta", "Youki");
|
||||||
|
|
||||||
|
|
||||||
|
public static String generate() {
|
||||||
|
Random random = new Random();
|
||||||
|
return generate(NicknamePattern.values()[random.nextInt(NicknamePattern.values().length)]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String generateSkin() {
|
||||||
|
Random random = new Random();
|
||||||
|
|
||||||
|
return skinNames.get(random.nextInt(skinNames.size()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String generate(NicknamePattern pattern) {
|
||||||
|
|
||||||
|
String disguiseNickname = null;
|
||||||
|
|
||||||
|
if (pattern.equals(NicknamePattern.NameWithNumbers)) {
|
||||||
|
Random random = new Random();
|
||||||
|
String name = onlyNames.get(random.nextInt(onlyNames.size()));
|
||||||
|
if (name.length() <= 10 && chance(50.0)) {
|
||||||
|
disguiseNickname = name + "_" + random.nextInt(9999);
|
||||||
|
} else {
|
||||||
|
disguiseNickname = name + random.nextInt(9999);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pattern.equals(NicknamePattern.TwoShortsWithConjunction)) {
|
||||||
|
pattern = NicknamePattern.JapaneseNameWithBirth;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pattern.equals(NicknamePattern.JapaneseNameWithBirth)) {
|
||||||
|
Random random = new Random();
|
||||||
|
String name = japaneseNames.get(random.nextInt(japaneseNames.size()));
|
||||||
|
String birth = random.nextInt(12) + 1 + String.valueOf(random.nextInt(30) + 1);
|
||||||
|
if (chance(50.0)) {
|
||||||
|
disguiseNickname = name + "_" + birth;
|
||||||
|
} else {
|
||||||
|
disguiseNickname = name + birth;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pattern.equals(NicknamePattern.LongWithNumbers)) {
|
||||||
|
Random random = new Random();
|
||||||
|
String name = longWords.get(random.nextInt(longWords.size()));
|
||||||
|
if (chance(50.0)) {
|
||||||
|
disguiseNickname = name + "_" + random.nextInt(9999);
|
||||||
|
} else {
|
||||||
|
disguiseNickname = name + random.nextInt(9999);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pattern.equals(NicknamePattern.ShortWithConjunction)) {
|
||||||
|
Random random = new Random();
|
||||||
|
String name = conjuctions.get(random.nextInt(conjuctions.size()));
|
||||||
|
String secondName = shortWords.get(random.nextInt(shortWords.size()));
|
||||||
|
if (chance(50.0)) {
|
||||||
|
disguiseNickname = name + "_" + secondName;
|
||||||
|
} else {
|
||||||
|
disguiseNickname = name + secondName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pattern.equals(NicknamePattern.ShortAndLong)) {
|
||||||
|
Random random = new Random();
|
||||||
|
String name = shortWords.get(random.nextInt(shortWords.size()));
|
||||||
|
String secondName = longWords.get(random.nextInt(longWords.size()));
|
||||||
|
disguiseNickname = name + secondName;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (chance(50.0)) {
|
||||||
|
assert disguiseNickname != null;
|
||||||
|
disguiseNickname = disguiseNickname.toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
return disguiseNickname;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean chance(double percent) {
|
||||||
|
return Math.random() < percent / 100.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPlayerDisguise(Player player, String disguiseName, String disguiseSkin) {
|
||||||
|
LandCore.getInstance().getStaffManager().messageStaff(Rank.TRIAL_MOD, CC.GRAY + "[Staff] " +
|
||||||
|
LandCore.getInstance().getProfileManager().getProfile(player.getUniqueId()).getGrant().getRank().getColor() +
|
||||||
|
player.getName() + CC.GRAY + " has disguise as " + CC.PRIMARY + disguiseName
|
||||||
|
);
|
||||||
|
|
||||||
|
NickAPI.nick(player, disguiseName);
|
||||||
|
NickAPI.setGameProfileName(player, disguiseName);
|
||||||
|
NickAPI.setUniqueId(player, disguiseName);
|
||||||
|
|
||||||
|
NickAPI.setSkin(player, disguiseSkin);
|
||||||
|
NickAPI.refreshPlayer(player);
|
||||||
|
|
||||||
|
|
||||||
|
Bukkit.getScheduler().runTask(LandCore.getInstance(), () -> {
|
||||||
|
for (Player player1 : Bukkit.getOnlinePlayers()) {
|
||||||
|
player1.hidePlayer(player);
|
||||||
|
player1.showPlayer(player);
|
||||||
|
|
||||||
|
final EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
|
||||||
|
|
||||||
|
entityPlayer.playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER, entityPlayer));
|
||||||
|
entityPlayer.playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, entityPlayer));
|
||||||
|
entityPlayer.playerConnection.sendPacket(new PacketPlayOutRespawn(
|
||||||
|
entityPlayer.getWorld().worldProvider.getDimension(),
|
||||||
|
entityPlayer.getWorld().worldData.getDifficulty(),
|
||||||
|
entityPlayer.getWorld().worldData.getType(),
|
||||||
|
WorldSettings.EnumGamemode.valueOf(entityPlayer.getBukkitEntity().getGameMode().name())
|
||||||
|
));
|
||||||
|
|
||||||
|
updateTablist();
|
||||||
|
updateCache(player);
|
||||||
|
|
||||||
|
player.setDisplayName(player.getName());
|
||||||
|
player.setPlayerListName(player.getName());
|
||||||
|
|
||||||
|
InternalNametag.reloadPlayer(player);
|
||||||
|
InternalNametag.reloadOthersFor(player);
|
||||||
|
|
||||||
|
NickAPI.refreshPlayer(player);
|
||||||
|
NickAPI.refreshPlayerSync(player);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
player.sendMessage(CC.SECONDARY + "You've disguised as " + CC.PRIMARY + disguiseName + CC.GRAY + " (with a random skin)" + CC.SECONDARY + ".");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isNameUsed(String[] args, Player player) {
|
||||||
|
for (Player p : LandCore.getInstance().getServer().getOnlinePlayers()) {
|
||||||
|
if (p.getName().equalsIgnoreCase(args[0])) {
|
||||||
|
player.sendMessage(CC.RED + "That name is already used.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make it check if the name contains a filtered word in between, before or after the text
|
||||||
|
boolean isFiltered(String[] args, Player player) {
|
||||||
|
List<String> filteredWord = LandCore.getInstance().getConfig().getStringList("FILTERED-WORDS");
|
||||||
|
if (filteredWord.contains(args[0].toLowerCase())) {
|
||||||
|
player.sendMessage(CC.RED + "You can't use that name because it contains a filtered word in it!");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateTablist() {
|
||||||
|
final List<EntityPlayer> playerList = new ArrayList<>(net.minecraft.server.v1_8_R3.MinecraftServer.getServer().getPlayerList().players);
|
||||||
|
final List<EntityPlayer> finalList = playerList.stream()
|
||||||
|
.sorted(Comparator.comparingInt(potPlayer -> -(LandCore.getInstance().getProfileManager().getProfile(potPlayer.getUniqueID()).getDisguiseRank() != null ? LandCore.getInstance().getProfileManager().getProfile(potPlayer.getUniqueID()).getDisguiseRank().getWeight() : LandCore.getInstance().getProfileManager().getProfile(potPlayer.getUniqueID()).getGrant().getRank().getWeight())))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
try {
|
||||||
|
final Object list = net.minecraft.server.v1_8_R3.MinecraftServer.getServer().getPlayerList().getClass()
|
||||||
|
.getMethod("playerList", ((Class<?>[]) null))
|
||||||
|
.invoke(net.minecraft.server.v1_8_R3.MinecraftServer.getServer().getPlayerList());
|
||||||
|
final Class<?> playerListClass = list.getClass().getSuperclass();
|
||||||
|
final Field declaredField = playerListClass.getDeclaredField("players");
|
||||||
|
|
||||||
|
declaredField.set(list, finalList);
|
||||||
|
} catch (Exception ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateCache(Player player) {
|
||||||
|
final List<EntityPlayer> playerList = new ArrayList<>(net.minecraft.server.v1_8_R3.MinecraftServer.getServer().getPlayerList().players);
|
||||||
|
final EntityPlayer entityPlayer = playerList.stream()
|
||||||
|
.filter(entityPlayer1 -> entityPlayer1.getUniqueID().equals(player.getUniqueId()))
|
||||||
|
.findFirst().orElse(null);
|
||||||
|
|
||||||
|
playerList.remove(entityPlayer);
|
||||||
|
playerList.add(((CraftPlayer) player).getHandle());
|
||||||
|
|
||||||
|
try {
|
||||||
|
final Object list = net.minecraft.server.v1_8_R3.MinecraftServer.getServer().getPlayerList().getClass()
|
||||||
|
.getMethod("playerList", ((Class<?>[]) null))
|
||||||
|
.invoke(net.minecraft.server.v1_8_R3.MinecraftServer.getServer().getPlayerList());
|
||||||
|
final Class<?> playerListClass = list.getClass().getSuperclass();
|
||||||
|
final Field declaredField = playerListClass.getDeclaredField("players");
|
||||||
|
|
||||||
|
declaredField.set(list, playerList);
|
||||||
|
} catch (Exception ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum NicknamePattern {
|
||||||
|
ShortAndLong,
|
||||||
|
NameWithNumbers,
|
||||||
|
LongWithNumbers,
|
||||||
|
ShortWithConjunction,
|
||||||
|
JapaneseNameWithBirth,
|
||||||
|
TwoShortsWithConjunction
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,252 @@
|
||||||
|
package me.devkevin.landcore.disguise.menu;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.nametag.impl.InternalNametag;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.rank.Rank;
|
||||||
|
import me.devkevin.landcore.utils.inventory.InventoryUI;
|
||||||
|
import me.devkevin.landcore.utils.item.ItemBuilder;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import xyz.haoshoku.nick.api.NickAPI;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 09/02/2023 @ 19:00
|
||||||
|
* DisguiseMenu / me.devkevin.landcore.disguise / LandCore
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
public class DisguiseMenu {
|
||||||
|
private final InventoryUI rankMenu = new InventoryUI(CC.GRAY + "Pick a Rank -> (Disguise)", 1);
|
||||||
|
|
||||||
|
public DisguiseMenu() {
|
||||||
|
setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setup() {
|
||||||
|
this.rankMenu.setItem(0, new InventoryUI.AbstractClickableItem(
|
||||||
|
new ItemBuilder(Material.LEATHER_CHESTPLATE).color(Color.BLUE)
|
||||||
|
.name(CC.BLUE + "✦" + CC.GREEN + "Basic")
|
||||||
|
.lore(Arrays.asList(
|
||||||
|
"",
|
||||||
|
CC.GRAY + CC.B + "In disguise mode",
|
||||||
|
CC.GRAY + CC.B + "you can only choose",
|
||||||
|
CC.GRAY + CC.B + "donor ranks or member.",
|
||||||
|
""
|
||||||
|
))
|
||||||
|
.build()) {
|
||||||
|
@Override
|
||||||
|
public void onClick(InventoryClickEvent event) {
|
||||||
|
Player player = (Player)event.getWhoClicked();
|
||||||
|
|
||||||
|
CoreProfile coreProfile = LandCore.getInstance().getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
|
||||||
|
coreProfile.setDisguiseRank(Rank.BASIC);
|
||||||
|
player.sendMessage(CC.GREEN + "You has choose " + CC.BLUE + "✦" + CC.GREEN + "Basic" + CC.GREEN + " rank.");
|
||||||
|
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
Bukkit.getScheduler().runTask(LandCore.getInstance(), () -> {
|
||||||
|
for (Player player1 : Bukkit.getOnlinePlayers()) {
|
||||||
|
player1.hidePlayer(player);
|
||||||
|
player1.showPlayer(player);
|
||||||
|
|
||||||
|
LandCore.getInstance().getDisguiseManager().updateTablist();
|
||||||
|
|
||||||
|
InternalNametag.reloadPlayer(player);
|
||||||
|
InternalNametag.reloadOthersFor(player);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.rankMenu.setItem(1, new InventoryUI.AbstractClickableItem(
|
||||||
|
new ItemBuilder(Material.LEATHER_CHESTPLATE).color(Color.YELLOW)
|
||||||
|
.name(CC.YELLOW + "✯" + CC.GOLD + "Gold")
|
||||||
|
.lore(Arrays.asList(
|
||||||
|
"",
|
||||||
|
CC.GRAY + CC.B + "In disguise mode",
|
||||||
|
CC.GRAY + CC.B + "you can only choose",
|
||||||
|
CC.GRAY + CC.B + "donor ranks or member.",
|
||||||
|
""
|
||||||
|
))
|
||||||
|
.build()) {
|
||||||
|
@Override
|
||||||
|
public void onClick(InventoryClickEvent event) {
|
||||||
|
Player player = (Player)event.getWhoClicked();
|
||||||
|
|
||||||
|
CoreProfile coreProfile = LandCore.getInstance().getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
|
||||||
|
coreProfile.setDisguiseRank(Rank.GOLD);
|
||||||
|
player.sendMessage(CC.GREEN + "You has choose " + CC.YELLOW + "✯" + CC.GOLD + "Gold" + CC.GREEN + " rank.");
|
||||||
|
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
Bukkit.getScheduler().runTask(LandCore.getInstance(), () -> {
|
||||||
|
for (Player player1 : Bukkit.getOnlinePlayers()) {
|
||||||
|
player1.hidePlayer(player);
|
||||||
|
player1.showPlayer(player);
|
||||||
|
|
||||||
|
LandCore.getInstance().getDisguiseManager().updateTablist();
|
||||||
|
|
||||||
|
InternalNametag.reloadPlayer(player);
|
||||||
|
InternalNametag.reloadOthersFor(player);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.rankMenu.setItem(2, new InventoryUI.AbstractClickableItem(
|
||||||
|
new ItemBuilder(Material.LEATHER_CHESTPLATE).color(Color.LIME)
|
||||||
|
.name(CC.GREEN + "✵" + CC.DARK_GREEN + "Emerald")
|
||||||
|
.lore(Arrays.asList(
|
||||||
|
"",
|
||||||
|
CC.GRAY + CC.B + "In disguise mode",
|
||||||
|
CC.GRAY + CC.B + "you can only choose",
|
||||||
|
CC.GRAY + CC.B + "donor ranks or member.",
|
||||||
|
""
|
||||||
|
))
|
||||||
|
.build()) {
|
||||||
|
@Override
|
||||||
|
public void onClick(InventoryClickEvent event) {
|
||||||
|
Player player = (Player)event.getWhoClicked();
|
||||||
|
|
||||||
|
CoreProfile coreProfile = LandCore.getInstance().getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
|
||||||
|
coreProfile.setDisguiseRank(Rank.EMERALD);
|
||||||
|
player.sendMessage(CC.GREEN + "You has choose " + CC.GREEN + "✵" + CC.DARK_GREEN + "Emerald" + CC.GREEN + " rank.");
|
||||||
|
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
Bukkit.getScheduler().runTask(LandCore.getInstance(), () -> {
|
||||||
|
for (Player player1 : Bukkit.getOnlinePlayers()) {
|
||||||
|
player1.hidePlayer(player);
|
||||||
|
player1.showPlayer(player);
|
||||||
|
|
||||||
|
LandCore.getInstance().getDisguiseManager().updateTablist();
|
||||||
|
|
||||||
|
InternalNametag.reloadPlayer(player);
|
||||||
|
InternalNametag.reloadOthersFor(player);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.rankMenu.setItem(3, new InventoryUI.AbstractClickableItem(
|
||||||
|
new ItemBuilder(Material.LEATHER_CHESTPLATE).color(Color.AQUA)
|
||||||
|
.name(CC.AQUA + "❇" + CC.D_AQUA + "Diamond")
|
||||||
|
.lore(Arrays.asList(
|
||||||
|
"",
|
||||||
|
CC.GRAY + CC.B + "In disguise mode",
|
||||||
|
CC.GRAY + CC.B + "you can only choose",
|
||||||
|
CC.GRAY + CC.B + "donor ranks or member.",
|
||||||
|
""
|
||||||
|
))
|
||||||
|
.build()) {
|
||||||
|
@Override
|
||||||
|
public void onClick(InventoryClickEvent event) {
|
||||||
|
Player player = (Player)event.getWhoClicked();
|
||||||
|
|
||||||
|
CoreProfile coreProfile = LandCore.getInstance().getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
|
||||||
|
coreProfile.setDisguiseRank(Rank.DIAMOND);
|
||||||
|
player.sendMessage(CC.GREEN + "You has choose " + CC.AQUA + "❇" + CC.D_AQUA + "Diamond" + CC.GREEN + " rank.");
|
||||||
|
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
Bukkit.getScheduler().runTask(LandCore.getInstance(), () -> {
|
||||||
|
for (Player player1 : Bukkit.getOnlinePlayers()) {
|
||||||
|
player1.hidePlayer(player);
|
||||||
|
player1.showPlayer(player);
|
||||||
|
|
||||||
|
LandCore.getInstance().getDisguiseManager().updateTablist();
|
||||||
|
|
||||||
|
InternalNametag.reloadPlayer(player);
|
||||||
|
InternalNametag.reloadOthersFor(player);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.rankMenu.setItem(4, new InventoryUI.AbstractClickableItem(
|
||||||
|
new ItemBuilder(Material.LEATHER_CHESTPLATE).color(Color.ORANGE)
|
||||||
|
.name(CC.GOLD + "❊" + CC.YELLOW + "LOL")
|
||||||
|
.lore(Arrays.asList(
|
||||||
|
"",
|
||||||
|
CC.GRAY + CC.B + "In disguise mode",
|
||||||
|
CC.GRAY + CC.B + "you can only choose",
|
||||||
|
CC.GRAY + CC.B + "donor ranks or member.",
|
||||||
|
""
|
||||||
|
))
|
||||||
|
.build()) {
|
||||||
|
@Override
|
||||||
|
public void onClick(InventoryClickEvent event) {
|
||||||
|
Player player = (Player)event.getWhoClicked();
|
||||||
|
|
||||||
|
CoreProfile coreProfile = LandCore.getInstance().getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
|
||||||
|
coreProfile.setDisguiseRank(Rank.LOL);
|
||||||
|
player.sendMessage(CC.GREEN + "You has choose " + CC.GOLD + "❊" + CC.YELLOW + "LOL" + CC.GREEN + " rank.");
|
||||||
|
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
Bukkit.getScheduler().runTask(LandCore.getInstance(), () -> {
|
||||||
|
for (Player player1 : Bukkit.getOnlinePlayers()) {
|
||||||
|
player1.hidePlayer(player);
|
||||||
|
player1.showPlayer(player);
|
||||||
|
|
||||||
|
LandCore.getInstance().getDisguiseManager().updateTablist();
|
||||||
|
|
||||||
|
InternalNametag.reloadPlayer(player);
|
||||||
|
InternalNametag.reloadOthersFor(player);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.rankMenu.setItem(8, new InventoryUI.AbstractClickableItem(
|
||||||
|
new ItemBuilder(Material.LEATHER_CHESTPLATE).color(Color.GREEN)
|
||||||
|
.name(CC.GREEN + "Member")
|
||||||
|
.lore(Arrays.asList(
|
||||||
|
"",
|
||||||
|
CC.GRAY + CC.B + "In disguise mode",
|
||||||
|
CC.GRAY + CC.B + "you can only choose",
|
||||||
|
CC.GRAY + CC.B + "donor ranks or member.",
|
||||||
|
""
|
||||||
|
))
|
||||||
|
.build()) {
|
||||||
|
@Override
|
||||||
|
public void onClick(InventoryClickEvent event) {
|
||||||
|
Player player = (Player)event.getWhoClicked();
|
||||||
|
|
||||||
|
CoreProfile coreProfile = LandCore.getInstance().getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
|
||||||
|
coreProfile.setDisguiseRank(Rank.MEMBER);
|
||||||
|
player.sendMessage(CC.GREEN + "You has choose " + CC.GREEN + "Member" + CC.GREEN + " rank.");
|
||||||
|
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
Bukkit.getScheduler().runTask(LandCore.getInstance(), () -> {
|
||||||
|
for (Player player1 : Bukkit.getOnlinePlayers()) {
|
||||||
|
player1.hidePlayer(player);
|
||||||
|
player1.showPlayer(player);
|
||||||
|
|
||||||
|
LandCore.getInstance().getDisguiseManager().updateTablist();
|
||||||
|
|
||||||
|
InternalNametag.reloadPlayer(player);
|
||||||
|
InternalNametag.reloadOthersFor(player);
|
||||||
|
|
||||||
|
NickAPI.refreshPlayerSync(player);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
package me.devkevin.landcore.event;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.event.Cancellable;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public class BanEvent extends Event implements Cancellable {
|
||||||
|
private static final HandlerList HANDLER_LIST = new HandlerList();
|
||||||
|
|
||||||
|
private final CommandSender punisher;
|
||||||
|
private final UUID punishedId;
|
||||||
|
private boolean cancelled;
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return HANDLER_LIST;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return HANDLER_LIST;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(boolean cancelled) {
|
||||||
|
this.cancelled = cancelled;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package me.devkevin.landcore.event;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import org.bukkit.event.Cancellable;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 16/01/2023 @ 12:36
|
||||||
|
* BaseEvent / land.pvp.core.event / LandCore
|
||||||
|
*/
|
||||||
|
public class BaseEvent extends Event {
|
||||||
|
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean call() {
|
||||||
|
LandCore.getInstance().getServer().getPluginManager().callEvent(this);
|
||||||
|
return this instanceof Cancellable && ((Cancellable) this).isCancelled();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
package me.devkevin.landcore.event;
|
||||||
|
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/01/2023 @ 18:31
|
||||||
|
* CoreEvent / me.devkevin.landcore.event / LandCore
|
||||||
|
*/
|
||||||
|
public class CoreEvent extends Event {
|
||||||
|
|
||||||
|
private static HandlerList handlers = new HandlerList();
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
package me.devkevin.landcore.event;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 16/01/2023 @ 12:34
|
||||||
|
* CoreProfileEvent / land.pvp.core.event / LandCore
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class CoreProfileEvent extends BaseEvent {
|
||||||
|
private final CoreProfile profile;
|
||||||
|
|
||||||
|
public UUID getUniqueId() {
|
||||||
|
return this.profile.getId();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package me.devkevin.landcore.event;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 18/01/2023 @ 15:14
|
||||||
|
* PlayerFakeEvent / land.pvp.core.event / LandCore
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
public class PlayerFakeEvent extends BaseEvent {
|
||||||
|
private Player player;
|
||||||
|
|
||||||
|
public PlayerFakeEvent(Player player) {
|
||||||
|
this.player = player;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player getPlayer() {
|
||||||
|
return player;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getUniqueId() {
|
||||||
|
return player.getUniqueId();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
package me.devkevin.landcore.event.disguise;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Cancellable;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 19/01/2023 @ 17:19
|
||||||
|
* PreDisguiseEvent / land.pvp.core.event.disguise / LandCore
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class PreDisguiseEvent extends Event implements Cancellable {
|
||||||
|
|
||||||
|
private static final HandlerList HANDLERS = new HandlerList();
|
||||||
|
|
||||||
|
private final Player player;
|
||||||
|
|
||||||
|
private boolean cancelled;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return HANDLERS;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return HANDLERS;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return this.cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(boolean b) {
|
||||||
|
this.cancelled = b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
package me.devkevin.landcore.event.disguise;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 19/01/2023 @ 17:20
|
||||||
|
* UnDisguiseEvent / land.pvp.core.event.disguise / LandCore
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class UnDisguiseEvent extends Event {
|
||||||
|
|
||||||
|
private static final HandlerList HANDLERS = new HandlerList();
|
||||||
|
|
||||||
|
private final Player player;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return HANDLERS;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return HANDLERS;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package me.devkevin.landcore.event.player;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import me.devkevin.landcore.event.CoreEvent;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.bukkit.event.player.PlayerEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/01/2023 @ 18:27
|
||||||
|
* PlayerFreezeEvent / me.devkevin.landcore.event.player / LandCore
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class PlayerFreezeEvent extends PlayerEvent {
|
||||||
|
|
||||||
|
public PlayerFreezeEvent(Player who) {
|
||||||
|
super(who);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package me.devkevin.landcore.event.player;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.bukkit.event.player.PlayerEvent;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public class PlayerMessageEvent extends PlayerEvent {
|
||||||
|
private static final HandlerList HANDLERS = new HandlerList();
|
||||||
|
private final Player receiver;
|
||||||
|
private final String message;
|
||||||
|
|
||||||
|
public PlayerMessageEvent(Player sender, Player receiver, String message) {
|
||||||
|
super(sender);
|
||||||
|
this.receiver = receiver;
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return HANDLERS;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return HANDLERS;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
package me.devkevin.landcore.event.player;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.player.grant.Grant;
|
||||||
|
import lombok.Getter;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.bukkit.event.player.PlayerEvent;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public class PlayerRankChangeEvent extends PlayerEvent {
|
||||||
|
private static final HandlerList HANDLERS = new HandlerList();
|
||||||
|
private final CoreProfile profile;
|
||||||
|
private final Grant newRank;
|
||||||
|
private final long duration;
|
||||||
|
|
||||||
|
public PlayerRankChangeEvent(Player who, CoreProfile profile, Grant newRank, long duration) {
|
||||||
|
super(who);
|
||||||
|
this.profile = profile;
|
||||||
|
this.newRank = newRank;
|
||||||
|
this.duration = duration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return HANDLERS;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return HANDLERS;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package me.devkevin.landcore.event.server;
|
||||||
|
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.bukkit.event.server.ServerEvent;
|
||||||
|
|
||||||
|
public class ServerShutdownCancelEvent extends ServerEvent {
|
||||||
|
private static final HandlerList HANDLER_LIST = new HandlerList();
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return HANDLER_LIST;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return HANDLER_LIST;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package me.devkevin.landcore.event.server;
|
||||||
|
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.bukkit.event.server.ServerEvent;
|
||||||
|
|
||||||
|
public class ServerShutdownScheduleEvent extends ServerEvent {
|
||||||
|
private static final HandlerList HANDLER_LIST = new HandlerList();
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return HANDLER_LIST;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return HANDLER_LIST;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
package me.devkevin.landcore.faction;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/03/2023 @ 0:38
|
||||||
|
* Faction / me.devkevin.landcore.faction / LandCore
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class Faction {
|
||||||
|
private final String name;
|
||||||
|
private final UUID leader;
|
||||||
|
|
||||||
|
private int limit = 12;
|
||||||
|
|
||||||
|
private List<UUID> members = new ArrayList<>();
|
||||||
|
private List<UUID> captains = new ArrayList<>();
|
||||||
|
|
||||||
|
private String description;
|
||||||
|
private String password;
|
||||||
|
private String dateCreated;
|
||||||
|
private int elo = 1000;
|
||||||
|
private int wins;
|
||||||
|
private int losses;
|
||||||
|
private int winStreak;
|
||||||
|
|
||||||
|
private boolean factionChat;
|
||||||
|
|
||||||
|
public void broadcast(String message) {
|
||||||
|
members.forEach(users -> {
|
||||||
|
Player player = (Player) Bukkit.getOfflinePlayer(users);
|
||||||
|
|
||||||
|
if (player != null) {
|
||||||
|
player.sendMessage(message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package me.devkevin.landcore.faction.commands;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/03/2023 @ 2:11
|
||||||
|
* FactionHelpCommand / me.devkevin.landcore.faction.commands / LandCore
|
||||||
|
*/
|
||||||
|
public class FactionHelpCommand extends PlayerCommand {
|
||||||
|
|
||||||
|
public FactionHelpCommand(LandCore plugin) {
|
||||||
|
super("faction");
|
||||||
|
setAliases(Arrays.asList("f", "f help", "faction help"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
player.sendMessage(new String[] {
|
||||||
|
CC.GRAY + CC.BOARD_SEPARATOR,
|
||||||
|
CC.GOLD + CC.B + "Factions Help " + CC.GRAY + "-" + CC.GRAY + " Information on how to use faction commands",
|
||||||
|
CC.GRAY + CC.BOARD_SEPARATOR,
|
||||||
|
CC.GOLD + "General Commands:",
|
||||||
|
CC.YELLOW + "/faction create " + CC.GRAY + "- Create a new faction",
|
||||||
|
CC.YELLOW + "/faction leave " + CC.GRAY + "- Leave your current faction",
|
||||||
|
CC.YELLOW + "/faction accept [faction|player] " + CC.GRAY + "- Accept clan invitation",
|
||||||
|
CC.YELLOW + "/faction info [faction|player] " + CC.GRAY + "- View a clan's information",
|
||||||
|
"",
|
||||||
|
CC.GOLD + "Leader Commands:",
|
||||||
|
CC.YELLOW + "/faction disband " + CC.GRAY + "- Disband your faction",
|
||||||
|
CC.YELLOW + "/faction description <text> " + CC.GRAY + "- Set your faction's description",
|
||||||
|
CC.YELLOW + "/faction password <password> " + CC.GRAY + "- Sets faction password",
|
||||||
|
CC.YELLOW + "/faction promote <player> " + CC.GRAY + "- Promote a player",
|
||||||
|
CC.YELLOW + "/faction demote <player> " + CC.GRAY + "- Demote a player",
|
||||||
|
"",
|
||||||
|
CC.GOLD + "Captain Commands:",
|
||||||
|
CC.YELLOW + "/faction invite <player> " + CC.GRAY + "- Invite a player to join your faction",
|
||||||
|
CC.YELLOW + "/faction kick <player> " + CC.GRAY + "- Kick a player from your faction",
|
||||||
|
"",
|
||||||
|
CC.GOLD + "Other Help:",
|
||||||
|
CC.YELLOW + "To use " + CC.PINK + "faction chat" + CC.YELLOW + " /factionchat or /fc",
|
||||||
|
CC.YELLOW + "Factions are limited to " + CC.PINK + "12 members" + CC.YELLOW + ".",
|
||||||
|
CC.GRAY + CC.BOARD_SEPARATOR
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
package me.devkevin.landcore.faction.commands.captain;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.faction.Faction;
|
||||||
|
import me.devkevin.landcore.faction.profile.FactionProfile;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/03/2023 @ 13:50
|
||||||
|
* FactionDemoteCommand / me.devkevin.landcore.faction.commands.captain / LandCore
|
||||||
|
*/
|
||||||
|
public class FactionDemoteCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public FactionDemoteCommand(LandCore plugin) {
|
||||||
|
super("faction.demote");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("f.demote");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
if (args.length != 1) {
|
||||||
|
player.sendMessage(CC.RED + "Usage: /faction demote <player>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FactionProfile factionProfile = this.plugin.getFactionManager().getProfile(player);
|
||||||
|
|
||||||
|
if (factionProfile.getFaction() == null) {
|
||||||
|
player.sendMessage(CC.RED + "You are not in a faction!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Faction faction = factionProfile.getFaction();
|
||||||
|
|
||||||
|
if (!faction.getLeader().equals(player.getUniqueId())) {
|
||||||
|
player.sendMessage(CC.RED + "You are not the faction leader!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
OfflinePlayer offlinePlayer = this.plugin.getServer().getOfflinePlayer(args[0]);
|
||||||
|
|
||||||
|
if (offlinePlayer.getPlayer() != null && offlinePlayer.getPlayer() == player) {
|
||||||
|
player.sendMessage(CC.RED + "You may not demote yourself!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!faction.getMembers().contains(offlinePlayer.getUniqueId())) {
|
||||||
|
player.sendMessage(player.getName() + CC.RED + " is not in your faction!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!faction.getCaptains().contains(offlinePlayer.getUniqueId())) {
|
||||||
|
player.sendMessage(player.getName() + CC.RED + " is not a faction captain!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
faction.getCaptains().remove(offlinePlayer.getUniqueId());
|
||||||
|
faction.broadcast(player.getName() + CC.YELLOW + " has been demoted to faction member!");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,94 @@
|
||||||
|
package me.devkevin.landcore.faction.commands.captain;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.faction.Faction;
|
||||||
|
import me.devkevin.landcore.faction.invite.FactionInvite;
|
||||||
|
import me.devkevin.landcore.faction.profile.FactionProfile;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import net.md_5.bungee.api.chat.ClickEvent;
|
||||||
|
import net.md_5.bungee.api.chat.ComponentBuilder;
|
||||||
|
import net.md_5.bungee.api.chat.HoverEvent;
|
||||||
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/03/2023 @ 13:53
|
||||||
|
* FactionInviteCommand / me.devkevin.landcore.faction.commands.captain / LandCore
|
||||||
|
*/
|
||||||
|
public class FactionInviteCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public FactionInviteCommand(LandCore plugin) {
|
||||||
|
super("faction.invite");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("f.invite");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
if (args.length != 1) {
|
||||||
|
player.sendMessage(CC.RED + "Usage: /faction invite <player>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FactionProfile factionProfile = this.plugin.getFactionManager().getProfile(player);
|
||||||
|
if (factionProfile.getFaction() == null) {
|
||||||
|
player.sendMessage(CC.RED + "You are not in a faction!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Faction faction = factionProfile.getFaction();
|
||||||
|
|
||||||
|
if (faction.getMembers().size() >= faction.getLimit()) {
|
||||||
|
player.sendMessage(CC.RED + "Your faction has exceeded the max member limit, you are unable to invite no one currently!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!faction.getCaptains().contains(player.getUniqueId()) && !faction.getLeader().equals(player.getUniqueId())) {
|
||||||
|
player.sendMessage(CC.RED + "You are not a faction captain!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Player target = this.plugin.getServer().getPlayer(args[0]);
|
||||||
|
if (target == null) {
|
||||||
|
player.sendMessage(CC.RED + "Could not find player.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (target == player) {
|
||||||
|
player.sendMessage(CC.RED + "Yoy may not invite yourself to a faction!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (faction.getMembers().contains(target.getUniqueId())) {
|
||||||
|
player.sendMessage(target.getDisplayName() + CC.RED + " is already in your faction!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FactionProfile targetProfile = this.plugin.getFactionManager().getProfile(target);
|
||||||
|
if (targetProfile.getFaction() != null) {
|
||||||
|
player.sendMessage(target.getDisplayName() + CC.RED + " already belongs to a faction. They must first leave their faction to be able to receive invites.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FactionInvite factionInvite = targetProfile.getInviteList().stream().filter(ci -> ci.getFaction() == faction && System.currentTimeMillis() - ci.getTimestamp() <= 60000).findFirst().orElse(null);
|
||||||
|
if (factionInvite != null) {
|
||||||
|
player.sendMessage(target.getDisplayName() + CC.RED + " has already been invited to the faction within the last 60 seconds.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
targetProfile.getInviteList().add(new FactionInvite(faction));
|
||||||
|
faction.broadcast(target.getDisplayName() + CC.YELLOW + " has been invited to the faction.");
|
||||||
|
|
||||||
|
TextComponent textComponent = new TextComponent(CC.YELLOW + "Click ");
|
||||||
|
TextComponent clickable = new TextComponent(CC.GOLD + "here");
|
||||||
|
textComponent.addExtra(clickable);
|
||||||
|
textComponent.addExtra(CC.YELLOW + " to accept the invite");
|
||||||
|
clickable.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder(CC.GREEN + "Click to join " + target.getDisplayName() + CC.GREEN + "'s faction").create()));
|
||||||
|
clickable.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/faction join " + player.getName()));
|
||||||
|
|
||||||
|
target.sendMessage(player.getDisplayName() + CC.YELLOW + " has invited you to join their faction " + CC.GRAY + "'" + CC.DARK_GREEN + faction.getName() + CC.GRAY + "'");
|
||||||
|
target.spigot().sendMessage(textComponent);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,74 @@
|
||||||
|
package me.devkevin.landcore.faction.commands.captain;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.faction.Faction;
|
||||||
|
import me.devkevin.landcore.faction.profile.FactionProfile;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/03/2023 @ 13:59
|
||||||
|
* FactionKickCommand / me.devkevin.landcore.faction.commands.captain / LandCore
|
||||||
|
*/
|
||||||
|
public class FactionKickCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public FactionKickCommand(LandCore plugin) {
|
||||||
|
super("faction.kick");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("f.kick");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
if (args.length != 1) {
|
||||||
|
player.sendMessage(CC.RED + "Usage: /faction kick <player>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FactionProfile factionProfile = this.plugin.getFactionManager().getProfile(player);
|
||||||
|
if (factionProfile.getFaction() == null) {
|
||||||
|
player.sendMessage(CC.RED + "You are not in a faction!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Faction faction = factionProfile.getFaction();
|
||||||
|
if (!faction.getCaptains().contains(player.getUniqueId()) && !faction.getLeader().equals(player.getUniqueId())) {
|
||||||
|
player.sendMessage(CC.RED + "You are not a faction captain!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
OfflinePlayer offlinePlayer = this.plugin.getServer().getOfflinePlayer(args[0]);
|
||||||
|
if (offlinePlayer.getPlayer() != null && offlinePlayer.getPlayer() == player) {
|
||||||
|
player.sendMessage(CC.RED + "You may not kick yourself from the faction!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!faction.getMembers().contains(offlinePlayer.getUniqueId())) {
|
||||||
|
player.sendMessage(player.getName() + CC.RED + " is not in your faction!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((faction.getCaptains().contains(offlinePlayer.getUniqueId()) && !faction.getLeader().equals(player.getUniqueId())) || faction.getLeader() == offlinePlayer.getUniqueId()) {
|
||||||
|
player.sendMessage(CC.RED + "You may only kick faction members.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
faction.getMembers().remove(offlinePlayer.getUniqueId());
|
||||||
|
faction.getCaptains().remove(offlinePlayer.getUniqueId());
|
||||||
|
|
||||||
|
if (offlinePlayer.getPlayer() != null && offlinePlayer.getPlayer().isOnline()) {
|
||||||
|
Player target = offlinePlayer.getPlayer();
|
||||||
|
|
||||||
|
FactionProfile targetProfile = this.plugin.getFactionManager().getProfile(target);
|
||||||
|
targetProfile.setFaction(null);
|
||||||
|
|
||||||
|
target.sendMessage(CC.RED + CC.B + "You have been kicked from the faction!");
|
||||||
|
}
|
||||||
|
|
||||||
|
faction.broadcast(player.getName() + CC.YELLOW + " has been kicked from the faction!");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
package me.devkevin.landcore.faction.commands.captain;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.faction.Faction;
|
||||||
|
import me.devkevin.landcore.faction.profile.FactionProfile;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/03/2023 @ 14:02
|
||||||
|
* FactionPasswordCommand / me.devkevin.landcore.faction.commands.captain / LandCore
|
||||||
|
*/
|
||||||
|
public class FactionPasswordCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public FactionPasswordCommand(LandCore plugin) {
|
||||||
|
super("faction.password");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("f.password");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
if (args.length != 1) {
|
||||||
|
player.sendMessage(CC.RED + "Usage: /faction password <password>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FactionProfile factionProfile = this.plugin.getFactionManager().getProfile(player);
|
||||||
|
if (factionProfile.getFaction() == null) {
|
||||||
|
player.sendMessage(CC.RED + "You are not in a faction!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Faction faction = factionProfile.getFaction();
|
||||||
|
if (!faction.getLeader().equals(player.getUniqueId())) {
|
||||||
|
player.sendMessage(CC.RED + "You are not the faction leader!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String password = args[0];
|
||||||
|
faction.setPassword(password);
|
||||||
|
|
||||||
|
player.sendMessage(CC.YELLOW + "Your faction password is now " + CC.GRAY + "'" + CC.DARK_GREEN + password + CC.GRAY + "'" + CC.YELLOW + ".");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,65 @@
|
||||||
|
package me.devkevin.landcore.faction.commands.captain;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.faction.Faction;
|
||||||
|
import me.devkevin.landcore.faction.profile.FactionProfile;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/03/2023 @ 14:04
|
||||||
|
* FactionPromoteCommand / me.devkevin.landcore.faction.commands.captain / LandCore
|
||||||
|
*/
|
||||||
|
public class FactionPromoteCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public FactionPromoteCommand(LandCore plugin) {
|
||||||
|
super("faction.promote");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("f.promote");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
if (args.length != 1) {
|
||||||
|
player.sendMessage(CC.RED + "Usage: /faction promote <player>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FactionProfile factionProfile = this.plugin.getFactionManager().getProfile(player);
|
||||||
|
if (factionProfile.getFaction() == null) {
|
||||||
|
player.sendMessage(CC.RED + "You are not in a faction!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Faction faction = factionProfile.getFaction();
|
||||||
|
|
||||||
|
if (!faction.getLeader().equals(player.getUniqueId())) {
|
||||||
|
player.sendMessage(CC.RED + "You are not the faction leader!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
OfflinePlayer offlinePlayer = this.plugin.getServer().getOfflinePlayer(args[0]);
|
||||||
|
|
||||||
|
if (offlinePlayer.getPlayer() != null && offlinePlayer.getPlayer() == player) {
|
||||||
|
player.sendMessage(CC.RED + "You may not promote yourself!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!faction.getMembers().contains(offlinePlayer.getUniqueId())) {
|
||||||
|
player.sendMessage(player.getName() + CC.RED + " is not in your faction!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (faction.getCaptains().contains(offlinePlayer.getUniqueId())) {
|
||||||
|
player.sendMessage(player.getName() + CC.RED + " is already a faction captain!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
faction.getCaptains().add(offlinePlayer.getUniqueId());
|
||||||
|
faction.broadcast(player.getName() + CC.YELLOW + " has been promoted to faction captain!");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
package me.devkevin.landcore.faction.commands.leader;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.faction.Faction;
|
||||||
|
import me.devkevin.landcore.faction.profile.FactionProfile;
|
||||||
|
import me.devkevin.landcore.utils.StringUtil;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/03/2023 @ 13:38
|
||||||
|
* FactionDescriptionCommand / me.devkevin.landcore.faction.commands.leader / LandCore
|
||||||
|
*/
|
||||||
|
public class FactionDescriptionCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public FactionDescriptionCommand(LandCore plugin) {
|
||||||
|
super("faction.description");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("f.description");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
if (args.length < 1) {
|
||||||
|
player.sendMessage(CC.RED + "Usage: /faction description <text>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FactionProfile factionProfile = this.plugin.getFactionManager().getProfile(player);
|
||||||
|
|
||||||
|
if (factionProfile.getFaction() == null) {
|
||||||
|
player.sendMessage(CC.RED + "You are not in a faction!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Faction faction = factionProfile.getFaction();
|
||||||
|
|
||||||
|
if (faction.getLeader() != player.getUniqueId()) {
|
||||||
|
player.sendMessage(CC.RED + "You are not the faction leader!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String description = StringUtil.buildString(args, 0);
|
||||||
|
faction.setDescription(description);
|
||||||
|
faction.broadcast(player.getDisplayName() + CC.YELLOW + " has set the faction's description to " + CC.GRAY + "'" + CC.DARK_GREEN + description + CC.GRAY + "'" + CC.YELLOW + ".");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,57 @@
|
||||||
|
package me.devkevin.landcore.faction.commands.leader;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.faction.Faction;
|
||||||
|
import me.devkevin.landcore.faction.profile.FactionProfile;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/03/2023 @ 13:46
|
||||||
|
* FactionDisbandCommand / me.devkevin.landcore.faction.commands.leader / LandCore
|
||||||
|
*/
|
||||||
|
public class FactionDisbandCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public FactionDisbandCommand(LandCore plugin) {
|
||||||
|
super("faction.disband");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("f.disband");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
FactionProfile factionProfile = this.plugin.getFactionManager().getProfile(player);
|
||||||
|
|
||||||
|
if (factionProfile.getFaction() == null) {
|
||||||
|
player.sendMessage(CC.RED + "You are not in a faction!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Faction faction = factionProfile.getFaction();
|
||||||
|
|
||||||
|
if (!faction.getLeader().equals(player.getUniqueId())) {
|
||||||
|
player.sendMessage(CC.RED + "You are not the faction leader!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
player.sendMessage(CC.RED + CC.B + "You have successfully disbanded your faction!");
|
||||||
|
|
||||||
|
faction.getMembers().remove(player.getUniqueId());
|
||||||
|
factionProfile.setFaction(null);
|
||||||
|
faction.broadcast(CC.RED + CC.B + "Your faction has been disbanded.");
|
||||||
|
|
||||||
|
faction.getMembers().forEach(u -> {
|
||||||
|
Player member = this.plugin.getServer().getPlayer(u);
|
||||||
|
|
||||||
|
if (member != null) {
|
||||||
|
FactionProfile memberProfile = this.plugin.getFactionManager().getProfile(member);
|
||||||
|
memberProfile.setFaction(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.plugin.getFactionManager().getFactions().remove(faction);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,83 @@
|
||||||
|
package me.devkevin.landcore.faction.commands.player;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.faction.Faction;
|
||||||
|
import me.devkevin.landcore.faction.invite.FactionInvite;
|
||||||
|
import me.devkevin.landcore.faction.profile.FactionProfile;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/03/2023 @ 2:17
|
||||||
|
* FactionAcceptCommand / me.devkevin.landcore.faction.commands.player / LandCore
|
||||||
|
*/
|
||||||
|
public class FactionAcceptCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public FactionAcceptCommand(LandCore plugin) {
|
||||||
|
super("faction.accept");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases(Arrays.asList("f.accept", "faction.join", "f.join"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
if (args.length < 1) {
|
||||||
|
player.sendMessage(CC.RED + "Usage: /faction <player|faction>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String name = args[0];
|
||||||
|
FactionInvite factionInvite = getInvite(player, name);
|
||||||
|
|
||||||
|
FactionProfile factionProfile = this.plugin.getFactionManager().getProfile(player);
|
||||||
|
|
||||||
|
if (factionProfile.getFaction() != null) {
|
||||||
|
player.sendMessage(CC.RED + "You are already in a faction!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (factionInvite == null && (getFaction(name) == null || getFaction(name).getPassword() == null)) {
|
||||||
|
player.sendMessage(CC.RED + "You weren't invited to a faction with this name or a faction with a member with this name.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (factionInvite == null && getFaction(name).getPassword() != null && args.length < 2) {
|
||||||
|
player.sendMessage(CC.RED + "You need the password or an invitation to join this faction.");
|
||||||
|
player.sendMessage(CC.YELLOW + "To join with a password, use " + CC.PINK + "/faction join " + name + " <password>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Faction faction = getFaction(name);
|
||||||
|
|
||||||
|
if (faction.getPassword() != null && args.length >= 2 && factionInvite == null) {
|
||||||
|
String password = args[1];
|
||||||
|
|
||||||
|
if (!faction.getPassword().equalsIgnoreCase(password)) {
|
||||||
|
player.sendMessage(CC.RED + "The password you have entered is incorrect.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
factionProfile.setFaction(faction);
|
||||||
|
faction.getMembers().add(player.getUniqueId());
|
||||||
|
|
||||||
|
if (factionInvite != null) factionProfile.getInviteList().remove(factionInvite);
|
||||||
|
|
||||||
|
faction.broadcast(player.getDisplayName() + CC.YELLOW + " has joined the faction!");
|
||||||
|
}
|
||||||
|
|
||||||
|
private FactionInvite getInvite(Player player, String name) {
|
||||||
|
FactionProfile factionProfile = this.plugin.getFactionManager().getProfile(player);
|
||||||
|
|
||||||
|
return factionProfile.getInviteList().stream().filter(ci -> ci.getFaction() == getFaction(name) && System.currentTimeMillis() - ci.getTimestamp() <= 60000 && !ci.isCancelled()).findFirst().orElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Faction getFaction(String name) {
|
||||||
|
return this.plugin.getFactionManager().getFactions().stream().filter(c -> c.getName().equalsIgnoreCase(name) || c.getMembers().contains(this.plugin.getServer().getOfflinePlayer(name).getUniqueId())).findFirst().orElse(null);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
package me.devkevin.landcore.faction.commands.player;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.faction.profile.FactionProfile;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 22/03/2023 @ 12:42
|
||||||
|
* FactionChatCommand / me.devkevin.landcore.faction.commands.player / LandCore
|
||||||
|
*/
|
||||||
|
public class FactionChatCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public FactionChatCommand(LandCore plugin) {
|
||||||
|
super("factionchat");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("fc");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
FactionProfile factionProfile = this.plugin.getFactionManager().getProfile(player);
|
||||||
|
|
||||||
|
boolean inFactionChat = !factionProfile.getFaction().isFactionChat();
|
||||||
|
|
||||||
|
factionProfile.getFaction().setFactionChat(inFactionChat);
|
||||||
|
|
||||||
|
player.sendMessage(inFactionChat ? CC.GREEN + "You are now in faction chat." : CC.RED + "You are no longer in faction chat.");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
package me.devkevin.landcore.faction.commands.player;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.LandCoreAPI;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.faction.Faction;
|
||||||
|
import me.devkevin.landcore.faction.profile.FactionProfile;
|
||||||
|
import me.devkevin.landcore.utils.TaskUtil;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/03/2023 @ 2:28
|
||||||
|
* FactionCreateCommand / me.devkevin.landcore.faction.commands.player / LandCore
|
||||||
|
*/
|
||||||
|
public class FactionCreateCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public FactionCreateCommand(LandCore plugin) {
|
||||||
|
super("faction.create");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("f create");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
if (args.length != 1) {
|
||||||
|
player.sendMessage(CC.RED + "Usage: /faction create <name>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FactionProfile factionProfile = this.plugin.getFactionManager().getProfile(player);
|
||||||
|
|
||||||
|
if (factionProfile.getFaction() != null) {
|
||||||
|
player.sendMessage(CC.RED + "You are already in a faction.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String name = args[0];
|
||||||
|
|
||||||
|
if (name.length() < 2) {
|
||||||
|
player.sendMessage(CC.RED + "Faction names must be greater than or equal to 2 characters long.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!StringUtils.isAlpha(name)) {
|
||||||
|
player.sendMessage(CC.RED + "Faction names must only contain alpha characters (letters only).");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (name.length() > 8) {
|
||||||
|
player.sendMessage(CC.RED + "Faction names must be less than or equal to 8 characters long.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Faction faction = this.plugin.getFactionManager().getFaction(name);
|
||||||
|
|
||||||
|
if (faction != null) {
|
||||||
|
player.sendMessage(CC.RED + "A faction with that name already exists!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Faction createdFaction = new Faction(name, player.getUniqueId());
|
||||||
|
createdFaction.getMembers().add(player.getUniqueId());
|
||||||
|
factionProfile.setFaction(createdFaction);
|
||||||
|
createdFaction.setDescription("This is the default description...");
|
||||||
|
createdFaction.setDateCreated(LandCoreAPI.getTodayDate() + " " + LandCoreAPI.getCurrentTime());
|
||||||
|
this.plugin.getFactionManager().getFactions().add(createdFaction);
|
||||||
|
|
||||||
|
player.sendMessage(CC.GREEN + "You have successfully created a new faction!");
|
||||||
|
|
||||||
|
TaskUtil.runAsync(plugin.getFactionManager()::save);
|
||||||
|
this.plugin.getFactionManager().savePlayerFaction(player);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,89 @@
|
||||||
|
package me.devkevin.landcore.faction.commands.player;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.faction.Faction;
|
||||||
|
import me.devkevin.landcore.faction.member.FactionMember;
|
||||||
|
import me.devkevin.landcore.faction.member.FactionMemberType;
|
||||||
|
import me.devkevin.landcore.faction.profile.FactionProfile;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.craftbukkit.libs.joptsimple.internal.Strings;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/03/2023 @ 13:32
|
||||||
|
* FactionInfoCommand / me.devkevin.landcore.faction.commands.player / LandCore
|
||||||
|
*/
|
||||||
|
public class FactionInfoCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public FactionInfoCommand(LandCore plugin) {
|
||||||
|
super("faction.info");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("f info");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
if (args.length == 0) {
|
||||||
|
FactionProfile factionProfile = this.plugin.getFactionManager().getProfile(player);
|
||||||
|
|
||||||
|
if (factionProfile.getFaction() == null) {
|
||||||
|
player.sendMessage(CC.RED + "You are not in a faction!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
describeFaction(player, factionProfile.getFaction());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String name = args[0];
|
||||||
|
Faction faction = this.plugin.getFactionManager().getFaction(name);
|
||||||
|
Faction playerFaction = playerFaction(name);
|
||||||
|
|
||||||
|
if (faction == null && playerFaction == null) {
|
||||||
|
player.sendMessage(CC.RED + "No faction found with the name or member with the name '" + name + "'");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (playerFaction != null && faction == playerFaction) {
|
||||||
|
describeFaction(player, faction);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (faction != null) describeFaction(player, faction);
|
||||||
|
if (playerFaction != null) describeFaction(player, playerFaction);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void describeFaction(Player player, Faction faction) {
|
||||||
|
List<FactionMember> factionMembers = new ArrayList<>();
|
||||||
|
faction.getMembers().forEach(u -> factionMembers.add(new FactionMember(u, faction.getLeader().equals(u) ? FactionMemberType.LEADER : faction.getCaptains().contains(u) ? FactionMemberType.CAPTAIN : FactionMemberType.MEMBER)));
|
||||||
|
factionMembers.sort(Comparator.comparing(cm -> cm.getType().getWeight()));
|
||||||
|
|
||||||
|
List<String> playerNames = new ArrayList<>();
|
||||||
|
factionMembers.forEach(cm -> playerNames.add((faction.getLeader().equals(cm.getUuid()) ? CC.DARK_GREEN + "***" : faction.getCaptains().contains(cm.getUuid()) ? CC.DARK_GREEN + "*" : "") + colorName(cm.getUuid())));
|
||||||
|
|
||||||
|
player.sendMessage(CC.GRAY + CC.BOARD_SEPARATOR);
|
||||||
|
player.sendMessage(CC.DARK_GREEN + CC.B + faction.getName() + CC.GRAY + " [" + faction.getMembers().size() + "/12]");
|
||||||
|
player.sendMessage(CC.YELLOW + "Description: " + CC.GRAY + faction.getDescription());
|
||||||
|
player.sendMessage(CC.YELLOW + "Members: " + Strings.join(playerNames, CC.GRAY + ", "));
|
||||||
|
player.sendMessage(CC.YELLOW + "Elo: " + CC.DARK_GREEN + (faction.getElo() == 0 ? "[N/A]" : faction.getElo()));
|
||||||
|
player.sendMessage(CC.YELLOW + "Date Created: " + CC.GREEN + faction.getDateCreated());
|
||||||
|
player.sendMessage(CC.GOLD + "View this faction on our site: " + CC.GRAY + "www.prac.lol/faction/" + faction.getName());
|
||||||
|
player.sendMessage(CC.GRAY + CC.BOARD_SEPARATOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Faction playerFaction(String name) {
|
||||||
|
OfflinePlayer offlinePlayer = this.plugin.getServer().getOfflinePlayer(name);
|
||||||
|
return this.plugin.getFactionManager().getFactions().stream().filter(faction -> faction.getMembers().contains(offlinePlayer.getUniqueId())).findFirst().orElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String colorName(UUID uuid) {
|
||||||
|
OfflinePlayer offlinePlayer = this.plugin.getServer().getOfflinePlayer(uuid);
|
||||||
|
return offlinePlayer.isOnline() ? CC.GREEN + offlinePlayer.getName() : CC.RED + offlinePlayer.getName();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package me.devkevin.landcore.faction.commands.player;
|
||||||
|
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.commands.PlayerCommand;
|
||||||
|
import me.devkevin.landcore.faction.Faction;
|
||||||
|
import me.devkevin.landcore.faction.profile.FactionProfile;
|
||||||
|
import me.devkevin.landcore.utils.TaskUtil;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/03/2023 @ 2:36
|
||||||
|
* FactionLeaveCommand / me.devkevin.landcore.faction.commands.player / LandCore
|
||||||
|
*/
|
||||||
|
public class FactionLeaveCommand extends PlayerCommand {
|
||||||
|
private final LandCore plugin;
|
||||||
|
|
||||||
|
public FactionLeaveCommand(LandCore plugin) {
|
||||||
|
super("faction.leave");
|
||||||
|
this.plugin = plugin;
|
||||||
|
setAliases("f.leave");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(Player player, String[] args) {
|
||||||
|
FactionProfile factionProfile = this.plugin.getFactionManager().getProfile(player);
|
||||||
|
|
||||||
|
if (factionProfile.getFaction() != null) {
|
||||||
|
player.sendMessage(CC.RED + "You are already in a faction.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Faction faction = factionProfile.getFaction();
|
||||||
|
|
||||||
|
if (faction.getLeader().equals(player.getUniqueId())) {
|
||||||
|
player.sendMessage(CC.RED + "You are the faction leader. You must disband the faction or promote someone else.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
faction.getMembers().remove(player.getUniqueId());
|
||||||
|
faction.getCaptains().remove(player.getUniqueId());
|
||||||
|
factionProfile.setFaction(null);
|
||||||
|
faction.broadcast(player.getDisplayName() + CC.YELLOW + " has left the faction!");
|
||||||
|
|
||||||
|
player.sendMessage(CC.RED + CC.B + "You have left the faction!");
|
||||||
|
|
||||||
|
TaskUtil.runAsync(plugin.getFactionManager()::save);
|
||||||
|
this.plugin.getFactionManager().savePlayerFaction(player);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
package me.devkevin.landcore.faction.invite;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
import me.devkevin.landcore.faction.Faction;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/03/2023 @ 0:38
|
||||||
|
* FactionInvite / me.devkevin.landcore.faction.invite / LandCore
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class FactionInvite {
|
||||||
|
private final Faction faction;
|
||||||
|
private long timestamp = System.currentTimeMillis();
|
||||||
|
private boolean cancelled;
|
||||||
|
}
|
|
@ -0,0 +1,84 @@
|
||||||
|
package me.devkevin.landcore.faction.listener;
|
||||||
|
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.faction.profile.FactionProfile;
|
||||||
|
import me.devkevin.landcore.player.CoreProfile;
|
||||||
|
import me.devkevin.landcore.utils.message.Messages;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
import org.bukkit.event.player.PlayerLoginEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/03/2023 @ 1:29
|
||||||
|
* FactionListener / me.devkevin.landcore.faction.listener / LandCore
|
||||||
|
*/
|
||||||
|
public class FactionListener implements Listener {
|
||||||
|
private final LandCore plugin = LandCore.getInstance();
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerLoginEvent(PlayerLoginEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
|
this.plugin.getFactionManager().addPlayer(player);
|
||||||
|
|
||||||
|
FactionProfile factionProfile = this.plugin.getFactionManager().getProfile(player);
|
||||||
|
|
||||||
|
if (factionProfile == null) {
|
||||||
|
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, Messages.DATA_LOAD_FAIL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.plugin.getFactionManager().loadPlayerFaction(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerJoinEvent(PlayerJoinEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
|
CoreProfile profile = this.plugin.getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
|
||||||
|
FactionProfile factionProfile = this.plugin.getFactionManager().getProfile(player);
|
||||||
|
|
||||||
|
if (factionProfile != null) {
|
||||||
|
Map<String, Object> message = Maps.newHashMap();
|
||||||
|
message.put("server", this.plugin.getServerName());
|
||||||
|
message.put("sender", profile.getRank().getColor() + player.getName());
|
||||||
|
|
||||||
|
plugin.getRedisMessenger().send("faction-join", message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerQuitEvent(PlayerQuitEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
|
this.plugin.getFactionManager().removePlayer(player);
|
||||||
|
this.plugin.getFactionManager().savePlayerFaction(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onChat(AsyncPlayerChatEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
String chatMessage = event.getMessage();
|
||||||
|
|
||||||
|
CoreProfile coreProfile = this.plugin.getProfileManager().getProfile(player.getUniqueId());
|
||||||
|
FactionProfile factionProfile = this.plugin.getFactionManager().getProfile(player);
|
||||||
|
|
||||||
|
if (factionProfile != null && factionProfile.getFaction() != null && factionProfile.getFaction().isFactionChat()) {
|
||||||
|
Map<String, Object> message = Maps.newHashMap();
|
||||||
|
message.put("server", plugin.getServerName());
|
||||||
|
message.put("format", coreProfile.getRank().getColor() + player.getName());
|
||||||
|
message.put("message", chatMessage);
|
||||||
|
message.put("sender", event.getPlayer().getName());
|
||||||
|
|
||||||
|
plugin.getRedisMessenger().send("faction-chat", message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,145 @@
|
||||||
|
package me.devkevin.landcore.faction.manager;
|
||||||
|
|
||||||
|
import com.mongodb.client.MongoCollection;
|
||||||
|
import com.mongodb.client.model.Filters;
|
||||||
|
import com.mongodb.client.model.ReplaceOptions;
|
||||||
|
import lombok.Getter;
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.faction.Faction;
|
||||||
|
import me.devkevin.landcore.faction.profile.FactionProfile;
|
||||||
|
import me.devkevin.landcore.utils.message.CC;
|
||||||
|
import org.bson.Document;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/03/2023 @ 0:48
|
||||||
|
* FactionManager / me.devkevin.landcore.faction.manager / LandCore
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
public class FactionManager {
|
||||||
|
private final LandCore plugin = LandCore.getInstance();
|
||||||
|
|
||||||
|
private final List<Faction> factions = new ArrayList<>();
|
||||||
|
private final Map<UUID, FactionProfile> factionProfileMap = new HashMap<>();
|
||||||
|
|
||||||
|
public FactionManager() {
|
||||||
|
load();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void load() {
|
||||||
|
MongoCollection<Document> collection = this.plugin.getMongoStorage().getFactionsCollection();
|
||||||
|
|
||||||
|
for (Document document : collection.find()) {
|
||||||
|
Faction faction = new Faction(document.getString("name"), (UUID) document.get("leader"));
|
||||||
|
faction.setMembers((List<UUID>) document.get("members"));
|
||||||
|
faction.getMembers().add((UUID) document.get("leader"));
|
||||||
|
faction.setCaptains((List<UUID>) document.get("captains"));
|
||||||
|
faction.setDescription(document.getString("description"));
|
||||||
|
faction.setDateCreated(document.getString("date-created"));
|
||||||
|
faction.setElo(document.getInteger("elo"));
|
||||||
|
faction.setWins(document.getInteger("wins"));
|
||||||
|
faction.setLosses(document.getInteger("losses"));
|
||||||
|
faction.setWinStreak(document.getInteger("winStreak"));
|
||||||
|
if (document.containsKey("description")) {
|
||||||
|
faction.setDescription(document.getString("description"));
|
||||||
|
}
|
||||||
|
if (document.containsKey("password")) {
|
||||||
|
faction.setPassword(document.getString("password"));
|
||||||
|
}
|
||||||
|
|
||||||
|
faction.setFactionChat(document.getBoolean("faction_chat_enabled"));
|
||||||
|
|
||||||
|
factions.add(faction);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void save() {
|
||||||
|
MongoCollection<Document> collection = this.plugin.getMongoStorage().getFactionsCollection();
|
||||||
|
collection.deleteMany(new Document());
|
||||||
|
|
||||||
|
for (Faction faction : factions) {
|
||||||
|
Document document = new Document()
|
||||||
|
.append("name", faction.getName())
|
||||||
|
.append("leader", faction.getLeader())
|
||||||
|
.append("members", faction.getMembers())
|
||||||
|
.append("captains", faction.getCaptains())
|
||||||
|
.append("date-created", faction.getDateCreated())
|
||||||
|
.append("elo", faction.getElo())
|
||||||
|
.append("wins", faction.getWins())
|
||||||
|
.append("losses", faction.getLosses())
|
||||||
|
.append("winStreak", faction.getWinStreak())
|
||||||
|
.append("faction_chat_enabled", faction.isFactionChat());
|
||||||
|
|
||||||
|
if (faction.getDescription() != null) {
|
||||||
|
document.append("description", faction.getDescription());
|
||||||
|
}
|
||||||
|
if (faction.getPassword() != null) {
|
||||||
|
document.append("password", faction.getPassword());
|
||||||
|
}
|
||||||
|
|
||||||
|
collection.insertOne(document);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void loadPlayerFaction(Player player) {
|
||||||
|
MongoCollection<Document> collection = this.plugin.getMongoStorage().getFactionsPlayersCollection();
|
||||||
|
Document document = collection.find(Filters.eq("uuid", player.getUniqueId().toString())).first();
|
||||||
|
|
||||||
|
if (document != null) {
|
||||||
|
FactionProfile factionProfile = this.getProfile(player);
|
||||||
|
Faction faction = this.getFaction(document.getString("faction"));
|
||||||
|
|
||||||
|
factionProfile.setFaction(faction);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void savePlayerFaction(Player player) {
|
||||||
|
MongoCollection<Document> collection = this.plugin.getMongoStorage().getFactionsPlayersCollection();
|
||||||
|
String uuid = player.getUniqueId().toString();
|
||||||
|
|
||||||
|
FactionProfile factionProfile = this.getProfile(player);
|
||||||
|
|
||||||
|
if (factionProfile == null) {
|
||||||
|
collection.deleteOne(Filters.eq("uuid", uuid));
|
||||||
|
} else {
|
||||||
|
Document document = new Document("uuid", uuid)
|
||||||
|
.append("faction", factionProfile.getFaction().getName());
|
||||||
|
collection.replaceOne(Filters.eq("uuid", uuid), document, new ReplaceOptions().upsert(true));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Faction getFaction(String name) {
|
||||||
|
return factions.stream().filter(faction -> faction.getName().equalsIgnoreCase(name)).findFirst().orElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addPlayer(Player player) {
|
||||||
|
factionProfileMap.put(player.getUniqueId(), new FactionProfile());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removePlayer(Player player) {
|
||||||
|
factionProfileMap.remove(player.getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public FactionProfile getProfile(Player player) {
|
||||||
|
return factionProfileMap.get(player.getUniqueId());
|
||||||
|
}
|
||||||
|
public boolean hasProfile(Player player) {
|
||||||
|
return factionProfileMap.containsKey(player.getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void broadcastToFactions(String message, String server) {
|
||||||
|
for (Faction faction : factions) {
|
||||||
|
faction.broadcast(CC.DARK_GREEN + "(Faction) " + message + " " + server);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void broadcastToFactionsChat(String displayName, String message, String server) {
|
||||||
|
for (Faction faction : factions) {
|
||||||
|
faction.broadcast(CC.DARK_GREEN + "(Faction) " + CC.GOLD + " [" + server + "] " + displayName + CC.GRAY + " : " + CC.R + message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
package me.devkevin.landcore.faction.member;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/03/2023 @ 0:39
|
||||||
|
* FactionMember / me.devkevin.landcore.faction.member / LandCore
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class FactionMember {
|
||||||
|
private final UUID uuid;
|
||||||
|
private final FactionMemberType type;
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
package me.devkevin.landcore.faction.member;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/03/2023 @ 0:40
|
||||||
|
* FactionMemberType / me.devkevin.landcore.faction.member / LandCore
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum FactionMemberType {
|
||||||
|
LEADER("Leader", 0),
|
||||||
|
CAPTAIN("Captain", 1),
|
||||||
|
MEMBER("Member", 2);
|
||||||
|
|
||||||
|
private final String name;
|
||||||
|
private final int weight;
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package me.devkevin.landcore.faction.profile;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import me.devkevin.landcore.faction.Faction;
|
||||||
|
import me.devkevin.landcore.faction.invite.FactionInvite;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 21/03/2023 @ 0:43
|
||||||
|
* FactionProfile / me.devkevin.landcore.faction.profile / LandCore
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class FactionProfile {
|
||||||
|
private Faction faction;
|
||||||
|
private List<FactionInvite> inviteList = new ArrayList<>();
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
package me.devkevin.landcore.gson;
|
||||||
|
|
||||||
|
import com.google.common.base.Preconditions;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.TypeAdapter;
|
||||||
|
import com.google.gson.TypeAdapterFactory;
|
||||||
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
import com.google.gson.stream.JsonReader;
|
||||||
|
import com.google.gson.stream.JsonWriter;
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.utils.location.CustomLocation;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 18/01/2023 @ 15:15
|
||||||
|
* CustomLocationTypeAdapterFactory / land.pvp.core.gson / LandCore
|
||||||
|
*/
|
||||||
|
public class CustomLocationTypeAdapterFactory implements TypeAdapterFactory {
|
||||||
|
|
||||||
|
public static LocationData serialize(CustomLocation customLocation) {
|
||||||
|
Preconditions.checkNotNull(customLocation);
|
||||||
|
|
||||||
|
return new LocationData(customLocation.getWorld(), customLocation.getX(), customLocation.getY(),
|
||||||
|
customLocation.getZ(), customLocation.getYaw(), customLocation.getPitch());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CustomLocation deserialize(LocationData locationData) {
|
||||||
|
Preconditions.checkNotNull(locationData);
|
||||||
|
|
||||||
|
return new CustomLocation(locationData.getWorld(), locationData.getX(), locationData.getY(), locationData
|
||||||
|
.getZ(), locationData.getYaw(), locationData.getPitch());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> typeToken) {
|
||||||
|
if (!CustomLocation.class.isAssignableFrom(typeToken.getRawType())) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new TypeAdapter<T>() {
|
||||||
|
@Override
|
||||||
|
public void write(JsonWriter jsonWriter, T location) throws IOException {
|
||||||
|
if (location == null) {
|
||||||
|
jsonWriter.nullValue();
|
||||||
|
} else {
|
||||||
|
LandCore.GSON.toJson(serialize((CustomLocation) location), LocationData.class, jsonWriter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T read(JsonReader jsonReader) throws IOException {
|
||||||
|
if (jsonReader.peek() == null) {
|
||||||
|
jsonReader.nextNull();
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return (T) deserialize(LandCore.GSON.fromJson(jsonReader, LocationData.class));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
private static class LocationData {
|
||||||
|
|
||||||
|
private final String world;
|
||||||
|
private final double x;
|
||||||
|
private final double y;
|
||||||
|
private final double z;
|
||||||
|
private final float yaw;
|
||||||
|
private final float pitch;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,175 @@
|
||||||
|
package me.devkevin.landcore.gson;
|
||||||
|
|
||||||
|
import com.google.common.base.Preconditions;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.TypeAdapter;
|
||||||
|
import com.google.gson.TypeAdapterFactory;
|
||||||
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
import com.google.gson.stream.JsonReader;
|
||||||
|
import com.google.gson.stream.JsonToken;
|
||||||
|
import com.google.gson.stream.JsonWriter;
|
||||||
|
import me.devkevin.landcore.LandCore;
|
||||||
|
import me.devkevin.landcore.gson.item.EnchantType;
|
||||||
|
import me.devkevin.landcore.gson.item.ItemMetaType;
|
||||||
|
import me.devkevin.landcore.gson.item.ItemType;
|
||||||
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.enchantments.Enchantment;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.*;
|
||||||
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 18/01/2023 @ 15:15
|
||||||
|
* ItemStackTypeAdapterFactory / land.pvp.core.gson / LandCore
|
||||||
|
*/
|
||||||
|
public class ItemStackTypeAdapterFactory implements TypeAdapterFactory {
|
||||||
|
|
||||||
|
public static ItemType serializeItem(ItemStack itemStack) {
|
||||||
|
Preconditions.checkNotNull(itemStack);
|
||||||
|
|
||||||
|
ItemType item;
|
||||||
|
ItemMeta itemStackMeta;
|
||||||
|
ItemMetaType itemMeta = null;
|
||||||
|
List<EnchantType> itemEnchants = null;
|
||||||
|
|
||||||
|
if (itemStack.hasItemMeta()) {
|
||||||
|
itemStackMeta = itemStack.getItemMeta();
|
||||||
|
itemMeta = new ItemMetaType();
|
||||||
|
|
||||||
|
if (itemStackMeta.hasDisplayName()) {
|
||||||
|
itemMeta.setDisplayName(itemStackMeta.getDisplayName());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (itemStackMeta.hasLore()) {
|
||||||
|
itemMeta.setLore(itemStackMeta.getLore());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (itemStackMeta instanceof EnchantmentStorageMeta) {
|
||||||
|
EnchantmentStorageMeta esm = (EnchantmentStorageMeta) itemStackMeta;
|
||||||
|
if (esm.hasStoredEnchants()) {
|
||||||
|
List<EnchantType> storedEnchants = new ArrayList<>();
|
||||||
|
for (Map.Entry<Enchantment, Integer> entry : esm.getStoredEnchants().entrySet()) {
|
||||||
|
storedEnchants.add(new EnchantType(entry.getKey().getName(), entry.getValue()));
|
||||||
|
}
|
||||||
|
itemMeta.setStoredEnchants(storedEnchants);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (itemStackMeta instanceof Repairable) {
|
||||||
|
itemMeta.setRepairCost(((Repairable) itemStackMeta).getRepairCost());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (itemStackMeta instanceof LeatherArmorMeta) {
|
||||||
|
itemMeta.setLeatherArmorColor(((LeatherArmorMeta) itemStackMeta).getColor().asRGB());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (itemStackMeta instanceof PotionMeta) {
|
||||||
|
PotionMeta potionMeta = (PotionMeta) itemStackMeta;
|
||||||
|
if (potionMeta.hasCustomEffects()) {
|
||||||
|
List<PotionEffect> potionEffects = new ArrayList<>();
|
||||||
|
potionEffects.addAll(potionMeta.getCustomEffects());
|
||||||
|
itemMeta.setPotionEffects(potionEffects);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Map.Entry<Enchantment, Integer> e : itemStack.getEnchantments().entrySet()) {
|
||||||
|
if (itemEnchants == null) {
|
||||||
|
itemEnchants = new ArrayList<>();
|
||||||
|
}
|
||||||
|
itemEnchants.add(new EnchantType(e.getKey().getName(), e.getValue()));
|
||||||
|
}
|
||||||
|
|
||||||
|
item = new ItemType(itemStack.getType().toString(), itemStack.getDurability(), itemStack.getAmount(),
|
||||||
|
itemEnchants, itemMeta);
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ItemStack deserializeItem(ItemType item) {
|
||||||
|
Preconditions.checkNotNull(item);
|
||||||
|
|
||||||
|
ItemStack itemStack = new ItemStack(Material.matchMaterial(item.getType()), item.getAmount());
|
||||||
|
ItemMeta itemMeta = itemStack.getItemMeta();
|
||||||
|
|
||||||
|
itemStack.setDurability(item.getDurability());
|
||||||
|
|
||||||
|
if (item.getEnchants() != null) {
|
||||||
|
for (EnchantType enchant : item.getEnchants()) {
|
||||||
|
itemMeta.addEnchant(Enchantment.getByName(enchant.getType()), enchant.getTier(), true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item.getMeta() != null) {
|
||||||
|
if (item.getMeta().getDisplayName() != null) {
|
||||||
|
itemMeta.setDisplayName(item.getMeta().getDisplayName());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item.getMeta().getLore() != null) {
|
||||||
|
itemMeta.setLore(item.getMeta().getLore());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (itemMeta instanceof EnchantmentStorageMeta && item.getMeta().getStoredEnchants() != null) {
|
||||||
|
EnchantmentStorageMeta esm = (EnchantmentStorageMeta) itemMeta;
|
||||||
|
for (EnchantType enchant : item.getMeta().getStoredEnchants()) {
|
||||||
|
esm.addStoredEnchant(Enchantment.getByName(enchant.getType()), enchant.getTier(), true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (itemMeta instanceof Repairable && item.getMeta().getRepairCost() != null) {
|
||||||
|
((Repairable) itemMeta).setRepairCost(item.getMeta().getRepairCost());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (itemMeta instanceof LeatherArmorMeta && item.getMeta().getLeatherArmorColor() != null) {
|
||||||
|
((LeatherArmorMeta) itemMeta).setColor(Color.fromRGB(item.getMeta().getLeatherArmorColor()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (itemMeta instanceof PotionMeta && item.getMeta().getPotionEffects() != null) {
|
||||||
|
PotionMeta potionMeta = (PotionMeta) itemMeta;
|
||||||
|
for (PotionEffect effect : item.getMeta().getPotionEffects()) {
|
||||||
|
potionMeta.addCustomEffect(effect, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
itemStack.setItemMeta(itemMeta);
|
||||||
|
|
||||||
|
return itemStack;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
|
||||||
|
if (!ItemStack.class.isAssignableFrom(type.getRawType())) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new TypeAdapter<T>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void write(JsonWriter writer, T item) throws IOException {
|
||||||
|
if (item == null) {
|
||||||
|
writer.nullValue();
|
||||||
|
} else {
|
||||||
|
LandCore.GSON.toJson(serializeItem((ItemStack) item), ItemType.class, writer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T read(JsonReader reader) throws IOException {
|
||||||
|
if (reader.peek() == JsonToken.NULL) {
|
||||||
|
reader.nextNull();
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return (T) deserializeItem(LandCore.GSON.fromJson(reader, ItemType.class));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package me.devkevin.landcore.gson.item;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 18/01/2023 @ 15:17
|
||||||
|
* EnchantType / land.pvp.core.gson.item / LandCore
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class EnchantType {
|
||||||
|
private final String type;
|
||||||
|
private final int tier;
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package me.devkevin.landcore.gson.item;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DevKevin (devkevinggg@gmail.com)
|
||||||
|
* 18/01/2023 @ 15:17
|
||||||
|
* ItemMetaType / land.pvp.core.gson.item / LandCore
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class ItemMetaType {
|
||||||
|
private String displayName;
|
||||||
|
private List<String> lore;
|
||||||
|
private List<EnchantType> storedEnchants;
|
||||||
|
private Integer repairCost;
|
||||||
|
private Integer leatherArmorColor;
|
||||||
|
private List<PotionEffect> potionEffects;
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue