forked from circlecloud/MiaoChat
		
	
							
								
								
									
										8
									
								
								.classpath
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.classpath
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<classpath>
 | 
			
		||||
	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
 | 
			
		||||
	<classpathentry kind="src" output="target/classes" path="src/main/resources"/>
 | 
			
		||||
	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>
 | 
			
		||||
	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 | 
			
		||||
	<classpathentry kind="output" path="target/classes"/>
 | 
			
		||||
</classpath>
 | 
			
		||||
							
								
								
									
										38
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
# Eclipse stuff
 | 
			
		||||
/.settings
 | 
			
		||||
 | 
			
		||||
# netbeans
 | 
			
		||||
/nbproject
 | 
			
		||||
 | 
			
		||||
# we use maven!
 | 
			
		||||
/build.xml
 | 
			
		||||
 | 
			
		||||
# maven
 | 
			
		||||
/target
 | 
			
		||||
/repo
 | 
			
		||||
 | 
			
		||||
# vim
 | 
			
		||||
.*.sw[a-p]
 | 
			
		||||
 | 
			
		||||
# various other potential build files
 | 
			
		||||
/build
 | 
			
		||||
/bin
 | 
			
		||||
/dist
 | 
			
		||||
/manifest.mf
 | 
			
		||||
 | 
			
		||||
/world
 | 
			
		||||
 | 
			
		||||
# Mac filesystem dust
 | 
			
		||||
*.DS_Store
 | 
			
		||||
 | 
			
		||||
# intellij
 | 
			
		||||
*.iml
 | 
			
		||||
*.ipr
 | 
			
		||||
*.iws
 | 
			
		||||
.idea/
 | 
			
		||||
 | 
			
		||||
# Project Stuff
 | 
			
		||||
/src/main/resources/Soulbound
 | 
			
		||||
 | 
			
		||||
# Atlassian Stuff
 | 
			
		||||
/atlassian-ide-plugin.xml
 | 
			
		||||
							
								
								
									
										23
									
								
								.project
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								.project
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<projectDescription>
 | 
			
		||||
	<name>MiaoChat</name>
 | 
			
		||||
	<comment></comment>
 | 
			
		||||
	<projects>
 | 
			
		||||
	</projects>
 | 
			
		||||
	<buildSpec>
 | 
			
		||||
		<buildCommand>
 | 
			
		||||
			<name>org.eclipse.jdt.core.javabuilder</name>
 | 
			
		||||
			<arguments>
 | 
			
		||||
			</arguments>
 | 
			
		||||
		</buildCommand>
 | 
			
		||||
		<buildCommand>
 | 
			
		||||
			<name>org.eclipse.m2e.core.maven2Builder</name>
 | 
			
		||||
			<arguments>
 | 
			
		||||
			</arguments>
 | 
			
		||||
		</buildCommand>
 | 
			
		||||
	</buildSpec>
 | 
			
		||||
	<natures>
 | 
			
		||||
		<nature>org.eclipse.m2e.core.maven2Nature</nature>
 | 
			
		||||
		<nature>org.eclipse.jdt.core.javanature</nature>
 | 
			
		||||
	</natures>
 | 
			
		||||
</projectDescription>
 | 
			
		||||
							
								
								
									
										65
									
								
								class.dict
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								class.dict
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,65 @@
 | 
			
		||||
IIIIiI
 | 
			
		||||
IIiIiI
 | 
			
		||||
iiIIiI
 | 
			
		||||
Iiiiii
 | 
			
		||||
IIIIIi
 | 
			
		||||
IiIiII
 | 
			
		||||
iiIIIi
 | 
			
		||||
iIIIii
 | 
			
		||||
iIiiIi
 | 
			
		||||
iiiIiI
 | 
			
		||||
IiiIii
 | 
			
		||||
iIiiiI
 | 
			
		||||
iiiIIi
 | 
			
		||||
