freeze + staff mod + sql h2 reports + reports
This commit is contained in:
1 parent
5729901500
commit
801caac5de
15 files changed
+946
-239
No files matched your search
@@ -1,4 +1,4 @@
|
||||
## Staff plugin
|
||||
# Staff plugin
|
||||
|
||||
* tempMute / mute
|
||||
* Freeze
|
||||
@@ -29,6 +29,7 @@
|
||||
* duration => edit paper in anvil gui
|
||||
* message => edit paper in anvil gui
|
||||
* save as template from here
|
||||
* tickets and report same interface but not same command / accessible from the same interface as admin
|
||||
* [tickets](https://youtu.be/12jlZPFWp9U?t=105)
|
||||
* suggestion
|
||||
* help
|
||||
@@ -48,7 +49,26 @@
|
||||
* arichve report / delete report (need perm) / process report => true (=> punishment with templates or nothing) / not sure / false
|
||||
* abusive report
|
||||
* comments on report => private / public (send to the reporter) delete comments (need perm)
|
||||
* [templates](https://youtu.be/12jlZPFWp9U?t=320)
|
||||
* [templates](https://youtu.be/12jlZPFWp9U?t=320) for punishments
|
||||
* staff chat
|
||||
* clear chat => don't clear if you have specific perm (or force it)
|
||||
* global mute chat
|
||||
|
||||
DB:
|
||||
|
||||
```sql
|
||||
CREATE TABLE reports(ID INT AUTO_INCREMENT PRIMARY KEY, report BOOLEAN, reportStatus TINYINT, reportTime BIGINT, reportReason VARCHAR(256), reported JAVA_OBJECT, reporter JAVA_OBJECT);
|
||||
CREATE TABLE chatHistory(messageId INT AUTO_INCREMENT PRIMARY KEY, messageDate BIGINT, messageAuthor UUID, message VARCHAR(256));
|
||||
CREATE TABLE templates(id INT AUTO_INCREMENT PRIMARY KEY, templateName VARCHAR(32), message VARCHAR(256), duration BIGINT, type TINYINT);
|
||||
CREATE TABLE punishments(id INT AUTO_INCREMENT PRIMARY KEY, punishedUUID UUID, message VARCHAR(256), punishmentType TINYINT, endtime BIGINT);
|
||||
```
|
||||
|
||||
reportStatus =
|
||||
|
||||
* 000 => wating
|
||||
* 001 => in progress
|
||||
* 010 => important
|
||||
* 100 => processed : abusive report / ticket
|
||||
* 101 => processed : false / unsolvable
|
||||
* 110 => processed : not sure / not solved
|
||||
* 111 => processed : true / solved
|
||||
Whitespace-only changes.
@@ -0,0 +1,61 @@
|
||||
package fr.nessar;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class CommandFreezeExecutor implements CommandExecutor {
|
||||
|
||||
private static final String PREFIX_PERMISSION = "staff.";
|
||||
private Staff plugin;
|
||||
|
||||
public CommandFreezeExecutor(Staff plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public String permissionErrMessage() {
|
||||
return "You don't have the permission to do this command !";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
|
||||
if ((commandLabel.equalsIgnoreCase("freeze") || commandLabel.equalsIgnoreCase("block")) && args.length == 1) {
|
||||
Player target = Bukkit.getServer().getPlayer(args[0]);
|
||||
if (target == null) {
|
||||
sender.sendMessage(Staff.getSTAFF_PREFIX() + ChatColor.RED + "Joueur " + args[0] + " introuvable.");
|
||||
return true;
|
||||
}
|
||||
if (plugin.isFrozen(target) != -1) {
|
||||
sender.sendMessage(
|
||||
Staff.getSTAFF_PREFIX() + "Le joueur " + target.getDisplayName() + " est deja freeze !");
|
||||
return true;
|
||||
}
|
||||
sender.sendMessage(
|
||||
Staff.getSTAFF_PREFIX() + "Le joueur " + target.getDisplayName() + " a bien été freeze !");
|
||||
plugin.toggleFreeze(target);
|
||||
return true;
|
||||
}
|
||||
if ((commandLabel.equalsIgnoreCase("unfreeze") || commandLabel.equalsIgnoreCase("unblock")
|
||||
|| commandLabel.equalsIgnoreCase("free")) && args.length == 1) {
|
||||
Player target = Bukkit.getServer().getPlayer(args[0]);
|
||||
if (target == null) {
|
||||
sender.sendMessage(Staff.getSTAFF_PREFIX() + ChatColor.RED + "Joueur " + args[0] + " introuvable.");
|
||||
return true;
|
||||
}
|
||||
if (plugin.isFrozen(target) == -1) {
|
||||
sender.sendMessage(
|
||||
Staff.getSTAFF_PREFIX() + "Le joueur " + target.getDisplayName() + " n'est pas freeze !");
|
||||
return true;
|
||||
}
|
||||
sender.sendMessage(
|
||||
Staff.getSTAFF_PREFIX() + "Le joueur " + target.getDisplayName() + " a bien été libéré !");
|
||||
plugin.toggleFreeze(target);
|
||||
return true;
|
||||
}
|
||||
sender.sendMessage(Staff.getSTAFF_PREFIX() + ChatColor.RED + "Mauvais usage de la commande.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -22,13 +22,16 @@ public class CommandStaffExecutor implements CommandExecutor {
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
|
||||
if (!(sender instanceof Player)) {
|
||||
sender.sendMessage(Staff.getPREFIX() + ChatColor.RED + "Seul les joueurs peuvent utiliser ces commandes.");
|
||||
sender.sendMessage(
|
||||
Staff.getSTAFF_PREFIX() + ChatColor.RED + "Seul les joueurs peuvent utiliser ces commandes.");
|
||||
return true;
|
||||
}
|
||||
Player p = (Player) sender;
|
||||
if (commandLabel.equalsIgnoreCase("staff") && args.length == 0) {
|
||||
plugin.toggleStaffMod(p);
|
||||
return true;
|
||||
}
|
||||
p.sendMessage(Staff.getPREFIX() + ChatColor.RED + "Mauvais usage de la commande.");
|
||||
p.sendMessage(Staff.getSTAFF_PREFIX() + ChatColor.RED + "Mauvais usage de la commande.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1,78 +0,0 @@
|
||||
package fr.nessar;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.io.Reader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.nio.file.Files;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
|
||||
public class DataManager {
|
||||
private Staff plugin = Staff.getPlugin(Staff.class);
|
||||
|
||||
// Files & File Configs Here
|
||||
public File reportFile;
|
||||
|
||||
public DataManager() {
|
||||
if (!plugin.getDataFolder().exists()) {
|
||||
plugin.getDataFolder().mkdir();
|
||||
}
|
||||
|
||||
this.reportFile = new File(plugin.getDataFolder(), "data.json");
|
||||
|
||||
if (!this.reportFile.exists()) {
|
||||
try {
|
||||
this.reportFile.createNewFile();
|
||||
Bukkit.getServer().getConsoleSender()
|
||||
.sendMessage(Staff.getPREFIX() + ChatColor.GREEN + "The data.json file has been created");
|
||||
} catch (IOException e) {
|
||||
Bukkit.getServer().getConsoleSender()
|
||||
.sendMessage(Staff.getPREFIX() + ChatColor.RED + "Could not create the data.json file");
|
||||
}
|
||||
} else {
|
||||
Bukkit.getServer().getConsoleSender().sendMessage(Staff.getPREFIX() + ChatColor.GREEN + "data.json found");
|
||||
}
|
||||
}
|
||||
|
||||
public void saveReports(List<Report> Reports) {
|
||||
Gson gson = new Gson();
|
||||
try {
|
||||
Files.write(this.reportFile.toPath(), gson.toJson(Reports).getBytes());
|
||||
} catch (IOException e) {
|
||||
Bukkit.getServer().getConsoleSender()
|
||||
.sendMessage(Staff.getPREFIX() + ChatColor.RED + "Couldn't save in the data.json file");
|
||||
}
|
||||
}
|
||||
|
||||
public List<Report> loadReports() {
|
||||
Gson gson = new Gson();
|
||||
List<Report> ret = null;
|
||||
Report[] Reports = null;
|
||||
if (reportFile.exists()) {
|
||||
Reader reader;
|
||||
try {
|
||||
reader = new FileReader(reportFile);
|
||||
} catch (FileNotFoundException e) {
|
||||
Bukkit.getServer().getConsoleSender()
|
||||
.sendMessage(Staff.getPREFIX() + ChatColor.RED + "Couldn't found data.json");
|
||||
return new ArrayList<Report>();
|
||||
}
|
||||
Reports = gson.fromJson(reader, Report[].class);
|
||||
if (Reports != null) {
|
||||
ret = new ArrayList<Report>(Arrays.asList(Reports));
|
||||
} else {
|
||||
ret = new ArrayList<Report>();
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package fr.nessar;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Database {
|
||||
public static Connection getConnection() {
|
||||
Connection conn = null;
|
||||
try {
|
||||
Class.forName("org.h2.Driver");
|
||||
} catch (ClassNotFoundException e) {
|
||||
System.out.println("must have h2 driver");
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
conn = DriverManager.getConnection(Staff.getUrlDB());
|
||||
} catch (SQLException ex) {
|
||||
System.out.println("There was a problem connecting database.");
|
||||
}
|
||||
return conn;
|
||||
}
|
||||
|
||||
public static void initializeDatabase() {
|
||||
try {
|
||||
Connection connection = Database.getConnection();
|
||||
Statement statement = connection.createStatement();
|
||||
statement.execute(
|
||||
"CREATE TABLE IF NOT EXISTS reports(ID INT AUTO_INCREMENT PRIMARY KEY, report BOOLEAN, reportStatus TINYINT, reportTime BIGINT, reportReason VARCHAR(256), reported JAVA_OBJECT, reporter JAVA_OBJECT);");
|
||||
statement.execute(
|
||||
"CREATE TABLE IF NOT EXISTS chatHistory(messageId INT AUTO_INCREMENT PRIMARY KEY, messageDate BIGINT, messageAuthor UUID, message VARCHAR(256));");
|
||||
statement.execute(
|
||||
"CREATE TABLE IF NOT EXISTS templates(id INT AUTO_INCREMENT PRIMARY KEY, templateName VARCHAR(32), message VARCHAR(256), duration BIGINT, type TINYINT);");
|
||||
statement.execute(
|
||||
"CREATE TABLE IF NOT EXISTS punishments(id INT AUTO_INCREMENT PRIMARY KEY, punishedUUID UUID, message VARCHAR(256), punishmentType TINYINT, endtime BIGINT);");
|
||||
connection.close();
|
||||
Bukkit.getConsoleSender().sendMessage(Staff.getSTAFF_PREFIX() + "Database loaded");
|
||||
} catch (Exception e) {
|
||||
Bukkit.getConsoleSender().sendMessage(Staff.getSTAFF_PREFIX() + "Couldn't load database :( " + e);
|
||||
}
|
||||
}
|
||||
|
||||
public static List<Report> loadReportsFromDB() throws Exception {
|
||||
Connection connection = Database.getConnection();
|
||||
PreparedStatement statement;
|
||||
try {
|
||||
statement = connection.prepareStatement("SELECT * FROM reports");
|
||||
} catch (SQLException e) {
|
||||
throw new Exception("Cannot get * from reports " + e);
|
||||
}
|
||||
ResultSet rows = statement.executeQuery();
|
||||
List<Report> ret = new ArrayList<Report>();
|
||||
while (rows.next()) {
|
||||
ret.add(new Report(rows.getObject("reporter", Player.class), rows.getObject("reported", Player.class),
|
||||
rows.getString("reportReason"), rows.getLong("reportTime"), rows.getBoolean("report")));
|
||||
}
|
||||
connection.close();
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static void addReportToDB(Report r) throws SQLException {
|
||||
Connection conn = Database.getConnection();
|
||||
PreparedStatement statement;
|
||||
statement = conn.prepareStatement(
|
||||
"INSERT INTO reports(report,reportStatus,reportTime,reportReason,reported, reporter) VALUES (?,?,?,?,?)");
|
||||
statement.setBoolean(0, r.isReport());
|
||||
statement.setInt(1, r.getStatus().getStatusCode());
|
||||
statement.setLong(2, r.getReportTime());
|
||||
statement.setString(3, r.getReportReason());
|
||||
statement.setObject(4, r.getReported());
|
||||
statement.setObject(4, r.getReporter());
|
||||
statement.execute();
|
||||
conn.close();
|
||||
}
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
package fr.nessar;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class Inventory {
|
||||
private Player owner;
|
||||
private List<ItemStack> inventory;
|
||||
private List<ItemStack> armor;
|
||||
|
||||
public Inventory(Player p, List<ItemStack> inventory, List<ItemStack> armor) {
|
||||
this.owner = p;
|
||||
this.armor = armor;
|
||||
this.inventory = inventory;
|
||||
}
|
||||
|
||||
public Player getOwner() {
|
||||
return this.owner;
|
||||
}
|
||||
|
||||
public List<ItemStack> getInventory() {
|
||||
return this.inventory;
|
||||
}
|
||||
|
||||
public List<ItemStack> getArmor() {
|
||||
return this.armor;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package fr.nessar;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
|
||||
public class Menu {
|
||||
|
||||
public static Inventory getFreeze() {
|
||||
Inventory gui = Bukkit.createInventory(null, 27,
|
||||
ChatColor.BOLD + ChatColor.RED.toString() + "VOUS ETES FREEZE");
|
||||
List<ItemStack> listItem = new ArrayList<>();
|
||||
ItemStack redPane = StaffMod.setNameItem(" ", new ItemStack(Material.STAINED_GLASS_PANE, 1, (short) 14));
|
||||
for (int i = 0; i < 27; i++) {
|
||||
listItem.add(redPane);
|
||||
}
|
||||
ItemStack packedIce = StaffMod.setNameItem(ChatColor.GOLD + "Vous avez été " + ChatColor.BLUE + "FREEZE",
|
||||
new ItemStack(Material.PACKED_ICE));
|
||||
listItem.set(11, packedIce);
|
||||
ItemStack tnt = StaffMod.setNameItem(ChatColor.RED + ChatColor.BOLD.toString() + "DECONNEXION = BAN",
|
||||
new ItemStack(Material.TNT));
|
||||
listItem.set(13, tnt);
|
||||
ItemStack netherStar = StaffMod.setNameItem(
|
||||
ChatColor.GOLD + "Allez sur ts.nessar.fr pour parler avec l'equipe de modération !",
|
||||
new ItemStack(Material.NETHER_STAR));
|
||||
listItem.set(15, netherStar);
|
||||
ItemStack[] ret = {};
|
||||
gui.setContents(listItem.toArray(ret));
|
||||
return gui;
|
||||
}
|
||||
}
|
||||
+29
-56
@@ -2,126 +2,99 @@ package fr.nessar;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Report {
|
||||
private String reporterUUID;
|
||||
private String reportedUUID;
|
||||
private transient Player reporter;
|
||||
private transient Player reported;
|
||||
private boolean report;
|
||||
private Player reporter;
|
||||
private Player reported;
|
||||
private String reportReason;
|
||||
private String reportMessage;
|
||||
private transient Date reportTime;
|
||||
private long reportTimeMs;
|
||||
private long reportTime;
|
||||
private ReportStatus status;
|
||||
|
||||
public Report(Player reporter, Player reported, String reportReason, String reportMessage, Date reportTime) {
|
||||
this.reporterUUID = reporter.getUniqueId().toString();
|
||||
this.reportedUUID = reported.getUniqueId().toString();
|
||||
public Report(Player reporter, Player reported, String reportReason, long reportTime, boolean report,
|
||||
ReportStatus status) {
|
||||
this.reporter = reporter;
|
||||
this.reported = reported;
|
||||
this.reportReason = reportReason;
|
||||
this.reportMessage = reportMessage;
|
||||
this.reportTime = reportTime;
|
||||
this.reportTimeMs = this.reportTime.getTime();
|
||||
this.report = report;
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public Report(Player reporter, Player reported, String reportReason, String reportMessage) {
|
||||
new Report(reporter, reported, reportReason, reportMessage, new Date());
|
||||
public Report(Player reporter, Player reported, String reportReason, boolean report) {
|
||||
new Report(reporter, reported, reportReason, new Date().getTime(), report, ReportStatus.WAITING);
|
||||
}
|
||||
|
||||
public Report(Player reporter, Player reported, String reportReason, String reportMessage, long reportTimeMs) {
|
||||
new Report(reporter, reported, reportReason, reportMessage, new Date(reportTimeMs));
|
||||
public Report(Player reporter, Player reported, String reportReason, long reportTime, boolean report) {
|
||||
new Report(reporter, reported, reportReason, new Date().getTime(), report, ReportStatus.WAITING);
|
||||
}
|
||||
|
||||
public Report(String reporterUUID, String reportedUUID, String reportReason, String reportMessage, Date reportTime)
|
||||
throws Exception {
|
||||
Player reporter = Bukkit.getServer().getPlayer(UUID.fromString(reporterUUID));
|
||||
Player reported = Bukkit.getServer().getPlayer(UUID.fromString(reportedUUID));
|
||||
if (this.reporter == null || this.reported == null) {
|
||||
throw new Exception("Unable to find Player.");
|
||||
}
|
||||
new Report(reporter, reported, reportReason, reportMessage, reportTime);
|
||||
public void changeStatus(ReportStatus newStatus) {
|
||||
this.status = newStatus;
|
||||
}
|
||||
|
||||
public Report(String reporterUUID, String reportedUUID, String reportReason, String reportMessage)
|
||||
throws Exception {
|
||||
new Report(reporterUUID, reportedUUID, reportReason, reportMessage, new Date());
|
||||
public ReportStatus getStatus() {
|
||||
return this.status;
|
||||
}
|
||||
|
||||
public Report(String reporterUUID, String reportedUUID, String reportReason, String reportMessage,
|
||||
long reportTimeMs)
|
||||
throws Exception {
|
||||
new Report(reporterUUID, reportedUUID, reportReason, reportMessage, new Date(reportTimeMs));
|
||||
public boolean isReport() {
|
||||
return this.report;
|
||||
}
|
||||
|
||||
public long getReportTimeMs() {
|
||||
return this.reportTimeMs;
|
||||
public boolean isTicket() {
|
||||
return !this.report;
|
||||
}
|
||||
|
||||
public String getReporterUUID() {
|
||||
return this.reporterUUID;
|
||||
public long getReportTime() {
|
||||
return this.reportTime;
|
||||
}
|
||||
|
||||
public Player getReporter() {
|
||||
return this.reporter;
|
||||
}
|
||||
|
||||
public String getReportedUUID() {
|
||||
return this.reportedUUID;
|
||||
}
|
||||
|
||||
public Player getReported() {
|
||||
return this.reported;
|
||||
}
|
||||
|
||||
public String getReportMessage() {
|
||||
return this.reportMessage;
|
||||
}
|
||||
|
||||
public String getReportReason() {
|
||||
return this.reportReason;
|
||||
}
|
||||
|
||||
public Date getReportTime() {
|
||||
return this.reportTime;
|
||||
}
|
||||
|
||||
public int getReportTimeSecond() {
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.setTime(this.reportTime);
|
||||
c.setTime(new Date(this.reportTime));
|
||||
return c.get(Calendar.SECOND);
|
||||
}
|
||||
|
||||
public int getReportTimeMinute() {
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.setTime(this.reportTime);
|
||||
c.setTime(new Date(this.reportTime));
|
||||
return c.get(Calendar.MINUTE);
|
||||
}
|
||||
|
||||
public int getReportTimeHour() {
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.setTime(this.reportTime);
|
||||
c.setTime(new Date(this.reportTime));
|
||||
return c.get(Calendar.HOUR_OF_DAY);
|
||||
}
|
||||
|
||||
public int getReportTimeDay() {
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.setTime(this.reportTime);
|
||||
c.setTime(new Date(this.reportTime));
|
||||
return c.get(Calendar.DAY_OF_MONTH);
|
||||
}
|
||||
|
||||
public int getReportTimeMonth() {
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.setTime(this.reportTime);
|
||||
c.setTime(new Date(this.reportTime));
|
||||
return c.get(Calendar.MONTH);
|
||||
}
|
||||
|
||||
public int getReportTimeYear() {
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.setTime(this.reportTime);
|
||||
c.setTime(new Date(this.reportTime));
|
||||
return c.get(Calendar.YEAR);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package fr.nessar;
|
||||
|
||||
public enum ReportStatus {
|
||||
WAITING(0),
|
||||
INPROGRESS(1),
|
||||
IMPORTANT(2),
|
||||
CLASSED_ABUSIVE(4),
|
||||
CLASSED_FALSE(5),
|
||||
CLASSED_NOTSURE(6),
|
||||
CLASSED_TRUE(7);
|
||||
|
||||
private final int statusCode;
|
||||
|
||||
private ReportStatus(int code) {
|
||||
this.statusCode = code;
|
||||
}
|
||||
|
||||
public int getStatusCode() {
|
||||
return this.statusCode;
|
||||
}
|
||||
|
||||
public boolean isGreaterThan(ReportStatus r) {
|
||||
return this.statusCode > r.getStatusCode();
|
||||
}
|
||||
|
||||
public boolean isGreaterOrEqualThan(ReportStatus r) {
|
||||
return this.statusCode >= r.getStatusCode();
|
||||
}
|
||||
|
||||
public boolean equals(ReportStatus r) {
|
||||
return this.statusCode == r.getStatusCode();
|
||||
}
|
||||
|
||||
public boolean isClassed() {
|
||||
return this.statusCode > 2;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
package fr.nessar;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class SaveInventory {
|
||||
private Player owner;
|
||||
private List<ItemStack> inventory;
|
||||
private List<ItemStack> armor;
|
||||
|
||||
public SaveInventory(Player p, List<ItemStack> inventory, List<ItemStack> armor) {
|
||||
this.owner = p;
|
||||
this.armor = armor;
|
||||
this.inventory = inventory;
|
||||
}
|
||||
|
||||
public SaveInventory(Player p) {
|
||||
this.owner = p;
|
||||
this.armor = saveArmor(p);
|
||||
this.inventory = saveInv(p);
|
||||
}
|
||||
|
||||
public List<ItemStack> saveInv(Player p) {
|
||||
final List<ItemStack> invCont = new ArrayList<>();
|
||||
for (ItemStack stack : p.getInventory().getContents()) {
|
||||
if (stack != null)
|
||||
invCont.add(stack);
|
||||
}
|
||||
return invCont;
|
||||
}
|
||||
|
||||
public List<ItemStack> saveArmor(Player p) {
|
||||
final List<ItemStack> armorCont = new ArrayList<>();
|
||||
for (ItemStack stack : p.getInventory().getArmorContents()) {
|
||||
if (stack != null)
|
||||
armorCont.add(stack);
|
||||
}
|
||||
return armorCont;
|
||||
}
|
||||
|
||||
public void loadInventory() {
|
||||
SaveInventory.clear(this.owner);
|
||||
for (int i = 0; i < this.inventory.size(); i++) {
|
||||
this.owner.getInventory().setItem(i, this.inventory.get(i));
|
||||
}
|
||||
}
|
||||
|
||||
public Player getOwner() {
|
||||
return this.owner;
|
||||
}
|
||||
|
||||
public List<ItemStack> getInventory() {
|
||||
return this.inventory;
|
||||
}
|
||||
|
||||
public List<ItemStack> getArmor() {
|
||||
return this.armor;
|
||||
}
|
||||
|
||||
public static void clear(Player p) {
|
||||
p.getInventory().clear();
|
||||
p.getInventory().setArmorContents(new ItemStack[4]);
|
||||
}
|
||||
}
|
||||
+368
-59
@@ -1,113 +1,422 @@
|
||||
package fr.nessar;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.material.Dye;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||
import org.bukkit.event.inventory.InventoryCreativeEvent;
|
||||
import org.bukkit.event.inventory.InventoryDragEvent;
|
||||
import org.bukkit.event.inventory.InventoryInteractEvent;
|
||||
import org.bukkit.event.player.PlayerArmorStandManipulateEvent;
|
||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.event.player.PlayerPickupItemEvent;
|
||||
import org.bukkit.event.player.PlayerPortalEvent;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
public class Staff extends JavaPlugin implements Listener {
|
||||
|
||||
private static final String PREFIX = ChatColor.GRAY + "[" + ChatColor.GOLD + "Staff" + ChatColor.GRAY + "] "
|
||||
private static String urlDB;
|
||||
private static String STAFF_PREFIX = ChatColor.GRAY + "[" + ChatColor.GOLD + "Staff" + ChatColor.GRAY + "] "
|
||||
+ ChatColor.RESET;
|
||||
private static String REPORT_PREFIX = ChatColor.GRAY + "[" + ChatColor.GOLD + "Report" + ChatColor.GRAY + "] "
|
||||
+ ChatColor.RESET;
|
||||
private List<Report> reports;
|
||||
private DataManager dManager;
|
||||
private List<Player> inStaffMod;
|
||||
private List<Inventory> inventories;
|
||||
private List<StaffMod> inStaffMod;
|
||||
private List<Player> frozen;
|
||||
private static Inventory freezeInv = Menu.getFreeze();
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
this.getConfig().options().copyDefaults();
|
||||
this.saveDefaultConfig();
|
||||
this.dManager = new DataManager();
|
||||
this.reports = this.dManager.loadReports();
|
||||
if (this.reports == null) {
|
||||
this.inStaffMod = new ArrayList<StaffMod>();
|
||||
this.frozen = new ArrayList<Player>();
|
||||
Staff.urlDB = "jdbc:h2:" + getDataFolder().getAbsolutePath() + "/data/database";
|
||||
Database.initializeDatabase();
|
||||
try {
|
||||
this.reports = Database.loadReportsFromDB();
|
||||
} catch (Exception e) {
|
||||
Bukkit.getServer().getConsoleSender()
|
||||
.sendMessage(Staff.PREFIX + ChatColor.RED + "ERROR CANNOT LOAD DATA, CREATING EMPTY ONE");
|
||||
this.reports = new ArrayList<>();
|
||||
.sendMessage(Staff.STAFF_PREFIX + ChatColor.RED + "ERROR CANNOT LOAD DATA, DISABLING" + e);
|
||||
Bukkit.getPluginManager().disablePlugin(this);
|
||||
return;
|
||||
}
|
||||
this.inStaffMod = new ArrayList<Player>();
|
||||
this.inventories = new ArrayList<Inventory>();
|
||||
getCommand("staff").setExecutor(new CommandStaffExecutor(this));
|
||||
getCommand("staff").setTabCompleter(new StaffTabCompletion(this));
|
||||
getCommand("freeze").setExecutor(new CommandFreezeExecutor(this));
|
||||
getCommand("unfreeze").setExecutor(new CommandFreezeExecutor(this));
|
||||
// getCommand("staff").setTabCompleter(new StaffTabCompletion(this));
|
||||
Bukkit.getServer().getConsoleSender().sendMessage(Staff.STAFF_PREFIX + ChatColor.GREEN + "Loaded.");
|
||||
getServer().getPluginManager().registerEvents(this, this);
|
||||
Bukkit.getServer().getConsoleSender().sendMessage(Staff.PREFIX + ChatColor.GREEN + "Loaded.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
this.dManager.saveReports(this.reports);
|
||||
Bukkit.getConsoleSender().sendMessage(Staff.PREFIX + ChatColor.RED + "Reports saved.");
|
||||
Bukkit.getConsoleSender().sendMessage(Staff.PREFIX + ChatColor.RED + "Unloaded.");
|
||||
}
|
||||
|
||||
public List<ItemStack> saveArmor(Player p) {
|
||||
final List<ItemStack> armorCont = new ArrayList<>();
|
||||
for (ItemStack stack : p.getInventory().getArmorContents()) {
|
||||
if (stack != null)
|
||||
armorCont.add(stack);
|
||||
for (StaffMod sm : this.inStaffMod) {
|
||||
toggleStaffMod(sm.getPlayer());
|
||||
}
|
||||
return armorCont;
|
||||
Bukkit.getConsoleSender().sendMessage(Staff.STAFF_PREFIX + ChatColor.RED + "Reports saved.");
|
||||
Bukkit.getConsoleSender().sendMessage(Staff.STAFF_PREFIX + ChatColor.RED + "Unloaded.");
|
||||
}
|
||||
|
||||
public List<ItemStack> saveInv(Player p) {
|
||||
final List<ItemStack> invCont = new ArrayList<>();
|
||||
for (ItemStack stack : p.getInventory().getContents()) {
|
||||
if (stack != null)
|
||||
invCont.add(stack);
|
||||
public void newReport(Player reporter, Player reported, String reportReason) {
|
||||
Report freshReport = new Report(reporter, reported, reportReason, true);
|
||||
try {
|
||||
Database.addReportToDB(freshReport);
|
||||
} catch (SQLException e) {
|
||||
reporter.sendMessage(REPORT_PREFIX + "Votre report n'a pas pu être pris en compte désolé.");
|
||||
Bukkit.getConsoleSender().sendMessage(
|
||||
REPORT_PREFIX + ChatColor.RED + "Ajout a la DB impossible, report non pris en compte.");
|
||||
return;
|
||||
}
|
||||
return invCont;
|
||||
this.reports.add(freshReport);
|
||||
}
|
||||
|
||||
public void saveAllInv(Player p) {
|
||||
this.inventories.add(new Inventory(p, saveInv(p), saveArmor(p)));
|
||||
public void newTicket(Player reporter, Player reported, String reportReason) {
|
||||
Report freshTicket = new Report(reporter, reported, reportReason, false);
|
||||
try {
|
||||
Database.addReportToDB(freshTicket);
|
||||
} catch (SQLException e) {
|
||||
reporter.sendMessage(REPORT_PREFIX + "Votre ticket n'a pas pu être pris en compte désolé.");
|
||||
Bukkit.getConsoleSender().sendMessage(
|
||||
REPORT_PREFIX + ChatColor.RED + "Ajout a la DB impossible, ticket non pris en compte.");
|
||||
return;
|
||||
}
|
||||
this.reports.add(freshTicket);
|
||||
}
|
||||
|
||||
public void deleteSavedInv(Player p) {
|
||||
for (int i = 0; i < this.inventories.size(); i++) {
|
||||
if (this.inventories.get(i).getOwner().getUniqueId().equals(p.getUniqueId())) {
|
||||
this.inventories.remove(i);
|
||||
public static String getUrlDB() {
|
||||
return Staff.urlDB;
|
||||
}
|
||||
|
||||
public int getNbReport() {
|
||||
return this.reports.size();
|
||||
}
|
||||
|
||||
public int getNbReport(ReportStatus status, int classed, int report) {
|
||||
int ret = 0;
|
||||
boolean want_only_ticket = report == 0;
|
||||
boolean want_only_report = report == 1;
|
||||
boolean want_all_type = report == 2;
|
||||
boolean want_classed = classed == 1;
|
||||
boolean want_only_classed = classed == 2;
|
||||
for (Report r : this.reports) {
|
||||
if (r.getStatus().isGreaterOrEqualThan(status)
|
||||
&& (want_all_type || want_only_ticket == r.isTicket() || want_only_report == r.isReport())
|
||||
&& (want_classed || want_only_classed == r.getStatus().isClassed())) {
|
||||
ret++;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
public void toggleStaffMod(Player p) {
|
||||
int indexStaffMod = isInStaffMod(p);
|
||||
if (indexStaffMod != -1) {
|
||||
this.inStaffMod.get(indexStaffMod).disableStaffMod();
|
||||
this.inStaffMod.remove(indexStaffMod);
|
||||
} else {
|
||||
this.inStaffMod.add(new StaffMod(this, p));
|
||||
}
|
||||
}
|
||||
|
||||
public int isInStaffMod(Player p) {
|
||||
for (int i = 0; i < this.inStaffMod.size(); i++) {
|
||||
if (inStaffMod.get(i).isHim(p)) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public int isFrozen(Player p) {
|
||||
for (int i = 0; i < this.frozen.size(); i++) {
|
||||
if (frozen.get(i).getUniqueId().equals(p.getUniqueId())) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public void toggleFreeze(Player p) {
|
||||
int indexFroze = isFrozen(p);
|
||||
if (indexFroze != -1) {
|
||||
this.frozen.remove(indexFroze);
|
||||
p.removePotionEffect(PotionEffectType.SLOW);
|
||||
p.closeInventory();
|
||||
} else {
|
||||
this.frozen.add(p);
|
||||
p.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 99999, 255, true, true));
|
||||
p.openInventory(Staff.freezeInv);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerDrop(PlayerDropItemEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
int indexStaffMod = isInStaffMod(p);
|
||||
if (indexStaffMod != -1) {
|
||||
if (inStaffMod.get(indexStaffMod).isStaffInv())
|
||||
event.setCancelled(true);
|
||||
else {
|
||||
if (!p.getInventory().getItem(8).getType().equals(Material.STICK))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void clear(Player p) {
|
||||
p.getInventory().clear();
|
||||
p.getInventory().setArmorContents(new ItemStack[4]);
|
||||
}
|
||||
|
||||
public void setStaffItem(Player p) {
|
||||
// p.getInventory().setContents();
|
||||
}
|
||||
|
||||
public void setStaffMod(Player p) {
|
||||
}
|
||||
|
||||
public boolean isInStaffMod(Player p) {
|
||||
for (Player p2 : this.inStaffMod) {
|
||||
if (p2.getUniqueId().equals(p.getUniqueId())) {
|
||||
return true;
|
||||
@EventHandler
|
||||
public void onPlayerInventoryDragEvent(InventoryDragEvent event) {
|
||||
Player p = (Player) event.getWhoClicked();
|
||||
int indexStaffMod = isInStaffMod(p);
|
||||
if (indexStaffMod != -1) {
|
||||
if (inStaffMod.get(indexStaffMod).isStaffInv())
|
||||
event.setCancelled(true);
|
||||
else {
|
||||
if (!p.getInventory().getItem(8).getType().equals(Material.STICK))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void changeStaffMod(Player p) {
|
||||
@EventHandler
|
||||
public void onPlayerInventoryCreativeEvent(InventoryCreativeEvent event) {
|
||||
Player p = (Player) event.getWhoClicked();
|
||||
int indexStaffMod = isInStaffMod(p);
|
||||
if (indexStaffMod != -1) {
|
||||
if (inStaffMod.get(indexStaffMod).isStaffInv())
|
||||
event.setCancelled(true);
|
||||
else {
|
||||
if (!p.getInventory().getItem(8).getType().equals(Material.STICK))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerPlayerInteractEvent(PlayerInteractEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
int indexStaffMod = isInStaffMod(p);
|
||||
if (indexStaffMod != -1) {
|
||||
if (event.getMaterial().equals(Material.STICK) || inStaffMod.get(indexStaffMod).isStaffInv()) {
|
||||
event.setCancelled(true);
|
||||
inStaffMod.get(indexStaffMod).toggleOrUseSlot(event.getMaterial());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerPlayerInteractEntityEvent(PlayerInteractEntityEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
int indexStaffMod = isInStaffMod(p);
|
||||
if (indexStaffMod != -1) {
|
||||
event.setCancelled(true);
|
||||
if (event.getRightClicked() instanceof Player) {
|
||||
Player target = (Player) event.getRightClicked();
|
||||
this.frozen.add(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void sendFrozeMessage(Player p) {
|
||||
p.sendMessage(
|
||||
"" + ChatColor.GOLD + "████████████████" + ChatColor.DARK_RED + "█" + ChatColor.GOLD
|
||||
+ "████████████████");
|
||||
p.sendMessage("" + ChatColor.GOLD + "███████████████" + ChatColor.DARK_RED + "█" + ChatColor.GOLD + "█"
|
||||
+ ChatColor.DARK_RED + "█" + ChatColor.GOLD + "███████████████");
|
||||
p.sendMessage("" + ChatColor.GOLD + "██████████████" + ChatColor.DARK_RED + "█" + ChatColor.GOLD + "███"
|
||||
+ ChatColor.DARK_RED + "█" + ChatColor.GOLD + "██████████████");
|
||||
p.sendMessage("" + ChatColor.GOLD + "█████████████" + ChatColor.DARK_RED + "█" + ChatColor.GOLD + "█████"
|
||||
+ ChatColor.DARK_RED + "█" + ChatColor.GOLD + "█████████████");
|
||||
p.sendMessage("" + ChatColor.GOLD + "████████████" + ChatColor.DARK_RED + "█" + ChatColor.GOLD + "███████"
|
||||
+ ChatColor.DARK_RED + "█" + ChatColor.GOLD + "████████████");
|
||||
p.sendMessage("" + ChatColor.GOLD + "███████████" + ChatColor.DARK_RED + "█" + ChatColor.GOLD + "████"
|
||||
+ ChatColor.DARK_RED + "██" + ChatColor.GOLD + "███" + ChatColor.DARK_RED
|
||||
+ "█" + ChatColor.GOLD + "███████████");
|
||||
p.sendMessage("" + ChatColor.GOLD + "██████████" + ChatColor.DARK_RED + "█" + ChatColor.GOLD + "████"
|
||||
+ ChatColor.DARK_RED
|
||||
+ "████" + ChatColor.GOLD + "███" + ChatColor.DARK_RED
|
||||
+ "█" + ChatColor.GOLD + "██████████");
|
||||
p.sendMessage("" + ChatColor.GOLD + "█████████" + ChatColor.DARK_RED + "█" + ChatColor.GOLD + "█████"
|
||||
+ ChatColor.DARK_RED
|
||||
+ "████" + ChatColor.GOLD + "████" + ChatColor.DARK_RED
|
||||
+ "█" + ChatColor.GOLD + "█████████");
|
||||
p.sendMessage("" + ChatColor.GOLD + "████████" + ChatColor.DARK_RED + "█" + ChatColor.GOLD + "██████"
|
||||
+ ChatColor.DARK_RED
|
||||
+ "████" + ChatColor.GOLD + "█████" + ChatColor.DARK_RED
|
||||
+ "█" + ChatColor.GOLD + "████████");
|
||||
p.sendMessage("" + ChatColor.GOLD + "███████" + ChatColor.DARK_RED + "█" + ChatColor.GOLD + "███████"
|
||||
+ ChatColor.DARK_RED
|
||||
+ "████" + ChatColor.GOLD + "██████" + ChatColor.DARK_RED
|
||||
+ "█" + ChatColor.GOLD + "███████");
|
||||
p.sendMessage("" + ChatColor.GOLD + "██████" + ChatColor.DARK_RED + "█" + ChatColor.GOLD + "█████████"
|
||||
+ ChatColor.DARK_RED + "██" + ChatColor.GOLD + "████████" + ChatColor.DARK_RED
|
||||
+ "█" + ChatColor.GOLD + "██████");
|
||||
p.sendMessage(
|
||||
"" + ChatColor.GOLD + "█████" + ChatColor.DARK_RED + "█" + ChatColor.GOLD + "█████████████████████"
|
||||
+ ChatColor.DARK_RED + "█" + ChatColor.GOLD + "█████");
|
||||
p.sendMessage("" + ChatColor.GOLD + "████" + ChatColor.DARK_RED + "█" + ChatColor.GOLD + "███████████"
|
||||
+ ChatColor.DARK_RED + "██" + ChatColor.GOLD + "██████████" + ChatColor.DARK_RED
|
||||
+ "█" + ChatColor.GOLD + "████");
|
||||
p.sendMessage("" + ChatColor.GOLD + "███" + ChatColor.DARK_RED + "█" + ChatColor.GOLD + "███████████"
|
||||
+ ChatColor.DARK_RED
|
||||
+ "████" + ChatColor.GOLD + "██████████" + ChatColor.DARK_RED
|
||||
+ "█" + ChatColor.GOLD + "███");
|
||||
p.sendMessage("" + ChatColor.GOLD + "██" + ChatColor.DARK_RED + "█" + ChatColor.GOLD + "█████████████"
|
||||
+ ChatColor.DARK_RED + "██" + ChatColor.GOLD + "████████████" + ChatColor.DARK_RED
|
||||
+ "█" + ChatColor.GOLD + "██");
|
||||
p.sendMessage(
|
||||
"" + ChatColor.GOLD + "█" + ChatColor.DARK_RED + "█" + ChatColor.GOLD + "█████████████████████████████"
|
||||
+ ChatColor.DARK_RED + "█" + ChatColor.GOLD + "█");
|
||||
p.sendMessage("" + ChatColor.DARK_RED + "█████████████████████████████████");
|
||||
}
|
||||
|
||||
public void cancelAndMessageFrozenPlayer(InventoryClickEvent event) {
|
||||
if (!event.isCancelled()) {
|
||||
Player p = (Player) event.getWhoClicked();
|
||||
if (isFrozen(p) != -1) {
|
||||
event.setCancelled(true);
|
||||
sendFrozeMessage(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void cancelAndMessageFrozenPlayer(InventoryCloseEvent event) {
|
||||
Player p = (Player) event.getPlayer();
|
||||
if (isFrozen(p) != -1) {
|
||||
Bukkit.getServer().getScheduler().runTask(this, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
p.openInventory(Staff.freezeInv);
|
||||
}
|
||||
});
|
||||
sendFrozeMessage(p);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void frozePlayerEvent(PlayerArmorStandManipulateEvent event) {
|
||||
cancelAndMessageFrozenPlayer(event);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void frozePlayerEvent(PlayerMoveEvent event) {
|
||||
cancelAndMessageFrozenPlayer(event);
|
||||
}
|
||||
|
||||
private void cancelAndMessageFrozenPlayer(PlayerMoveEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (isFrozen(p) != -1) {
|
||||
event.setCancelled(true);
|
||||
sendFrozeMessage(p);
|
||||
}
|
||||
}
|
||||
|
||||
private void cancelAndMessageFrozenPlayer(PlayerArmorStandManipulateEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (isFrozen(p) != -1) {
|
||||
event.setCancelled(true);
|
||||
sendFrozeMessage(p);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void frozePlayerEvent(PlayerDropItemEvent event) {
|
||||
cancelAndMessageFrozenPlayer(event);
|
||||
}
|
||||
|
||||
private void cancelAndMessageFrozenPlayer(PlayerDropItemEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (isFrozen(p) != -1) {
|
||||
event.setCancelled(true);
|
||||
sendFrozeMessage(p);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void frozePlayerEvent(PlayerPickupItemEvent event) {
|
||||
cancelAndMessageFrozenPlayer(event);
|
||||
}
|
||||
|
||||
private void cancelAndMessageFrozenPlayer(PlayerPickupItemEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (isFrozen(p) != -1) {
|
||||
event.setCancelled(true);
|
||||
sendFrozeMessage(p);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void frozePlayerEvent(PlayerPortalEvent event) {
|
||||
cancelAndMessageFrozenPlayer(event);
|
||||
}
|
||||
|
||||
private void cancelAndMessageFrozenPlayer(PlayerPortalEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (isFrozen(p) != -1) {
|
||||
event.setCancelled(true);
|
||||
sendFrozeMessage(p);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void frozePlayerEvent(InventoryDragEvent event) {
|
||||
cancelAndMessageFrozenPlayer(event);
|
||||
}
|
||||
|
||||
private void cancelAndMessageFrozenPlayer(InventoryDragEvent event) {
|
||||
Player p = (Player) event.getWhoClicked();
|
||||
if (isFrozen(p) != -1) {
|
||||
event.setCancelled(true);
|
||||
sendFrozeMessage(p);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void frozePlayerEvent(InventoryCloseEvent event) {
|
||||
cancelAndMessageFrozenPlayer(event);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void frozePlayerEvent(InventoryClickEvent event) {
|
||||
cancelAndMessageFrozenPlayer(event);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void frozePlayerEvent(InventoryInteractEvent event) {
|
||||
cancelAndMessageFrozenPlayer(event);
|
||||
}
|
||||
|
||||
private void cancelAndMessageFrozenPlayer(InventoryInteractEvent event) {
|
||||
Player p = (Player) event.getWhoClicked();
|
||||
if (isFrozen(p) != -1) {
|
||||
event.setCancelled(true);
|
||||
sendFrozeMessage(p);
|
||||
}
|
||||
}
|
||||
|
||||
public List<Report> getReports() {
|
||||
return this.reports;
|
||||
}
|
||||
|
||||
public static String getPREFIX() {
|
||||
return Staff.PREFIX;
|
||||
public static String getSTAFF_PREFIX() {
|
||||
return Staff.STAFF_PREFIX;
|
||||
}
|
||||
|
||||
public static String getREPORT_PREFIX() {
|
||||
return Staff.REPORT_PREFIX;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
package fr.nessar;
|
||||
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.material.Dye;
|
||||
|
||||
public class StaffInv {
|
||||
private static final ItemStack[] def = { new ItemStack(Material.COMPASS), new ItemStack(Material.BLAZE_ROD),
|
||||
new ItemStack(Material.REDSTONE), new Dye(DyeColor.LIME).toItemStack() };
|
||||
}
|
||||
@@ -0,0 +1,226 @@
|
||||
package fr.nessar;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
import org.bukkit.material.Dye;
|
||||
|
||||
public class StaffMod {
|
||||
private Player who;
|
||||
private Staff plugin;
|
||||
private SaveInventory savedInv;
|
||||
private ItemStack vanish;
|
||||
private ItemStack freeze;
|
||||
private ItemStack reportsOrStaff;
|
||||
private ItemStack only_important_item;
|
||||
private ItemStack statusListening;
|
||||
private ItemStack freeInv;
|
||||
private boolean vanished = false;
|
||||
private boolean isSneaking = false;
|
||||
private boolean only_important = false;
|
||||
private boolean only_ticket = false;
|
||||
private boolean only_report = false;
|
||||
private boolean staffInv = true;
|
||||
|
||||
public StaffMod(Staff plugin, Player p) {
|
||||
this.plugin = plugin;
|
||||
this.who = p;
|
||||
this.savedInv = new SaveInventory(p);
|
||||
this.setItem();
|
||||
p.sendMessage(Staff.getSTAFF_PREFIX() + "Vous êtes desormais en staff mod !");
|
||||
}
|
||||
|
||||
public void toggleStatusListenting() {
|
||||
if (!this.only_ticket && !this.only_report)
|
||||
this.only_ticket = true;
|
||||
else if (!this.only_report) {
|
||||
this.only_report = true;
|
||||
this.only_ticket = false;
|
||||
} else {
|
||||
this.only_report = false;
|
||||
}
|
||||
this.setItem();
|
||||
}
|
||||
|
||||
public void toggleVanish() {
|
||||
if (this.vanished) {
|
||||
this.who.performCommand("v off");
|
||||
this.vanished = false;
|
||||
} else {
|
||||
this.who.performCommand("v on");
|
||||
this.vanished = true;
|
||||
}
|
||||
this.setItem();
|
||||
}
|
||||
|
||||
public void toggleImportant() {
|
||||
this.only_important = !this.only_important;
|
||||
this.setItem();
|
||||
}
|
||||
|
||||
public void toggleStaffInv() {
|
||||
this.staffInv = !this.staffInv;
|
||||
this.setItem();
|
||||
}
|
||||
|
||||
public void toggleOrUseSlot(int slot) {
|
||||
if (slot == 0) {
|
||||
toggleVanish();
|
||||
} else if (slot == 4) {
|
||||
if (isSneaking) {
|
||||
// Menu.open() TODO
|
||||
} else {
|
||||
// Menu.open() TODO
|
||||
}
|
||||
} else if (slot == 6) {
|
||||
this.toggleImportant();
|
||||
} else if (slot == 7) {
|
||||
this.toggleStatusListenting();
|
||||
} else if (slot == 8) {
|
||||
this.toggleStaffInv();
|
||||
}
|
||||
}
|
||||
|
||||
public void toggleOrUseSlot(Material m) {
|
||||
if (m.equals(Material.INK_SACK))
|
||||
toggleVanish();
|
||||
else if (m.equals(Material.PAPER)) {
|
||||
// Menu.open() // TODO
|
||||
} else if (m.equals(Material.SKULL)) {
|
||||
// Menu.open() // TODO
|
||||
} else if (m.equals(Material.REDSTONE) || m.equals(Material.SULPHUR))
|
||||
toggleImportant();
|
||||
else if (m.equals(Material.TORCH) || m.equals(Material.LEVER) || m.equals(Material.REDSTONE_TORCH_ON))
|
||||
toggleStatusListenting();
|
||||
else if (m.equals(Material.BLAZE_ROD) || m.equals(Material.STICK))
|
||||
toggleStaffInv();
|
||||
}
|
||||
|
||||
public boolean isLookingAtFrozePlayer() {
|
||||
return false; // TODO
|
||||
}
|
||||
|
||||
public static ItemStack setNameItem(String name, ItemStack item) {
|
||||
ItemMeta itemM = item.getItemMeta();
|
||||
itemM.setDisplayName(name);
|
||||
item.setItemMeta(itemM);
|
||||
return item;
|
||||
}
|
||||
|
||||
public void updateItems() {
|
||||
if (this.staffInv) {
|
||||
if (this.vanished) {
|
||||
this.vanish = StaffMod.setNameItem(
|
||||
ChatColor.GOLD + "Vanish" + ChatColor.GRAY + ": " + ChatColor.GREEN + "On",
|
||||
new Dye(DyeColor.LIME).toItemStack(1));
|
||||
} else {
|
||||
this.vanish = StaffMod.setNameItem(
|
||||
ChatColor.GOLD + "Vanish" + ChatColor.GRAY + ": " + ChatColor.RED + "Off",
|
||||
new Dye(DyeColor.GRAY).toItemStack(1));
|
||||
}
|
||||
if (this.isLookingAtFrozePlayer()) {
|
||||
this.freeze = StaffMod.setNameItem(ChatColor.BLUE + "Freeze", new ItemStack(Material.ICE));
|
||||
} else {
|
||||
this.freeze = StaffMod.setNameItem(ChatColor.BLUE + "UnFreeze", new ItemStack(Material.PACKED_ICE));
|
||||
}
|
||||
if (isSneaking) {
|
||||
this.reportsOrStaff = setNameItem(ChatColor.GOLD + "Staff list",
|
||||
SetHerobrineHead(new ItemStack(Material.SKULL_ITEM, 1, (byte) 3)));
|
||||
} else {
|
||||
ReportStatus minimalStatus = ReportStatus.WAITING;
|
||||
if (this.only_important) {
|
||||
minimalStatus = ReportStatus.IMPORTANT;
|
||||
}
|
||||
int nbReport = this.plugin.getNbReport(minimalStatus, 0, this.getNbReportReportArg());
|
||||
this.reportsOrStaff = StaffMod.setNameItem(this.getItemNamePaper(minimalStatus),
|
||||
new ItemStack(Material.PAPER, nbReport));
|
||||
}
|
||||
if (this.only_important) {
|
||||
this.only_important_item = setNameItem(ChatColor.GOLD + "Only Important",
|
||||
new ItemStack(Material.REDSTONE));
|
||||
} else {
|
||||
this.only_important_item = setNameItem(ChatColor.GOLD + "Not Only Important",
|
||||
new ItemStack(Material.SULPHUR));
|
||||
}
|
||||
if (!only_ticket && !only_report) {
|
||||
this.statusListening = setNameItem(ChatColor.GOLD + "All waiting", new ItemStack(Material.TORCH));
|
||||
} else if (only_ticket) {
|
||||
this.statusListening = setNameItem(ChatColor.GOLD + "Only Ticket", new ItemStack(Material.LEVER));
|
||||
} else {
|
||||
this.statusListening = setNameItem(ChatColor.GOLD + "Only report",
|
||||
new ItemStack(Material.REDSTONE_TORCH_ON));
|
||||
}
|
||||
this.freeInv = setNameItem(ChatColor.GOLD + "Staff Inv" + ChatColor.GRAY + ": " + ChatColor.GREEN + "On",
|
||||
new ItemStack(Material.BLAZE_ROD));
|
||||
} else {
|
||||
this.freeInv = setNameItem(ChatColor.GOLD + "Staff Inv" + ChatColor.GRAY + ": " + ChatColor.RED + "Off",
|
||||
new ItemStack(Material.STICK));
|
||||
this.vanish = null;
|
||||
this.freeze = null;
|
||||
this.reportsOrStaff = null;
|
||||
this.only_important_item = null;
|
||||
this.statusListening = null;
|
||||
}
|
||||
}
|
||||
|
||||
public ItemStack SetHerobrineHead(ItemStack skull) {
|
||||
SkullMeta itemM = (SkullMeta) Bukkit.getItemFactory().getItemMeta(Material.SKULL_ITEM);
|
||||
itemM.setOwner("d0b15454-36fa-43e4-a247-f882bb9fe288");
|
||||
skull.setItemMeta(itemM);
|
||||
return skull;
|
||||
}
|
||||
|
||||
public String getItemNamePaper(ReportStatus minimalStatus) {
|
||||
String ret = ChatColor.GOLD + "" + ChatColor.BOLD;
|
||||
if (this.only_report) {
|
||||
ret += "Report list ";
|
||||
} else if (this.only_ticket) {
|
||||
ret += "Ticket list ";
|
||||
} else {
|
||||
ret += "Report & Ticket list ";
|
||||
}
|
||||
return ret += "(" + ChatColor.GRAY
|
||||
+ String.valueOf(this.plugin.getNbReport(minimalStatus, 0, this.getNbReportReportArg())) + ")";
|
||||
}
|
||||
|
||||
public void setItem() {
|
||||
SaveInventory.clear(this.who);
|
||||
this.updateItems();
|
||||
ItemStack[] listItem = { this.vanish, this.freeze, null, null, this.reportsOrStaff, null,
|
||||
this.only_important_item, this.statusListening, this.freeInv };
|
||||
for (int i = 0; i < listItem.length; i++) {
|
||||
if (listItem[i] != null) {
|
||||
this.who.getInventory().setItem(i, listItem[i]);
|
||||
} else if (this.staffInv) {
|
||||
this.who.getInventory().setItem(i, new ItemStack(Material.AIR));
|
||||
}
|
||||
}
|
||||
this.who.updateInventory();
|
||||
}
|
||||
|
||||
public boolean isHim(Player p) {
|
||||
return this.who.getUniqueId().equals(p.getUniqueId());
|
||||
}
|
||||
|
||||
public Player getPlayer() {
|
||||
return this.who;
|
||||
}
|
||||
|
||||
public boolean isStaffInv() {
|
||||
return this.staffInv;
|
||||
}
|
||||
|
||||
public int getNbReportReportArg() {
|
||||
return this.only_ticket ? 0 : this.only_report ? 1 : 2;
|
||||
}
|
||||
|
||||
public void disableStaffMod() {
|
||||
this.savedInv.loadInventory();
|
||||
this.who.sendMessage(Staff.getSTAFF_PREFIX() + "Vous n'êtes plus en staff mod !");
|
||||
}
|
||||
}
|
||||
+11
-1
@@ -4,10 +4,20 @@ description: Staff plugin.
|
||||
version: 1
|
||||
api-version: 1.8.8
|
||||
commands:
|
||||
koth:
|
||||
staff:
|
||||
description: enable staff mod
|
||||
permission: staff
|
||||
usage: "Usage: /<command>"
|
||||
freeze:
|
||||
aliases: [block]
|
||||
description: freeze the target
|
||||
permission: staff.freeze
|
||||
usage: "Usage: /<command> <target>"
|
||||
unfreeze:
|
||||
aliases: [defreeze, unblock, free]
|
||||
description: freeze the target
|
||||
permission: staff.unfreeze
|
||||
usage: "Usage: /<command> <target>"
|
||||
|
||||
permissions:
|
||||
staff:
|
||||
|
||||
Reference in new issue
Block a user