5 Commits

23 changed files with 68 additions and 151 deletions

13
.gitignore vendored Normal file
View File

@@ -0,0 +1,13 @@
# 默认忽略的文件
/shelf/
/workspace.xml
# 已忽略包含查询文件的默认文件夹
/queries/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
# 忽略target目录
/target/

3
.idea/.gitignore generated vendored
View File

@@ -8,3 +8,6 @@
/dataSources.local.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
# 忽略target目录
/target/

View File

@@ -56,7 +56,7 @@ config:
| `/creeperboom status` | disablecreeperboom.admin | 查看当前配置状态 |
| `/creeperboom help` | disablecreeperboom.admin | 显示帮助信息 |
**命令别名**: `/cb`, `/creeper`
**命令别名**: `/cboom`, `/creeper`
## 权限节点
@@ -150,5 +150,5 @@ A: 请使用 `/creeperboom reload` 命令重新加载配置文件
---
**Minecraft 版本**: 1.21.8
**插件版本**: 1.0-SNAPSHOT
**插件版本**: 1.1-SNAPSHOT
**开发者**: gtb520

View File

@@ -4,7 +4,7 @@
<groupId>top.gtb520.java.minecraft.plugins</groupId>
<artifactId>DisableCreeperBoom</artifactId>
<name>DisableCreeperBoom</name>
<version>1.0-SNAPSHOT</version>
<version>1.1-SNAPSHOT</version>
<build>
<defaultGoal>clean package</defaultGoal>
<resources>

View File

@@ -6,7 +6,11 @@
<groupId>top.gtb520.java.minecraft.plugins</groupId>
<artifactId>DisableCreeperBoom</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 版本迭代,版本号-->
<!-- <version>1.0-SNAPSHOT</version>-->
<version>1.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>DisableCreeperBoom</name>

View File