IIiIII
 | 
			
		||||
IIIIii
 | 
			
		||||
IIIiii
 | 
			
		||||
iiiiII
 | 
			
		||||
iIIiII
 | 
			
		||||
IIiiII
 | 
			
		||||
iiIIii
 | 
			
		||||
IiiIII
 | 
			
		||||
iIiIII
 | 
			
		||||
IiIIii
 | 
			
		||||
iiIiiI
 | 
			
		||||
iIiiII
 | 
			
		||||
IiiIiI
 | 
			
		||||
iiiIII
 | 
			
		||||
IIiIIi
 | 
			
		||||
iIiIiI
 | 
			
		||||
iiIiii
 | 
			
		||||
IiIiii
 | 
			
		||||
IiIIiI
 | 
			
		||||
IiiIIi
 | 
			
		||||
IiIIIi
 | 
			
		||||
IIiiIi
 | 
			
		||||
iIIiIi
 | 
			
		||||
iIIIII
 | 
			
		||||
IIIiIi
 | 
			
		||||
iiiiiI
 | 
			
		||||
iIiIIi
 | 
			
		||||
IIIiiI
 | 
			
		||||
iiiiIi
 | 
			
		||||
iiIiIi
 | 
			
		||||
IIiiiI
 | 
			
		||||
IiiiII
 | 
			
		||||
iIIiii
 | 
			
		||||
iIiIii
 | 
			
		||||
IiIiiI
 | 
			
		||||
IIiIii
 | 
			
		||||
IiIIII
 | 
			
		||||
IIIIII
 | 
			
		||||
iIIIIi
 | 
			
		||||
IIIiII
 | 
			
		||||
iiiiii
 | 
			
		||||
IiiiiI
 | 
			
		||||
IiIiIi
 | 
			
		||||
iiiIii
 | 
			
		||||
iIIIiI
 | 
			
		||||
iIIiiI
 | 
			
		||||
iIiiii
 | 
			
		||||
iiIiII
 | 
			
		||||
IIiiii
 | 
			
		||||
iiIIII
 | 
			
		||||
IiiiIi
 | 
			
		||||
llllll
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								lib/PlaceholderAPI.jar
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/PlaceholderAPI.jar
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										24
									
								
								obf.dict
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								obf.dict
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
if
 | 
			
		||||
try
 | 
			
		||||
for
 | 
			
		||||
int
 | 
			
		||||
new
 | 
			
		||||
true
 | 
			
		||||
null
 | 
			
		||||
this
 | 
			
		||||
else
 | 
			
		||||
void
 | 
			
		||||
enum
 | 
			
		||||
final
 | 
			
		||||
false
 | 
			
		||||
class
 | 
			
		||||
catch
 | 
			
		||||
import
 | 
			
		||||
double
 | 
			
		||||
public
 | 
			
		||||
static
 | 
			
		||||
boolean
 | 
			
		||||
package
 | 
			
		||||
finally
 | 
			
		||||
private
 | 
			
		||||
protected
 | 
			
		||||
							
								
								
									
										134
									
								
								pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										134
									
								
								pom.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,134 @@
 | 
			
		||||
