方块检测,代码监听,数据库管理
This commit is contained in:
parent
228c268b1b
commit
17c387a1ad
@ -2,12 +2,11 @@ package org.frontleaves.xf_tools.Events;
|
|||||||
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Item;
|
|
||||||
import org.bukkit.entity.LivingEntity;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
|
import org.bukkit.event.entity.EntityPickupItemEvent;
|
||||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||||
import org.frontleaves.xf_tools.XF_Tools;
|
import org.frontleaves.xf_tools.XF_Tools;
|
||||||
@ -22,46 +21,49 @@ public class BlockEvent implements Listener {
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void InventoryEvent(InventoryCloseEvent player) {
|
public void InventoryEvent(InventoryCloseEvent player) {
|
||||||
if (!player.getPlayer().isOp()) {
|
for (String value : Tools.BlockBanList) {
|
||||||
// 基岩检测
|
if (!player.getPlayer().isOp()) {
|
||||||
if (player.getPlayer().getInventory().contains(Material.BEDROCK)) {
|
// 基岩检测
|
||||||
player.getPlayer().getInventory().remove(Material.BEDROCK);
|
if (player.getPlayer().getInventory().contains(Material.getMaterial(value))) {
|
||||||
player.getPlayer().sendMessage(String.format("%s§r%s §r§c这个 %s 你不可以拥有", Tools.XF_Prefix, Tools.XF_PrefixArrow, Material.BEDROCK));
|
player.getPlayer().getInventory().remove(Material.getMaterial(value));
|
||||||
|
player.getPlayer().sendMessage(String.format("%s§r%s §r§c这个 %s 你不可以拥有", Tools.XF_Prefix, Tools.XF_PrefixArrow, value));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Tools.getLogger().warning(String.format("管理 %s 在 [%s][%s,%s,%s] 从背包获取了 %s", player.getPlayer().getName(), player.getPlayer().getLocation().getWorld().getName(), player.getPlayer().getLocation().getX(), player.getPlayer().getLocation().getY(), player.getPlayer().getLocation().getZ(), value));
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
Player players = (Player) player;
|
|
||||||
Location playerLocation = players.getLocation();
|
|
||||||
Tools.getLogger().warning(String.format("§7[%s§7] §r管理 %s 在 [%s][%s,%s,%s] 从背包获取了 %s", Tools.XF_Prefix, players.getDisplayName(), playerLocation.getWorld(), playerLocation.getX(), playerLocation.getY(), playerLocation.getZ(), Material.BEDROCK));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void DropEvent(PlayerDropItemEvent player) {
|
public void DropEvent(PlayerDropItemEvent player) {
|
||||||
if (!player.getPlayer().isOp()) {
|
for (String value : Tools.BlockBanList) {
|
||||||
// 基岩检测
|
if (!player.getPlayer().isOp()) {
|
||||||
if (player.getPlayer().getInventory().contains(Material.BEDROCK)) {
|
// 基岩检测
|
||||||
player.setCancelled(true);
|
if (player.getPlayer().getInventory().contains(Material.getMaterial(value))) {
|
||||||
player.getPlayer().getInventory().remove(Material.BEDROCK);
|
player.setCancelled(true);
|
||||||
player.getPlayer().sendMessage(String.format("%s§r%s §r§c这个 %s 你不可以拥有", Tools.XF_Prefix, Tools.XF_PrefixArrow, Material.BEDROCK));
|
player.getPlayer().getInventory().remove(Material.getMaterial(value));
|
||||||
|
player.getPlayer().sendMessage(String.format("%s§r%s §r§c这个 %s 你不可以拥有", Tools.XF_Prefix, Tools.XF_PrefixArrow, Material.getMaterial(value)));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Player players = (Player) player;
|
||||||
|
Location playerLocation = players.getLocation();
|
||||||
|
Tools.getLogger().warning(String.format("管理 %s 在 [%s][%s,%s,%s] 从丢弃了 %s", players.getDisplayName(), playerLocation.getWorld(), playerLocation.getX(), playerLocation.getY(), playerLocation.getZ(), value));
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
Player players = (Player) player;
|
|
||||||
Location playerLocation = players.getLocation();
|
|
||||||
Tools.getLogger().warning(String.format("§7[%s§7] §r管理 %s 在 [%s][%s,%s,%s] 从丢弃了 %s", Tools.XF_Prefix, players.getDisplayName(), playerLocation.getWorld(), playerLocation.getX(), playerLocation.getY(), playerLocation.getZ(), Material.BEDROCK));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void EntityPickupItemEvent(LivingEntity entity, Item item, int remaining) {
|
public void PickupEvent(EntityPickupItemEvent pickupItemEvent) {
|
||||||
if (entity instanceof Player) {
|
for (String value : Tools.BlockBanList) {
|
||||||
|
Player entity = (Player) pickupItemEvent.getEntity();
|
||||||
if (!entity.isOp()) {
|
if (!entity.isOp()) {
|
||||||
if (item.getItemStack().getType() == Material.BEDROCK) {
|
if (pickupItemEvent.getItem().getItemStack().getType() == Material.getMaterial(value)) {
|
||||||
entity.setCanPickupItems(false);
|
entity.setCanPickupItems(false);
|
||||||
entity.sendMessage(String.format("%s§r%s §r§c这个 %s 你不可以拥有", Tools.XF_Prefix, Tools.XF_PrefixArrow, Material.BEDROCK));
|
entity.sendMessage(String.format("%s§r%s §r§c这个 %s 你不可以拥有", Tools.XF_Prefix, Tools.XF_PrefixArrow, value));
|
||||||
} else {
|
} else {
|
||||||
Location playerLocation = entity.getLocation();
|
Location playerLocation = entity.getLocation();
|
||||||
Tools.getLogger().warning(String.format("§7[%s§7] §r管理 %s 在 [%s][%s,%s,%s] 捡起了 %s", Tools.XF_Prefix, ((Player) entity).getDisplayName(), playerLocation.getWorld(), playerLocation.getX(), playerLocation.getY(), playerLocation.getZ(), Material.BEDROCK));
|
Tools.getLogger().warning(String.format("管理 %s 在 [%s][%s,%s,%s] 捡起了 %s%n", entity.getDisplayName(), playerLocation.getWorld(), playerLocation.getX(), playerLocation.getY(), playerLocation.getZ(), value));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -69,16 +71,18 @@ public class BlockEvent implements Listener {
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void BlockPlaceEvent(BlockPlaceEvent player) {
|
public void BlockPlaceEvent(BlockPlaceEvent player) {
|
||||||
if (!player.getPlayer().isOp()) {
|
for (String value : Tools.BlockBanList) {
|
||||||
// 基岩检测
|
if (!player.getPlayer().isOp()) {
|
||||||
if (player.getPlayer().getInventory().contains(Material.BEDROCK)) {
|
// 基岩检测
|
||||||
player.setCancelled(true);
|
if (player.getPlayer().getInventory().contains(Material.getMaterial(value))) {
|
||||||
player.getPlayer().getInventory().remove(Material.BEDROCK);
|
player.setCancelled(true);
|
||||||
player.getPlayer().sendMessage(String.format("%s§r%s §r§c这个 %s 你不可以拥有", Tools.XF_Prefix, Tools.XF_PrefixArrow, Material.BEDROCK));
|
player.getPlayer().getInventory().remove(Material.getMaterial(value));
|
||||||
} else {
|
player.getPlayer().sendMessage(String.format("%s§r%s §r§c这个 %s 你不可以拥有", Tools.XF_Prefix, Tools.XF_PrefixArrow, value));
|
||||||
Player players = (Player) player;
|
} else {
|
||||||
Location playerLocation = players.getLocation();
|
Player players = (Player) player;
|
||||||
Tools.getLogger().warning(String.format("§7[%s§7] §r管理 %s 在 [%s][%s,%s,%s] 位置使用了 %s", Tools.XF_Prefix, players.getDisplayName(), playerLocation.getWorld(), playerLocation.getX(), playerLocation.getY(), playerLocation.getZ(), Material.BEDROCK));
|
Location playerLocation = players.getLocation();
|
||||||
|
Tools.getLogger().warning(String.format("管理 %s 在 [%s][%s,%s,%s] 位置使用了 %s", players.getDisplayName(), playerLocation.getWorld(), playerLocation.getX(), playerLocation.getY(), playerLocation.getZ(), value));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
package org.frontleaves.xf_tools.Events;
|
||||||
|
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||||
|
import org.frontleaves.xf_tools.XF_Tools;
|
||||||
|
|
||||||
|
public class CommandEvent implements Listener {
|
||||||
|
|
||||||
|
private final XF_Tools Tools;
|
||||||
|
|
||||||
|
public CommandEvent(XF_Tools Tools) {
|
||||||
|
this.Tools = Tools;
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void PlayerCommandEvent(PlayerCommandPreprocessEvent playerCommandPreprocessEvent) {
|
||||||
|
// 将数据输出并载入数据库
|
||||||
|
if (Tools.UseSQL) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
Tools.getLogger().warning(String.format("§r玩家 %s 输入了 %s", playerCommandPreprocessEvent.getPlayer().getDisplayName(), playerCommandPreprocessEvent.getMessage()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void PlayerCommandForDropEvent(PlayerCommandPreprocessEvent playerCommandPreprocessEvent) {
|
||||||
|
// 检查数据内容
|
||||||
|
if (playerCommandPreprocessEvent.getMessage().equals("/drop")) {
|
||||||
|
playerCommandPreprocessEvent.setMessage("/xf-drop off");
|
||||||
|
}
|
||||||
|
if (playerCommandPreprocessEvent.getMessage().equals("/drop-on")) {
|
||||||
|
playerCommandPreprocessEvent.setMessage("/xf-drop on");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,91 @@
|
|||||||
|
package org.frontleaves.xf_tools.Others;
|
||||||
|
|
||||||
|
import org.frontleaves.xf_tools.XF_Tools;
|
||||||
|
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public class DataBaseCreate {
|
||||||
|
|
||||||
|
private final XF_Tools Tools;
|
||||||
|
|
||||||
|
public DataBaseCreate(XF_Tools Tools) {
|
||||||
|
this.Tools = Tools;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CreateTable() {
|
||||||
|
try {
|
||||||
|
Class.forName("com.mysql.jdbc.Driver");
|
||||||
|
Tools.SqlConn = DriverManager.getConnection("jdbc:mysql://" + Tools.getConfig().getString("Mysql_Host") + ":" + Tools.getConfig().getInt("Mysql_Port") + "/?useSSL=" + Tools.getConfig().getString("Mysql_SSL"), Tools.getConfig().getString("Mysql_User"), Tools.getConfig().getString("Mysql_Password"));
|
||||||
|
Tools.Stmt = Tools.SqlConn.createStatement();
|
||||||
|
Tools.UseSQL = true;
|
||||||
|
Tools.getLogger().info("数据库已成功连接!");
|
||||||
|
} catch (ClassNotFoundException e) {
|
||||||
|
Tools.UseSQL = false;
|
||||||
|
} catch (SQLException e) {
|
||||||
|
Tools.getLogger().warning("数据库无法连接,已禁止使用数据库!");
|
||||||
|
Tools.UseSQL = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.Create()) {
|
||||||
|
Tools.getLogger().info("创建数据表");
|
||||||
|
Tools.UseSQL = true;
|
||||||
|
} else Tools.UseSQL = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean Create() {
|
||||||
|
try {
|
||||||
|
if (Tools.Stmt.executeQuery("SELECT TABLE_NAME,TABLE_SCHEMA FROM information_schema.TABLES WHERE TABLE_SCHEMA='xf_tools' AND TABLE_NAME LIKE '%xftls%'").next()) {
|
||||||
|
Tools.getLogger().info("2");
|
||||||
|
ResultSet Result_Table = Tools.Stmt.executeQuery("SELECT TABLE_NAME,TABLE_SCHEMA FROM information_schema.TABLES WHERE TABLE_SCHEMA='xf_tools' AND TABLE_NAME LIKE '%xftls%'");
|
||||||
|
while (Result_Table.next()) {
|
||||||
|
if (!Objects.equals(Result_Table.getString("TABLE_NAME"), TABLE_NAME.xftls_commandslogs.name())) {
|
||||||
|
if (!CreateCommandsLogs()) Tools.getLogger().warning("数据表 xftls_commandslogs 创建失败");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Tools.getLogger().info("20");
|
||||||
|
if (!Tools.Stmt.executeQuery("SELECT * FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='xf_tools'").next()) {
|
||||||
|
if (Tools.Stmt.execute("CREATE SCHEMA xf_tools")) Tools.getLogger().info("数据库 xf_tools 创建完毕");
|
||||||
|
else {
|
||||||
|
Tools.getLogger().info("数据库创建失败,数据库禁用");
|
||||||
|
Tools.UseSQL = false;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!CreateCommandsLogs()) {
|
||||||
|
Tools.getLogger().warning("数据表 xftls_commandslogs 创建失败,数据库禁用");
|
||||||
|
Tools.UseSQL = false;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean CreateCommandsLogs() {
|
||||||
|
/*Tools.getLogger().info("1");
|
||||||
|
// 如果不存在这个数据库,需要创建一个数据库
|
||||||
|
try {
|
||||||
|
Tools.getLogger().info("2");
|
||||||
|
Tools.Stmt.execute("CREATE TABLE xf_tools.xftls_commandslogs (`id` INT NOT NULL AUTO_INCREMENT," +
|
||||||
|
"`player` VARCHAR(16) NOT NULL," +
|
||||||
|
"`command` TEXT NOT NULL, " +
|
||||||
|
"PRIMARY KEY (`id`)) ENGINE = MyISAM;");
|
||||||
|
return true;
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
return false;
|
||||||
|
}*/
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum TABLE_NAME {
|
||||||
|
xftls_commandslogs,
|
||||||
|
}
|
||||||
|
}
|
@ -6,13 +6,12 @@ import org.frontleaves.xf_tools.Commands.OpCheckCommandExecutor;
|
|||||||
import org.frontleaves.xf_tools.Commands.XfDropCommandExecutor;
|
import org.frontleaves.xf_tools.Commands.XfDropCommandExecutor;
|
||||||
import org.frontleaves.xf_tools.Commands.XfOpCommandExecutor;
|
import org.frontleaves.xf_tools.Commands.XfOpCommandExecutor;
|
||||||
import org.frontleaves.xf_tools.Events.BlockEvent;
|
import org.frontleaves.xf_tools.Events.BlockEvent;
|
||||||
|
import org.frontleaves.xf_tools.Events.CommandEvent;
|
||||||
import org.frontleaves.xf_tools.Events.DropEvent;
|
import org.frontleaves.xf_tools.Events.DropEvent;
|
||||||
import org.frontleaves.xf_tools.Events.PlayerActivityListener;
|
import org.frontleaves.xf_tools.Events.PlayerActivityListener;
|
||||||
import org.frontleaves.xf_tools.Others.DataBaseCreate;
|
import org.frontleaves.xf_tools.Others.DataBaseCreate;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.DriverManager;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.sql.Statement;
|
import java.sql.Statement;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -27,7 +26,7 @@ public final class XF_Tools extends JavaPlugin {
|
|||||||
public boolean UseSQL = false;
|
public boolean UseSQL = false;
|
||||||
public Connection SqlConn;
|
public Connection SqlConn;
|
||||||
public Statement Stmt;
|
public Statement Stmt;
|
||||||
|
public List<String> BlockBanList = new ArrayList<>();
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
// 载入指令
|
// 载入指令
|
||||||
@ -44,27 +43,17 @@ public final class XF_Tools extends JavaPlugin {
|
|||||||
getServer().getPluginManager().registerEvents(new PlayerActivityListener(this), this);
|
getServer().getPluginManager().registerEvents(new PlayerActivityListener(this), this);
|
||||||
getServer().getPluginManager().registerEvents(new BlockEvent(this), this);
|
getServer().getPluginManager().registerEvents(new BlockEvent(this), this);
|
||||||
getServer().getPluginManager().registerEvents(new DropEvent(this), this);
|
getServer().getPluginManager().registerEvents(new DropEvent(this), this);
|
||||||
|
getServer().getPluginManager().registerEvents(new CommandEvent(this),this);
|
||||||
|
|
||||||
// 输出配置文件
|
// 输出配置文件
|
||||||
saveDefaultConfig();
|
saveDefaultConfig();
|
||||||
|
// 获取配置文件
|
||||||
|
this.BlockBanList = getConfig().getStringList("BanBlock_List");
|
||||||
|
|
||||||
// 数据库配置部分
|
// 数据库配置部分
|
||||||
if (getConfig().getBoolean("Mysql_Open")) {
|
if (getConfig().getBoolean("Mysql_Open")) {
|
||||||
try {
|
DataBaseCreate dataBaseCreate = new DataBaseCreate(this);
|
||||||
Class.forName("com.mysql.jdbc.Driver");
|
dataBaseCreate.CreateTable();
|
||||||
this.SqlConn = DriverManager.getConnection("jdbc:mysql://"+getConfig().getString("Mysql_Host")+":"+getConfig().getInt("Mysql_Port")+"/?useSSL="+getConfig().getString("Mysql_SSL"),getConfig().getString("Mysql_User"),getConfig().getString("Mysql_Password"));
|
|
||||||
this.Stmt = this.SqlConn.createStatement();
|
|
||||||
this.UseSQL = true;
|
|
||||||
getLogger().info("数据库已成功连接!");
|
|
||||||
} catch (ClassNotFoundException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
} catch (SQLException e) {
|
|
||||||
getLogger().warning("数据库无法连接,已禁止使用数据库!");
|
|
||||||
}
|
|
||||||
DataBaseCreate DataCheck = new DataBaseCreate(this);
|
|
||||||
if (DataCheck.Create()) {
|
|
||||||
getLogger().info("创建数据表");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 信息输出
|
// 信息输出
|
||||||
|
Loading…
x
Reference in New Issue
Block a user