@@ -9,6 +9,8 @@ import top.gtb520.java.minecraft.plugins.disableCreeperBoom.main;
import java.util.Arrays;
import static top.gtb520.java.minecraft.plugins.disableCreeperBoom.utils.unity.GetLoggerPlus;
public class creeperboom_Commands implements CommandExecutor {
@Override
@@ -22,13 +24,13 @@ public class creeperboom_Commands implements CommandExecutor {
// Debug部分
boolean debug = main.instance.getConfig().getBoolean("config.debug", false);
if (debug) {
main.getInstance().getLogger().info("========DisableCreeperBoom Command Debug========\n" +
"sender: " + sender.toString() + "\n" +
"command: " + command.toString() + "\n" +
"label: " + label + "\n" +
"args: " + Arrays.toString(args) + "\n" +
"========DisableCreeperBoom Command Debug========"
);
// 更美观的打印Debug信息
GetLoggerPlus("========DisableCreeperBoom Command Debug========");
GetLoggerPlus("sender: " + sender);
GetLoggerPlus("command: " + command);
GetLoggerPlus("label: " + label);
GetLoggerPlus("args: " + Arrays.toString(args));
GetLoggerPlus("========DisableCreeperBoom Command Debug========");
}
// 没有参数时显示帮助信息
@@ -66,7 +68,7 @@ public class creeperboom_Commands implements CommandExecutor {
sender.sendMessage(ChatColor.YELLOW + "/" + "creeperboom" + " reload" + ChatColor.WHITE + " - 重新加载配置文件");
sender.sendMessage(ChatColor.YELLOW + "/" + "creeperboom" + " status" + ChatColor.WHITE + " - 查看当前配置状态");
sender.sendMessage(ChatColor.YELLOW + "/" + "creeperboom" + " help" + ChatColor.WHITE + " - 显示此帮助信息");
sender.sendMessage(ChatColor.GREEN + "====================================");
sender.sendMessage(ChatColor.GREEN + "======== DisableCreeperBoom 帮助 ========");
}
/**
@@ -75,7 +77,7 @@ public class creeperboom_Commands implements CommandExecutor {
private void handleReload(CommandSender sender) {
main.instance.reloadConfig();
sender.sendMessage(ChatColor.GREEN + "配置文件已重新加载!");
// 如果开启debug模式输出日志
if (main.instance.getConfig().getBoolean("config.debug", false)) {
main.getInstance().getLogger().info("配置文件已由 " + sender.getName() + " 重新加载");
@@ -96,6 +98,6 @@ public class creeperboom_Commands implements CommandExecutor {
sender.sendMessage(ChatColor.WHITE + "阻止爆炸破坏: " + (preventExplode ? ChatColor.GREEN + "" : ChatColor.RED + ""));
sender.sendMessage(ChatColor.WHITE + "阻止爆炸伤害: " + (preventDamage ? ChatColor.GREEN + "" : ChatColor.RED + ""));
sender.sendMessage(ChatColor.WHITE + "调试模式: " + (debug ? ChatColor.GREEN + "开启" : ChatColor.RED + "关闭"));
sender.sendMessage(ChatColor.GREEN + "====================================");
sender.sendMessage(ChatColor.GREEN + "======== DisableCreeperBoom 状态 ========");
}
}

View File

@@ -1,6 +1,7 @@
package top.gtb520.java.minecraft.plugins.disableCreeperBoom.Event;
import org.bukkit.entity.Creeper;
import org.bukkit.entity.EntityType;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -30,7 +31,7 @@ public class CreeperBoom implements Listener {
if (preventBlockDamage) {
// 取消方块破坏
event.setCancelled(true);
// 如果开启debug模式输出日志
if (main.instance.getConfig().getBoolean("config.debug", false)) {
main.getInstance().getLogger().info("已阻止苦力怕爆炸破坏方块 at " + event.getLocation());
@@ -63,10 +64,14 @@ public class CreeperBoom implements Listener {
if (preventDamage) {
// 取消伤害
event.setCancelled(true);
// 如果开启debug模式输出日志
if (main.instance.getConfig().getBoolean("config.debug", false)) {
main.getInstance().getLogger().info("已阻止苦力怕对 " + event.getEntity().getType() + " 造成伤害");
// 如果是玩家,输出玩家名称
if (event.getEntity().getType() == EntityType.PLAYER) {
main.getInstance().getLogger().info("已阻止苦力怕对玩家 " + event.getEntity().getName() + " 造成伤害");
}
}
}
}

View File

@@ -19,13 +19,23 @@ public final class main extends JavaPlugin {
public static YamlFile_Utils Yaml;
public static main instance;
private static PluginDescriptionFile descriptionFile;
public static PluginDescriptionFile getDescriptionFile() {
return descriptionFile;
}
public static main getInstance() {
return instance;
}
private static void Makedirs(List<File> Folders) {
for (File EachFolder : Folders) {
if (!EachFolder.exists()) {
EachFolder.mkdirs();
}
}
}
@Override
public void onEnable() {
// Plugin startup logic
@@ -37,10 +47,9 @@ public final class main extends JavaPlugin {
" | (_) | '_ \\/ -_) ' \\\\__ \\/ _ \\ || | '_/ _/ -_)\n" +
" \\___/| .__/\\___|_||_|___/\\___/\\_,_|_| \\__\\___|\n" +
" |_| \n");
GetLoggerPlus("&f========DisableCreeperBoom========" + "\n" +
"禁用苦力怕爆炸破坏" + "\n" +
"&f========DisableCreeperBoom========\""
);
GetLoggerPlus("&f========DisableCreeperBoom========");
GetLoggerPlus("禁用苦力怕爆炸破坏");
GetLoggerPlus("&f========DisableCreeperBoom========");
// 加载配置文件及初始化目录等
File Folder = new File(String.valueOf(getDataFolder()));
@@ -48,7 +57,7 @@ public final class main extends JavaPlugin {
Yaml = new YamlFile_Utils();
if (!Folder.exists() || !Config_File.exists()) {
Folder.mkdirs();
Yaml.saveYamlFile(getDataFolder().getPath(), "config.yml", "config.yml",true);
Yaml.saveYamlFile(getDataFolder().getPath(), "config.yml", "config.yml", true);
}
List<File> Folders = new ArrayList<>();
Folders.add(new File(getDataFolder().getPath()));
@@ -67,12 +76,4 @@ public final class main extends JavaPlugin {
public void onDisable() {
// Plugin shutdown logic
}
private static void Makedirs(List<File> Folders) {
for (File EachFolder : Folders) {
if (!EachFolder.exists()) {
EachFolder.mkdirs();
}
}
}
}

View File

@@ -20,7 +20,7 @@ public class YamlFile_Utils {
return null;
}
}
public void saveYmlFile(String FilePath, String FileName, String ResourcePath) {
File Folder = new File(FilePath);
if (!Folder.exists())
@@ -28,7 +28,7 @@ public class YamlFile_Utils {
saveResource(FilePath, ResourcePath, FileName, false);
}
public void saveYamlFile(String FilePath, String FileName, String ResourcePath,boolean Replace) {
public void saveYamlFile(String FilePath, String FileName, String ResourcePath, boolean Replace) {
File Folder = new File(FilePath);
if (!Folder.exists())
Folder.mkdirs();

View File

@@ -2,133 +2,22 @@ package top.gtb520.java.minecraft.plugins.disableCreeperBoom.utils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.SkullMeta;
import top.gtb520.java.minecraft.plugins.disableCreeperBoom.main;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Objects;
public class unity {
public static void SaveAndReloadConfig() {
main.instance.saveConfig();
main.instance.reloadConfig();
}
public static String ColorMessage(String String1) {
return ChatColor.translateAlternateColorCodes('&',String1);
public static String ColorMessage(String Message) {
return ChatColor.translateAlternateColorCodes('&', Message);
}
public static void GetLoggerPlus(String String1) {
public static void GetLoggerPlus(String ConsoleMessage) {
CommandSender Console = Bukkit.getConsoleSender();
Console.sendMessage(ColorMessage(String1));
}
static HashMap<String, Integer> IntTemp = new HashMap<>();
static HashMap<String, String> StringTemp = new HashMap<>();
static HashMap<String, Boolean> BooleanTemp = new HashMap<>();
static HashMap<String, Location> LocationTemp = new HashMap<>();
public static void SetLocationTempTemp(String String1, Location String2) {
LocationTemp.put(String1,String2);
}
public static Location getLocationTempTemp(String String1) {
return LocationTemp.get(String1);
}
public static void SetStringTemp(String String1,String String2) {
StringTemp.put(String1,String2);
}
public static String getStringTemp(String String1) {
return StringTemp.get(String1);
}
public static void SetIntTemp(String String1, Integer Int1) {
IntTemp.put(String1,Int1);
}
public static Integer GetIntTemp(String String1) {
return IntTemp.get(String1);
}
public static void SetBooleanTemp(String String1, boolean Boolean1) {
BooleanTemp.put(String1, Boolean1);
}
public static boolean getBooleanTemp(String String1) {
return BooleanTemp.get(String1);
}
public static void KickGui(Player player) {
Inventory UI = Bukkit.createInventory(player,45, ColorMessage("&a选择你要踢出的玩家"));
ItemStack Bk = new ItemStack(Material.ORANGE_STAINED_GLASS_PANE);
ItemMeta Bk_Meta = Bk.getItemMeta();
Objects.requireNonNull(Bk_Meta).setDisplayName(ColorMessage("&e这只是一个边框"));
ArrayList<String> Bk_Lore = new ArrayList<>();
Bk_Lore.add(null);
Bk_Lore.add(ColorMessage("&e这只是一个边框"));
Bk_Meta.setLore(Bk_Lore);
Bk.setItemMeta(Bk_Meta);
for (int i1 = 0 ; i1 <9 ; i1++) {
UI.setItem(i1,Bk);
}
for (int i2 = 36 ; i2 <40 ; i2++) {
UI.setItem(i2,Bk);
}
for (int i3 = 41 ; i3 <45 ; i3++) {
UI.setItem(i3,Bk);
}
UI.setItem(9,Bk);
UI.setItem(17,Bk);
UI.setItem(18,Bk);
UI.setItem(26,Bk);
UI.setItem(27,Bk);
UI.setItem(35,Bk);
ItemStack Gb = new ItemStack(Material.REDSTONE_BLOCK);
ItemMeta Gb_Meta = Gb.getItemMeta();
Objects.requireNonNull(Gb_Meta).setDisplayName(ColorMessage("&d关闭菜单"));
ArrayList<String> Gb_Lore = new ArrayList<>();
Gb_Lore.add(null);
Gb_Lore.add(ColorMessage("&e点击关闭菜单"));
Gb_Meta.setLore(Gb_Lore);
Gb.setItemMeta(Gb_Meta);
UI.setItem(40,Gb);
ArrayList<Player> players = new ArrayList<>(player.getServer().getOnlinePlayers());
for (Player value : players) {
ItemStack PlayerHead = new ItemStack(Material.PLAYER_HEAD);
SkullMeta PlayerHead_meta = (SkullMeta) PlayerHead.getItemMeta();
Objects.requireNonNull(PlayerHead_meta).setOwningPlayer(value);
Objects.requireNonNull(PlayerHead_meta).setDisplayName(ChatColor.RESET + value.getDisplayName() + ChatColor.RESET);
ArrayList<String> PlayerHead_Lore = new ArrayList<>();
PlayerHead_Lore.add(null);
PlayerHead_Lore.add(ColorMessage( "&e点击踢出玩家"));
PlayerHead_meta.setLore(PlayerHead_Lore);
PlayerHead.setItemMeta(PlayerHead_meta);
UI.addItem(PlayerHead);
}
player.openInventory(UI);
Console.sendMessage(ColorMessage(ConsoleMessage));
}
}

View File

@@ -10,7 +10,7 @@ commands:
creeperboom:
description: 苦力怕爆炸控制插件主命令
usage: /<command> [reload|status]
aliases: [cb, creeper]
aliases: [cboom, creeper]
permission: disablecreeperboom.admin
permission-message: "你没有权限使用此命令"

Binary file not shown.

Binary file not shown.

View File

@@ -1,5 +1,5 @@
name: DisableCreeperBoom
version: '1.0-SNAPSHOT'
version: '1.1-SNAPSHOT'
main: top.gtb520.java.minecraft.plugins.disableCreeperBoom.main
api-version: '1.21'
authors: [gtb520]
@@ -10,7 +10,7 @@ commands:
creeperboom:
description: 苦力怕爆炸控制插件主命令
usage: /<command> [reload|status]
aliases: [cb, creeper]
aliases: [cboom, creeper]
permission: disablecreeperboom.admin
permission-message: "你没有权限使用此命令"

View File

@@ -1,3 +1,3 @@
artifactId=DisableCreeperBoom
groupId=top.gtb520.java.minecraft.plugins
version=1.0-SNAPSHOT
version=1.1-SNAPSHOT

Binary file not shown.