<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>pw.yumc</groupId>
 | 
			
		||||
	<artifactId>MiaoChat</artifactId>
 | 
			
		||||
	<version>1.0</version>
 | 
			
		||||
	<build>
 | 
			
		||||
		<finalName>${project.name}</finalName>
 | 
			
		||||
		<resources>
 | 
			
		||||
			<resource>
 | 
			
		||||
				<directory>src/main/resources</directory>
 | 
			
		||||
				<filtering>true</filtering>
 | 
			
		||||
			</resource>
 | 
			
		||||
		</resources>
 | 
			
		||||
		<plugins>
 | 
			
		||||
			<plugin>
 | 
			
		||||
				<artifactId>maven-compiler-plugin</artifactId>
 | 
			
		||||
				<version>3.3</version>
 | 
			
		||||
				<configuration>
 | 
			
		||||
					<source>1.7</source>
 | 
			
		||||
					<target>1.7</target>
 | 
			
		||||
				</configuration>
 | 
			
		||||
			</plugin>
 | 
			
		||||
			<plugin>
 | 
			
		||||
				<groupId>org.apache.maven.plugins</groupId>
 | 
			
		||||
				<artifactId>maven-shade-plugin</artifactId>
 | 
			
		||||
				<version>2.3</version>
 | 
			
		||||
				<configuration>
 | 
			
		||||
					<createDependencyReducedPom>false</createDependencyReducedPom>
 | 
			
		||||
					<minimizeJar>true</minimizeJar>
 | 
			
		||||
					<artifactSet>
 | 
			
		||||
						<includes>
 | 
			
		||||
							<include>pw.yumc:YumCore</include>
 | 
			
		||||
							<include>cn.citycraft:PluginHelper</include>
 | 
			
		||||
						</includes>
 | 
			
		||||
					</artifactSet>
 | 
			
		||||
					<relocations>
 | 
			
		||||
						<relocation>
 | 
			
		||||
							<pattern>pw.yumc.YumCore</pattern>
 | 
			
		||||
							<shadedPattern>${project.groupId}.${project.artifactId}</shadedPattern>
 | 
			
		||||
						</relocation>
 | 
			
		||||
						<relocation>
 | 
			
		||||
							<pattern>cn.citycraft.PluginHelper</pattern>
 | 
			
		||||
							<shadedPattern>${project.groupId}.${project.artifactId}</shadedPattern>
 | 
			
		||||
						</relocation>
 | 
			
		||||
					</relocations>
 | 
			
		||||
				</configuration>
 | 
			
		||||
				<executions>
 | 
			
		||||
					<execution>
 | 
			
		||||
						<phase>package</phase>
 | 
			
		||||
						<goals>
 | 
			
		||||
							<goal>shade</goal>
 | 
			
		||||
						</goals>
 | 
			
		||||
					</execution>
 | 
			
		||||
				</executions>
 | 
			
		||||
			</plugin>
 | 
			
		||||
			<plugin>
 | 
			
		||||
				<groupId>com.github.wvengen</groupId>
 | 
			
		||||
				<artifactId>proguard-maven-plugin</artifactId>
 | 
			
		||||
				<executions>
 | 
			
		||||
					<execution>
 | 
			
		||||
						<phase>package</phase>
 | 
			
		||||
						<goals>
 | 
			
		||||
							<goal>proguard</goal>
 | 
			
		||||
						</goals>
 | 
			
		||||
						<configuration>
 | 
			
		||||
							<options>
 | 
			
		||||
								<option>-repackageclasses nul.${project.groupId}.for.${project.artifactId}.class</option>
 | 
			
		||||
								<option>-keep class ${project.groupId}.${project.artifactId}.${project.artifactId}</option>
 | 
			
		||||
							</options>
 | 
			
		||||
							<libs>
 | 
			
		||||
								<lib>${java.home}/lib/rt.jar</lib>
 | 
			
		||||
							</libs>
 | 
			
		||||
						</configuration>
 | 
			
		||||
					</execution>
 | 
			
		||||
				</executions>
 | 
			
		||||
			</plugin>
 | 
			
		||||
		</plugins>
 | 
			
		||||
	</build>
 | 
			
		||||
	<ciManagement>
 | 
			
		||||
		<system>Jenkins</system>
 | 
			
		||||
		<url>http://ci.yumc.pw/job/${project.artifactId}/</url>
 | 
			
		||||
	</ciManagement>
 | 
			
		||||
	<properties>
 | 
			
		||||
		<update.description></update.description>
 | 
			
		||||
		<update.changes></update.changes>
 | 
			
		||||
		<env.GIT_COMMIT>DEBUG</env.GIT_COMMIT>
 | 
			
		||||
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 | 
			
		||||
	</properties>
 | 
			
		||||
	<repositories>
 | 
			
		||||
		<repository>
 | 
			
		||||
			<id>spigot-repo</id>
 | 
			
		||||
			<url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
 | 
			
		||||
		</repository>
 | 
			
		||||
		<repository>
 | 
			
		||||
			<id>yumc-repo</id>
 | 
			
		||||
			<url>http://repo.yumc.pw/content/groups/public/</url>
 | 
			
		||||
		</repository>
 | 
			
		||||
	</repositories>
 | 
			
		||||
	<distributionManagement>
 | 
			
		||||
		<repository>
 | 
			
		||||
			<id>jtb</id>
 | 
			
		||||
			<name>YUMC</name>
 | 
			
		||||
			<url>http://repo.yumc.pw/content/repositories/yumcenter/</url>
 | 
			
		||||
		</repository>
 | 
			
		||||
	</distributionManagement>
 | 
			
		||||
	<dependencies>
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<groupId>org.spigotmc</groupId>
 | 
			
		||||
			<artifactId>spigot-api</artifactId>
 | 
			
		||||
			<type>jar</type>
 | 
			
		||||
			<version>1.10.2-R0.1-SNAPSHOT</version>
 | 
			
		||||
		</dependency>
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<groupId>cn.citycraft</groupId>
 | 
			
		||||
			<artifactId>PluginHelper</artifactId>
 | 
			
		||||
			<type>jar</type>
 | 
			
		||||
			<version>1.0</version>
 | 
			
		||||
		</dependency>
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<groupId>pw.yumc</groupId>
 | 
			
		||||
			<artifactId>YumCore</artifactId>
 | 
			
		||||
			<type>jar</type>
 | 
			
		||||
			<version>1.0</version>
 | 
			
		||||
		</dependency>
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<groupId>pw.yumc</groupId>
 | 
			
		||||
			<artifactId>PlaceholderAPI</artifactId>
 | 
			
		||||
			<version>1.0</version>
 | 
			
		||||
			<scope>system</scope>
 | 
			
		||||
			<systemPath>${project.basedir}/lib/PlaceholderAPI.jar</systemPath>
 | 
			
		||||
		</dependency>
 | 
			
		||||
	</dependencies>
 | 
			
		||||
</project>
 | 
			
		||||
							
								
								
									
										56
									
								
								proguard.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								proguard.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,56 @@
 | 
			
		||||
# -----不优化-----
 | 
			
		||||
-dontoptimize
 | 
			
		||||
 | 
			
		||||
# -----忽略所有警告-----
 | 
			
		||||
-dontwarn
 | 
			
		||||
-dontnote
 | 
			
		||||
 | 
			
		||||
# -----混淆时应用侵入式重载-----
 | 
			
		||||
-overloadaggressively   
 | 
			
		||||
 | 
			
		||||
# -----启用混淆字典-----
 | 
			
		||||
-obfuscationdictionary obf.dict
 | 
			
		||||
-classobfuscationdictionary class.dict
 | 
			
		||||
-packageobfuscationdictionary class.dict
 | 
			
		||||
 | 
			
		||||
# -----保留所有属性
 | 
			
		||||
-keepattributes **
 | 
			
		||||
 | 
			
		||||
# -----公共数据不混淆-----
 | 
			
		||||
-keep class cn.citycraft.CommonData.** {*;}
 | 
			
		||||
 | 
			
		||||
# -----保护所有实体中的字段名称-----
 | 
			
		||||
-keepclassmembers class * implements java.io.Serializable { <fields>; }  
 | 
			
		||||
 | 
			
		||||
# -----保护监听方法不被清理-----
 | 
			
		||||
-keepclassmembers class * implements org.bukkit.event.Listener { 
 | 
			
		||||
	@org.bukkit.event.EventHandler <methods>; 
 | 
			
		||||
}
 | 
			
		||||
# -----保护枚举方法的完整性-----
 | 
			
		||||
-keep enum ** {*;}
 | 
			
		||||
# -----保护配置注入不被清理-----
 | 
			
		||||
-keepclassmembers class * extends **.config.InjectConfigurationSection { 
 | 
			
		||||
	<fields>;
 | 
			
		||||
} 
 | 
			
		||||
-keepclassmembers class * extends **.config.InjectConfig { 
 | 
			
		||||
	<fields>;
 | 
			
		||||
} 
 | 
			
		||||
# -----保护注解命令方法不被清理-----
 | 
			
		||||
-keepclassmembers class **.commands.annotation.** { <methods>; }  
 | 
			
		||||
-keepclassmembers class * implements **.commands.CommandExecutor { <methods>; }
 | 
			
		||||
 | 
			
		||||
-keepclassmembers class **.commands.HandlerCommand { <methods>; }  
 | 
			
		||||
-keepclassmembers class * implements **.commands.HandlerCommands { 
 | 
			
		||||
	@**.commands.HandlerCommand <methods>;
 | 
			
		||||
	@**.commands.HandlerTabComplete <methods>; 
 | 
			
		||||
} 
 | 
			
		||||
# -----保护注解NotProguard标记-----
 | 
			
		||||
-keep class **.NotProguard
 | 
			
		||||
-keep @**.NotProguard class * {*;}
 | 
			
		||||
-keepclassmembers class * {  
 | 
			
		||||
    @**.NotProguard <fields>;  
 | 
			
		||||
    @**.NotProguard <methods>;  
 | 
			
		||||
}  
 | 
			
		||||
 | 
			
		||||
# -----保护命令解析正常-----
 | 
			
		||||
-keepnames class * extends **.commands.BaseCommand
 | 
			
		||||
							
								
								
									
										47
									
								
								src/main/java/pw/yumc/MiaoChat/MiaoChat.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								src/main/java/pw/yumc/MiaoChat/MiaoChat.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,47 @@
 | 
			
		||||
package pw.yumc.MiaoChat;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.configuration.file.FileConfiguration;
 | 
			
		||||
import org.bukkit.plugin.java.JavaPlugin;
 | 
			
		||||
 | 
			
		||||
import pw.yumc.MiaoChat.config.ChatConfig;
 | 
			
		||||
import pw.yumc.MiaoChat.listeners.ChatListener;
 | 
			
		||||
import pw.yumc.YumCore.commands.CommandArgument;
 | 
			
		||||
import pw.yumc.YumCore.commands.CommandExecutor;
 | 
			
		||||
import pw.yumc.YumCore.commands.CommandManager;
 | 
			
		||||
import pw.yumc.YumCore.commands.annotation.Cmd;
 | 
			
		||||
import pw.yumc.YumCore.commands.annotation.Help;
 | 
			
		||||
import pw.yumc.YumCore.config.FileConfig;
 | 
			
		||||
 | 
			
		||||
public class MiaoChat extends JavaPlugin implements CommandExecutor {
 | 
			
		||||
    private ChatConfig chatConfig;
 | 
			
		||||
    private FileConfig config;
 | 
			
		||||
 | 
			
		||||
    public ChatConfig getChatConfig() {
 | 
			
		||||
        return chatConfig;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public FileConfiguration getConfig() {
 | 
			
		||||
        return config;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onEnable() {
 | 
			
		||||
        new ChatListener();
 | 
			
		||||
        new CommandManager("MiaoChat", this);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onLoad() {
 | 
			
		||||
        config = new FileConfig();
 | 
			
		||||
        chatConfig = new ChatConfig();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Cmd(permission = "MiaoChat.reload")
 | 
			
		||||
    @Help("重载配置文件")
 | 
			
		||||
    public void reload(final CommandArgument e) {
 | 
			
		||||
        config.reload();
 | 
			
		||||
        chatConfig.reload();
 | 
			
		||||
        e.getSender().sendMessage("§a配置文件已重载!");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										6
									
								
								src/main/java/pw/yumc/MiaoChat/config/CLICKTYPE.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								src/main/java/pw/yumc/MiaoChat/config/CLICKTYPE.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
package pw.yumc.MiaoChat.config;
 | 
			
		||||
 | 
			
		||||
public enum CLICKTYPE {
 | 
			
		||||
    COMMAND,
 | 
			
		||||
    SUGGEST;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										51
									
								
								src/main/java/pw/yumc/MiaoChat/config/ChatConfig.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								src/main/java/pw/yumc/MiaoChat/config/ChatConfig.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,51 @@
 | 
			
		||||
package pw.yumc.MiaoChat.config;
 | 
			
		||||
 | 
			
		||||
import java.util.LinkedList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import pw.yumc.YumCore.bukkit.P;
 | 
			
		||||
import pw.yumc.YumCore.config.FileConfig;
 | 
			
		||||
 | 
			
		||||
public class ChatConfig {
 | 
			
		||||
    private static String PrefixKey = "Format.Prefix";
 | 
			
		||||
    private static String SuffixKey = "Format.Suffix";
 | 
			
		||||
    private final FileConfig config;
 | 
			
		||||
    private final List<ChatMessagePart> prefixs;
 | 
			
		||||
    private final List<ChatMessagePart> suffixs;
 | 
			
		||||
    private ChatMessagePart player;
 | 
			
		||||
 | 
			
		||||
    public ChatConfig() {
 | 
			
		||||
        config = P.getConfig();
 | 
			
		||||
        prefixs = new LinkedList<>();
 | 
			
		||||
        suffixs = new LinkedList<>();
 | 
			
		||||
        reload();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public ChatMessagePart getPlayer() {
 | 
			
		||||
        return player;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public List<ChatMessagePart> getPrefixs() {
 | 
			
		||||
        return prefixs;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public List<ChatMessagePart> getSuffixs() {
 | 
			
		||||
        return suffixs;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void reload() {
 | 
			
		||||
        prefixs.clear();
 | 
			
		||||
        if (config.isSet(PrefixKey)) {
 | 
			
		||||
            for (final String part : config.getConfigurationSection(PrefixKey).getKeys(false)) {
 | 
			
		||||
                prefixs.add(new ChatMessagePart(config.getConfigurationSection(PrefixKey + "." + part)));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        player = new ChatMessagePart(config.getConfigurationSection("Format.Player"));
 | 
			
		||||
        suffixs.clear();
 | 
			
		||||
        if (config.isSet(SuffixKey)) {
 | 
			
		||||
            for (final String part : config.getConfigurationSection(SuffixKey).getKeys(false)) {
 | 
			
		||||
                suffixs.add(new ChatMessagePart(config.getConfigurationSection(SuffixKey + "." + part)));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										52
									
								
								src/main/java/pw/yumc/MiaoChat/config/ChatMessagePart.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								src/main/java/pw/yumc/MiaoChat/config/ChatMessagePart.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
			
		||||
package pw.yumc.MiaoChat.config;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.configuration.ConfigurationSection;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
 | 
			
		||||
import me.clip.placeholderapi.PlaceholderAPI;
 | 
			
		||||
import pw.yumc.YumCore.config.ConfigNode;
 | 
			
		||||
import pw.yumc.YumCore.config.InjectConfigurationSection;
 | 
			
		||||
import pw.yumc.YumCore.tellraw.Tellraw;
 | 
			
		||||
 | 
			
		||||
public class ChatMessagePart extends InjectConfigurationSection {
 | 
			
		||||
    private String text;
 | 
			
		||||
    private List<String> tip;
 | 
			
		||||
    @ConfigNode("click.type")
 | 
			
		||||
    private String typestring;
 | 
			
		||||
    private transient CLICKTYPE type = CLICKTYPE.SUGGEST;
 | 
			
		||||
    @ConfigNode("click.command")
 | 
			
		||||
    private String command;
 | 
			
		||||
 | 
			
		||||
    public ChatMessagePart(final ConfigurationSection config) {
 | 
			
		||||
        super(config);
 | 
			
		||||
        if (typestring != null) {
 | 
			
		||||
            type = CLICKTYPE.valueOf(typestring);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Tellraw then(final Tellraw tr, final Player p) {
 | 
			
		||||
        tr.then(f(p, text));
 | 
			
		||||
        if (tip != null && !tip.isEmpty()) {
 | 
			
		||||
            tr.tip(f(p, tip));
 | 
			
		||||
        }
 | 
			
		||||
        if (command != null && !command.isEmpty()) {
 | 
			
		||||
            final String tc = f(p, command);
 | 
			
		||||
            if (type == CLICKTYPE.SUGGEST) {
 | 
			
		||||
                tr.suggest(tc);
 | 
			
		||||
            } else if (type == CLICKTYPE.COMMAND) {
 | 
			
		||||
                tr.command(tc);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return tr;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private List<String> f(final Player player, final List<String> text) {
 | 
			
		||||
        return PlaceholderAPI.setPlaceholders(player, text);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private String f(final Player player, final String text) {
 | 
			
		||||
        return PlaceholderAPI.setPlaceholders(player, text);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										44
									
								
								src/main/java/pw/yumc/MiaoChat/listeners/ChatListener.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								src/main/java/pw/yumc/MiaoChat/listeners/ChatListener.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
package pw.yumc.MiaoChat.listeners;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.Bukkit;
 | 
			
		||||
import org.bukkit.ChatColor;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
import org.bukkit.event.EventHandler;
 | 
			
		||||
import org.bukkit.event.Listener;
 | 
			
		||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
 | 
			
		||||
 | 
			
		||||
import pw.yumc.MiaoChat.MiaoChat;
 | 
			
		||||
import pw.yumc.MiaoChat.config.ChatConfig;
 | 
			
		||||
import pw.yumc.MiaoChat.config.ChatMessagePart;
 | 
			
		||||
import pw.yumc.YumCore.bukkit.P;
 | 
			
		||||
import pw.yumc.YumCore.statistic.Statistics;
 | 
			
		||||
import pw.yumc.YumCore.tellraw.Tellraw;
 | 
			
		||||
import pw.yumc.YumCore.update.SubscribeTask;
 | 
			
		||||
 | 
			
		||||
public class ChatListener implements Listener {
 | 
			
		||||
    MiaoChat plugin = P.getPlugin();
 | 
			
		||||
 | 
			
		||||
    public ChatListener() {
 | 
			
		||||
        Bukkit.getPluginManager().registerEvents(this, P.instance);
 | 
			
		||||
        new Statistics();
 | 
			
		||||
        new SubscribeTask(true, true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @EventHandler
 | 
			
		||||
    public void onChat(final AsyncPlayerChatEvent e) {
 | 
			
		||||
        e.setCancelled(true);
 | 
			
		||||
        final Player p = e.getPlayer();
 | 
			
		||||
        final ChatConfig cc = plugin.getChatConfig();
 | 
			
		||||
        final String msg = e.getMessage();
 | 
			
		||||
        final Tellraw tr = Tellraw.create();
 | 
			
		||||
        for (final ChatMessagePart cmp : cc.getPrefixs()) {
 | 
			
		||||
            cmp.then(tr, p);
 | 
			
		||||
        }
 | 
			
		||||
        cc.getPlayer().then(tr, p);
 | 
			
		||||
        for (final ChatMessagePart cmp : cc.getSuffixs()) {
 | 
			
		||||
            cmp.then(tr, p);
 | 
			
		||||
        }
 | 
			
		||||
        tr.then(ChatColor.translateAlternateColorCodes('&', msg));
 | 
			
		||||
        tr.broadcast();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										40
									
								
								src/main/resources/config.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								src/main/resources/config.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
#格式化配置
 | 
			
		||||
Format:
 | 
			
		||||
  #前缀配置 于玩家名称前
 | 
			
		||||
  Prefix: 
 | 
			
		||||
    #顺序
 | 
			
		||||
    1:
 | 
			
		||||
      #文本 支持PAPI变量
 | 
			
		||||
      text: '&6[&a%player_world%&6]'
 | 
			
		||||
      #悬浮提示 支持PAPI
 | 
			
		||||
      tip: 
 | 
			
		||||
      - '&6当前所在位置:'
 | 
			
		||||
      - '&6世界: &d%layer_world%'
 | 
			
		||||
      - '&6坐标: &aX:%layer_x% Y: %player_y% Z: %player_z%'
 | 
			
		||||
      - '&c点击即可TP我!'
 | 
			
		||||
      #点击操作
 | 
			
		||||
      click:
 | 
			
		||||
        #操作类型: [COMMAND,SUGGEST] 
 | 
			
		||||
        #COMMAND代表执行命令
 | 
			
		||||
        #SUGGEST代表命令补全
 | 
			
		||||
        type: 'COMMAND'
 | 
			
		||||
        #命令 支持PAPI
 | 
			
		||||
        command: '/tpa %player_name%'
 | 
			
		||||
  #玩家名称配置
 | 
			
		||||
  Player: 
 | 
			
		||||
    text: '&6[&b%player_name%&6] '
 | 
			
		||||
    tip: 
 | 
			
		||||
    - '点击与我聊天'
 | 
			
		||||
    click: 
 | 
			
		||||
      type: 'SUGGEST'
 | 
			
		||||
      command: '/tell %player_name%'
 | 
			
		||||
#后缀配置 于玩家名称后 由于一般没人用 我注释掉了
 | 
			
		||||
#  Suffix: 
 | 
			
		||||
#    1:
 | 
			
		||||
#      text: '[变量1]'
 | 
			
		||||
#      tip: 
 | 
			
		||||
#      - '变量1提示'
 | 
			
		||||
#      click: 
 | 
			
		||||
#        type: 'COMMAND'
 | 
			
		||||
#        command: 'say 命令执行'      
 | 
			
		||||
  
 | 
			
		||||
							
								
								
									
										22
									
								
								src/main/resources/plugin.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/main/resources/plugin.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
name: ${project.artifactId}
 | 
			
		||||
description: ${project.description}
 | 
			
		||||
main: ${project.groupId}.${project.artifactId}.${project.artifactId}
 | 
			
		||||
version: ${project.version}-git-${env.GIT_COMMIT}
 | 
			
		||||
author: 喵♂呜
 | 
			
		||||
website: ${ciManagement.url}
 | 
			
		||||
commands:
 | 
			
		||||
  ${project.artifactId}:
 | 
			
		||||
    description: ${project.artifactId} - ${project.description}
 | 
			
		||||
    aliases:
 | 
			
		||||
    - mct
 | 
			
		||||
    - mchat
 | 
			
		||||
    usage: §b使用/${project.artifactId} help 查看帮助!
 | 
			
		||||
    permission: ${project.artifactId}.reload
 | 
			
		||||
    permission-message: §c你没有 <permission> 的权限来执行此命令!
 | 
			
		||||
permissions:
 | 
			
		||||
  ${project.artifactId}.use:
 | 
			
		||||
    description: ${project.artifactId} 使用!
 | 
			
		||||
    default: true
 | 
			
		||||
  ${project.artifactId}.reload:
 | 
			
		||||
    description: 重新载入插件!
 | 
			
		||||
    default: op
 | 
			
		||||
		Reference in New Issue
	
	Block a user