DisableCreeperBoom

This commit is contained in:
2026-05-14 01:09:44 +08:00
commit 312ae59e2e
242 changed files with 85812 additions and 0 deletions

10
.idea/.gitignore generated vendored Normal file
View File

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

5
.idea/codeStyles/codeStyleConfig.xml generated Normal file
View File

@@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
</state>
</component>

13
.idea/compiler.xml generated Normal file
View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="DisableCreeperBoom" />
</profile>
</annotationProcessing>
</component>
</project>

7
.idea/dictionaries/project.xml generated Normal file
View File

@@ -0,0 +1,7 @@
<component name="ProjectDictionaryState">
<dictionary name="project">
<words>
<w>creeperboom</w>
</words>
</dictionary>
</component>

7
.idea/encodings.xml generated Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component>
</project>

25
.idea/jarRepositories.xml generated Normal file
View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="spigotmc-repo" />
<option name="name" value="spigotmc-repo" />
<option name="url" value="https://hub.spigotmc.org/nexus/content/repositories/snapshots/" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
</component>
</project>

14
.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="21" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

8
.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/DisableCreeperBoom.iml" filepath="$PROJECT_DIR$/DisableCreeperBoom.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

19
DisableCreeperBoom.iml Normal file
View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="AdditionalModuleElements">
<content url="file://$MODULE_DIR$" dumb="true">
<sourceFolder url="file://$MODULE_DIR$/test" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/test_server" type="java-test-resource" />
</content>
</component>
<component name="FacetManager">
<facet type="minecraft" name="Minecraft">
<configuration>
<autoDetectTypes>
<platformType>SPIGOT</platformType>
</autoDetectTypes>
<projectReimportVersion>1</projectReimportVersion>
</configuration>
</facet>
</component>
</module>

154
README.md Normal file
View File

@@ -0,0 +1,154 @@
# DisableCreeperBoom - 苦力怕爆炸控制插件
## 插件简介
DisableCreeperBoom 是一个基于 Bukkit API 的 Minecraft 插件,适用于 Minecraft 1.21.8 版本。该插件允许服务器管理员控制苦力怕的爆炸行为,包括阻止爆炸破坏方块和阻止爆炸对玩家/实体造成伤害。
## 功能特性
-**阻止方块破坏**: 可以配置苦力怕爆炸时不破坏任何方块
-**阻止伤害**: 可以配置苦力怕爆炸不对玩家和实体造成伤害
-**灵活配置**: 通过配置文件轻松开关各项功能
-**命令管理**: 支持在游戏中重新加载配置和查看状态
-**调试模式**: 提供详细的调试日志输出
## 安装方法
1. 将编译好的 `DisableCreeperBoom.jar` 文件放入服务器的 `plugins` 文件夹
2. 启动或重启 Minecraft 服务器
3. 插件会自动生成配置文件 `config.yml`
4. 根据需要编辑配置文件
5. 使用 `/creeperboom reload` 命令重新加载配置
## 配置说明
配置文件位于 `plugins/DisableCreeperBoom/config.yml`
```yaml
config:
# 插件总开关 - 是否启用此插件功能
# true = 启用插件功能
# false = 禁用插件功能(苦力怕正常爆炸)
Enable: true
# 苦力怕爆炸破坏方块控制
# true = 阻止苦力怕爆炸破坏方块
# false = 允许苦力怕爆炸破坏方块
CreeperExplode: true
# 苦力怕爆炸伤害控制
# true = 阻止苦力怕爆炸对玩家和实体造成伤害
# false = 允许苦力怕爆炸对玩家和实体造成伤害
CreeperDamage: true
# 调试模式
# true = 在控制台输出详细的调试信息
# false = 关闭调试信息输出
debug: false
```
## 命令列表
| 命令 | 权限 | 描述 |
|------|------|------|
| `/creeperboom` | disablecreeperboom.admin | 显示帮助信息 |
| `/creeperboom reload` | disablecreeperboom.admin | 重新加载配置文件 |
| `/creeperboom status` | disablecreeperboom.admin | 查看当前配置状态 |
| `/creeperboom help` | disablecreeperboom.admin | 显示帮助信息 |
**命令别名**: `/cb`, `/creeper`
## 权限节点
- `disablecreeperboom.admin` - 允许使用插件管理命令(默认 OP
## 使用示例
### 场景 1: 完全禁止苦力怕爆炸破坏
```yaml
config:
Enable: true
CreeperExplode: true
CreeperDamage: true
debug: false
```
### 场景 2: 只阻止方块破坏,但保留伤害
```yaml
config:
Enable: true
CreeperExplode: true
CreeperDamage: false
debug: false
```
### 场景 3: 只阻止伤害,但允许破坏方块
```yaml
config:
Enable: true
CreeperExplode: false
CreeperDamage: true
debug: false
```
### 场景 4: 临时禁用插件功能
```yaml
config:
Enable: false
CreeperExplode: true
CreeperDamage: true
debug: false
```
## 技术细节
- **API 版本**: 1.21
- **Java 版本**: Java 21
- **依赖**: Spigot API 1.21.8-R0.1-SNAPSHOT
- **构建工具**: Maven
## 开发构建
如果你想要自己编译这个插件:
```bash
mvn clean package
```
编译后的 JAR 文件将位于 `target/` 目录中。
## 注意事项
1. 修改配置文件后,需要使用 `/creeperboom reload` 命令或重启服务器才能使更改生效
2.`Enable` 设置为 `false` 时,所有功能都将被禁用,苦力怕会正常爆炸
3. 调试模式会在控制台输出详细的事件日志,建议在生产环境中关闭
4. 插件只影响苦力怕的爆炸行为,不会影响其他爆炸源(如 TNT、末影水晶等
## 常见问题
**Q: 为什么苦力怕还是会破坏方块?**
A: 请检查配置文件中 `CreeperExplode` 是否设置为 `true`,并确保插件已启用(`Enable: true`
**Q: 如何确认插件正在运行?**
A: 使用 `/creeperboom status` 命令查看当前配置状态
**Q: 修改配置后为什么不生效?**
A: 请使用 `/creeperboom reload` 命令重新加载配置文件
## 支持与反馈
如果你遇到问题或有建议,请提交 Issue 或联系开发者。
## 许可证
本项目遵循开源协议,可自由使用和修改。
---
**Minecraft 版本**: 1.21.8
**插件版本**: 1.0-SNAPSHOT
**开发者**: gtb520

View File

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>top.gtb520.java.minecraft.plugins</groupId>
<artifactId>DisableCreeperBoom</artifactId>
<name>DisableCreeperBoom</name>
<version>1.0-SNAPSHOT</version>
<build>
<defaultGoal>clean package</defaultGoal>
<resources>
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spigotmc-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.21.8-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>21</java.version>
</properties>
</project>

74
pom.xml Normal file
View File

@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>top.gtb520.java.minecraft.plugins</groupId>
<artifactId>DisableCreeperBoom</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>DisableCreeperBoom</name>
<properties>
<java.version>21</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<defaultGoal>clean package</defaultGoal>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<repositories>
<repository>
<id>spigotmc-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.21.8-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>26.0.2</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,101 @@
package top.gtb520.java.minecraft.plugins.disableCreeperBoom.Commands;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;
import top.gtb520.java.minecraft.plugins.disableCreeperBoom.main;
import java.util.Arrays;
public class creeperboom_Commands implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
// 检查权限
if (!sender.hasPermission("disablecreeperboom.admin")) {
sender.sendMessage(ChatColor.RED + "你没有权限使用此命令!");
return true;
}
// 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========"
);
}
// 没有参数时显示帮助信息
if (args.length == 0) {
showHelp(sender);
return true;
}
// 处理命令参数
String subCommand = args[0].toLowerCase();
switch (subCommand) {
case "reload":
handleReload(sender);
break;
case "status":
handleStatus(sender);
break;
case "help":
showHelp(sender);
break;
default:
sender.sendMessage(ChatColor.RED + "未知命令!使用 /" + label + " help 查看帮助");
break;
}
return true;
}
/**
* 显示帮助信息
*/
private void showHelp(CommandSender sender) {
sender.sendMessage(ChatColor.GREEN + "======== DisableCreeperBoom 帮助 ========");
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 + "====================================");
}
/**
* 处理重载命令
*/
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() + " 重新加载");
}
}
/**
* 处理状态查询命令
*/
private void handleStatus(CommandSender sender) {
boolean enabled = main.instance.getConfig().getBoolean("config.Enable", true);
boolean preventExplode = main.instance.getConfig().getBoolean("config.CreeperExplode", false);
boolean preventDamage = main.instance.getConfig().getBoolean("config.CreeperDamage", false);
boolean debug = main.instance.getConfig().getBoolean("config.debug", false);
sender.sendMessage(ChatColor.GREEN + "======== DisableCreeperBoom 状态 ========");
sender.sendMessage(ChatColor.WHITE + "插件启用: " + (enabled ? ChatColor.GREEN + "" : ChatColor.RED + ""));
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 + "====================================");
}
}

View File

@@ -0,0 +1,73 @@
package top.gtb520.java.minecraft.plugins.disableCreeperBoom.Event;
import org.bukkit.entity.Creeper;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import top.gtb520.java.minecraft.plugins.disableCreeperBoom.main;
public class CreeperBoom implements Listener {
/**
* 处理苦力怕爆炸事件 - 阻止破坏方块
*/
@EventHandler
public void onCreeperExplode(EntityExplodeEvent event) {
// 检查插件是否启用
if (!main.instance.getConfig().getBoolean("config.Enable", true)) {
return;
}
// 检查是否是苦力怕爆炸
if (!(event.getEntity() instanceof Creeper)) {
return;
}
// 获取配置项:是否阻止苦力怕爆炸破坏方块
boolean preventBlockDamage = main.instance.getConfig().getBoolean("config.CreeperExplode", false);
if (preventBlockDamage) {
// 取消方块破坏
event.setCancelled(true);
// 如果开启debug模式输出日志
if (main.instance.getConfig().getBoolean("config.debug", false)) {
main.getInstance().getLogger().info("已阻止苦力怕爆炸破坏方块 at " + event.getLocation());
}
} else {
// 如果不阻止破坏,但需要清除爆炸影响的方块列表
// 这样可以让爆炸发生但不破坏任何方块
event.blockList().clear();
}
}
/**
* 处理苦力怕伤害事件 - 阻止对玩家和实体造成伤害
*/
@EventHandler
public void onCreeperDamage(EntityDamageByEntityEvent event) {
// 检查插件是否启用
if (!main.instance.getConfig().getBoolean("config.Enable", true)) {
return;
}
// 检查攻击者是否是苦力怕
if (!(event.getDamager() instanceof Creeper)) {
return;
}
// 获取配置项:是否阻止苦力怕伤害
boolean preventDamage = main.instance.getConfig().getBoolean("config.CreeperDamage", false);
if (preventDamage) {
// 取消伤害
event.setCancelled(true);
// 如果开启debug模式输出日志
if (main.instance.getConfig().getBoolean("config.debug", false)) {
main.getInstance().getLogger().info("已阻止苦力怕对 " + event.getEntity().getType() + " 造成伤害");
}
}
}
}

View File

@@ -0,0 +1,78 @@
package top.gtb520.java.minecraft.plugins.disableCreeperBoom;
import org.bukkit.Bukkit;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.java.JavaPlugin;
import top.gtb520.java.minecraft.plugins.disableCreeperBoom.Commands.creeperboom_Commands;
import top.gtb520.java.minecraft.plugins.disableCreeperBoom.Event.CreeperBoom;
import top.gtb520.java.minecraft.plugins.disableCreeperBoom.utils.YamlFile_Utils;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import static top.gtb520.java.minecraft.plugins.disableCreeperBoom.utils.unity.GetLoggerPlus;
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;
}
@Override
public void onEnable() {
// Plugin startup logic
instance = this;
GetLoggerPlus("\n" +
" ___ ___ \n" +
" / _ \\ _ __ ___ _ _ / __| ___ _ _ _ _ __ ___ \n" +
" | (_) | '_ \\/ -_) ' \\\\__ \\/ _ \\ || | '_/ _/ -_)\n" +
" \\___/| .__/\\___|_||_|___/\\___/\\_,_|_| \\__\\___|\n" +
" |_| \n");
GetLoggerPlus("&f========DisableCreeperBoom========" + "\n" +
"禁用苦力怕爆炸破坏" + "\n" +
"&f========DisableCreeperBoom========\""
);
// 加载配置文件及初始化目录等
File Folder = new File(String.valueOf(getDataFolder()));
File Config_File = new File(getDataFolder(), "config.yml");
Yaml = new YamlFile_Utils();
if (!Folder.exists() || !Config_File.exists()) {
Folder.mkdirs();
Yaml.saveYamlFile(getDataFolder().getPath(), "config.yml", "config.yml",true);
}
List<File> Folders = new ArrayList<>();
Folders.add(new File(getDataFolder().getPath()));
Makedirs(Folders);
// 注册事件监听器
Bukkit.getPluginManager().registerEvents(new CreeperBoom(), this);
// 注册命令
Objects.requireNonNull(getCommand("creeperboom")).setExecutor(new creeperboom_Commands());
}
@Override
public void onDisable() {
// Plugin shutdown logic
}
private static void Makedirs(List<File> Folders) {
for (File EachFolder : Folders) {
if (!EachFolder.exists()) {
EachFolder.mkdirs();
}
}
}
}

View File

@@ -0,0 +1,62 @@
package top.gtb520.java.minecraft.plugins.disableCreeperBoom.utils;
import org.jetbrains.annotations.NotNull;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
public class YamlFile_Utils {
private InputStream getResource(@NotNull String filename) {
try {
URL URL = getClass().getClassLoader().getResource(filename);
if (URL == null)
return null;
URLConnection Connection = URL.openConnection();
Connection.setUseCaches(false);
return Connection.getInputStream();
} catch (IOException ex) {
return null;
}
}
public void saveYmlFile(String FilePath, String FileName, String ResourcePath) {
File Folder = new File(FilePath);
if (!Folder.exists())
Folder.mkdirs();
saveResource(FilePath, ResourcePath, FileName, false);
}
public void saveYamlFile(String FilePath, String FileName, String ResourcePath,boolean Replace) {
File Folder = new File(FilePath);
if (!Folder.exists())
Folder.mkdirs();
saveResource(FilePath, ResourcePath, FileName, Replace);
}
public void saveResource(String FilePath, @NotNull String ResourcePath, String OutFileName, boolean Replace) {
if (ResourcePath.equals(""))
throw new IllegalArgumentException("ResourcePath cannot be null or empty");
ResourcePath = ResourcePath.replace('\\', '/');
InputStream in = getResource(ResourcePath);
if (in == null)
throw new IllegalArgumentException("The embedded resource '" + ResourcePath + "' cannot be found in " + ResourcePath);
File OutFile = new File(FilePath, OutFileName);
try {
if (!OutFile.exists() || Replace) {
OutputStream out = new FileOutputStream(OutFile);
byte[] buf = new byte[1024];
int Len;
while ((Len = in.read(buf)) > 0)
out.write(buf, 0, Len);
out.close();
in.close();
} else {
System.out.println("Could not save " + OutFile.getName() + " to " + OutFile + " because " + OutFile.getName() + " already exists.");
}
} catch (IOException ex) {
System.out.println("Could not save " + OutFile.getName() + " to " + OutFile);
}
}
}

View File

@@ -0,0 +1,134 @@
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 void GetLoggerPlus(String String1) {
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);
}
}

View File

@@ -0,0 +1,27 @@
# ============================================
# DisableCreeperBoom 插件配置文件
# ============================================
# Minecraft 版本: 1.21.8
# Bukkit API 插件
# ============================================
config:
# 插件总开关 - 是否启用此插件功能
# true = 启用插件功能
# false = 禁用插件功能(苦力怕正常爆炸)
Enable: true
# 苦力怕爆炸破坏方块控制
# true = 阻止苦力怕爆炸破坏方块
# false = 允许苦力怕爆炸破坏方块
CreeperExplode: true
# 苦力怕爆炸伤害控制
# true = 阻止苦力怕爆炸对玩家和实体造成伤害
# false = 允许苦力怕爆炸对玩家和实体造成伤害
CreeperDamage: true
# 调试模式
# true = 在控制台输出详细的调试信息
# false = 关闭调试信息输出
debug: false

View File

@@ -0,0 +1,20 @@
name: DisableCreeperBoom
version: '${version}'
main: top.gtb520.java.minecraft.plugins.disableCreeperBoom.main
api-version: '1.21'
authors: [gtb520]
description: 禁用苦力怕爆炸破坏方块和伤害玩家
website: https://github.com/gtb520
commands:
creeperboom:
description: 苦力怕爆炸控制插件主命令
usage: /<command> [reload|status]
aliases: [cb, creeper]
permission: disablecreeperboom.admin
permission-message: "你没有权限使用此命令"
permissions:
disablecreeperboom.admin:
description: 允许使用插件管理命令
default: op

Binary file not shown.

Binary file not shown.

27
target/classes/config.yml Normal file
View File

@@ -0,0 +1,27 @@
# ============================================
# DisableCreeperBoom 插件配置文件
# ============================================
# Minecraft 版本: 1.21.8
# Bukkit API 插件
# ============================================
config:
# 插件总开关 - 是否启用此插件功能
# true = 启用插件功能
# false = 禁用插件功能(苦力怕正常爆炸)
Enable: true
# 苦力怕爆炸破坏方块控制
# true = 阻止苦力怕爆炸破坏方块
# false = 允许苦力怕爆炸破坏方块
CreeperExplode: true
# 苦力怕爆炸伤害控制
# true = 阻止苦力怕爆炸对玩家和实体造成伤害
# false = 允许苦力怕爆炸对玩家和实体造成伤害
CreeperDamage: true
# 调试模式
# true = 在控制台输出详细的调试信息
# false = 关闭调试信息输出
debug: false

20
target/classes/plugin.yml Normal file
View File

@@ -0,0 +1,20 @@
name: DisableCreeperBoom
version: '1.0-SNAPSHOT'
main: top.gtb520.java.minecraft.plugins.disableCreeperBoom.main
api-version: '1.21'
authors: [gtb520]
description: 禁用苦力怕爆炸破坏方块和伤害玩家
website: https://github.com/gtb520
commands:
creeperboom:
description: 苦力怕爆炸控制插件主命令
usage: /<command> [reload|status]
aliases: [cb, creeper]
permission: disablecreeperboom.admin
permission-message: "你没有权限使用此命令"
permissions:
disablecreeperboom.admin:
description: 允许使用插件管理命令
default: op

View File

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

View File

@@ -0,0 +1,5 @@
top\gtb520\java\minecraft\plugins\disableCreeperBoom\Commands\creeperboom_Commands.class
top\gtb520\java\minecraft\plugins\disableCreeperBoom\main.class
top\gtb520\java\minecraft\plugins\disableCreeperBoom\Event\CreeperBoom.class
top\gtb520\java\minecraft\plugins\disableCreeperBoom\utils\unity.class
top\gtb520\java\minecraft\plugins\disableCreeperBoom\utils\YamlFile_Utils.class

View File

@@ -0,0 +1,5 @@
G:\Project\Java\DisableCreeperBoom\src\main\java\top\gtb520\java\minecraft\plugins\disableCreeperBoom\Commands\creeperboom_Commands.java
G:\Project\Java\DisableCreeperBoom\src\main\java\top\gtb520\java\minecraft\plugins\disableCreeperBoom\Event\CreeperBoom.java
G:\Project\Java\DisableCreeperBoom\src\main\java\top\gtb520\java\minecraft\plugins\disableCreeperBoom\main.java
G:\Project\Java\DisableCreeperBoom\src\main\java\top\gtb520\java\minecraft\plugins\disableCreeperBoom\utils\unity.java
G:\Project\Java\DisableCreeperBoom\src\main\java\top\gtb520\java\minecraft\plugins\disableCreeperBoom\utils\YamlFile_Utils.java

Binary file not shown.

View File

@@ -0,0 +1,9 @@
1778691498431:help
1778691500592:stop
1778691564681:pl
1778691581408:cb
1778691585451:cb status
1778691609772:cb reload
1778691613673:cb status
1778691656326:op a1a1a13684
1778691892779:stop

View File

@@ -0,0 +1 @@
[]

View File

@@ -0,0 +1 @@
[]

43
test/server/bukkit.yml Normal file
View File

@@ -0,0 +1,43 @@
# This is the Bukkit configuration file in Paper.
# As you can see, there's actually not that much to configure without any plugins.
#
# If you need help with the configuration or have any questions related to Paper,
# join us in our Discord or check the docs page.
#
# File Reference: https://docs.papermc.io/paper/reference/bukkit-configuration/
# Docs: https://docs.papermc.io/
# Discord: https://discord.gg/papermc
# Website: https://papermc.io/
settings:
allow-end: true
warn-on-overload: true
permissions-file: permissions.yml
update-folder: update
plugin-profiling: false
connection-throttle: 4000
query-plugins: true
deprecated-verbose: default
shutdown-message: Server closed
minimum-api: none
use-map-color-cache: true
spawn-limits:
monsters: 70
animals: 10
water-animals: 5
water-ambient: 20
water-underground-creature: 5
axolotls: 5
ambient: 15
chunk-gc:
period-in-ticks: 600
ticks-per:
animal-spawns: 400
monster-spawns: 1
water-spawns: 1
water-ambient-spawns: 1
water-underground-creature-spawns: 1
axolotl-spawns: 1
ambient-spawns: 1
autosave: 6000
aliases: now-in-commands.yml

BIN
test/server/cache/mojang_1.21.8.jar vendored Normal file

Binary file not shown.

15
test/server/commands.yml Normal file
View File

@@ -0,0 +1,15 @@
# This is the Bukkit commands configuration file for Paper.
#
# If you need help with the configuration or have any questions related to Paper,
# join us in our Discord or check the docs page.
#
# File Reference: https://docs.papermc.io/paper/reference/bukkit-commands-configuration/
# Docs: https://docs.papermc.io/
# Discord: https://discord.gg/papermc
# Website: https://papermc.io/
command-block-overrides: []
ignore-vanilla-permissions: false
aliases:
icanhasbukkit:
- version $1-

View File

@@ -0,0 +1,143 @@
# This is the global configuration file for Paper.
# As you can see, there's a lot to configure. Some options may impact gameplay, so use
# with caution, and make sure you know what each option does before configuring.
#
# If you need help with the configuration or have any questions related to Paper,
# join us in our Discord or check the docs page.
#
# The world configuration options have been moved inside
# their respective world folder. The files are named paper-world.yml
#
# File Reference: https://docs.papermc.io/paper/reference/global-configuration/
# Docs: https://docs.papermc.io/
# Discord: https://discord.gg/papermc
# Website: https://papermc.io/
_version: 30
anticheat:
obfuscation:
items:
all-models:
also-obfuscate: []
dont-obfuscate:
- minecraft:lodestone_tracker
sanitize-count: true
enable-item-obfuscation: false
model-overrides:
minecraft:elytra:
also-obfuscate: []
dont-obfuscate:
- minecraft:damage
sanitize-count: true
block-updates:
disable-chorus-plant-updates: false
disable-mushroom-block-updates: false
disable-noteblock-updates: false
disable-tripwire-updates: false
chunk-loading-advanced:
auto-config-send-distance: true
player-max-concurrent-chunk-generates: 0
player-max-concurrent-chunk-loads: 0
chunk-loading-basic:
player-max-chunk-generate-rate: -1.0
player-max-chunk-load-rate: 100.0
player-max-chunk-send-rate: 75.0
chunk-system:
gen-parallelism: default
io-threads: -1
worker-threads: -1
collisions:
enable-player-collisions: true
send-full-pos-for-hard-colliding-entities: true
commands:
ride-command-allow-player-as-vehicle: false
suggest-player-names-when-null-tab-completions: true
time-command-affects-all-worlds: false
console:
enable-brigadier-completions: true
enable-brigadier-highlighting: true
has-all-permissions: false
item-validation:
book:
author: 8192
page: 16384
title: 8192
book-size:
page-max: 2560
total-multiplier: 0.98
display-name: 8192
lore-line: 8192
resolve-selectors-in-books: false
logging:
deobfuscate-stacktraces: true
messages:
kick:
authentication-servers-down: <lang:multiplayer.disconnect.authservers_down>
connection-throttle: Connection throttled! Please wait before reconnecting.
flying-player: <lang:multiplayer.disconnect.flying>
flying-vehicle: <lang:multiplayer.disconnect.flying>
no-permission: <red>I'm sorry, but you do not have permission to perform this command.
Please contact the server administrators if you believe that this is in error.
use-display-name-in-quit-message: false
misc:
chat-threads:
chat-executor-core-size: -1
chat-executor-max-size: -1
client-interaction-leniency-distance: default
compression-level: default
load-permissions-yml-before-plugins: true
max-joins-per-tick: 5
prevent-negative-villager-demand: false
region-file-cache-size: 256
send-full-pos-for-item-entities: false
strict-advancement-dimension-check: false
use-alternative-luck-formula: false
use-dimension-type-for-custom-spawners: false
xp-orb-groups-per-area: default
packet-limiter:
all-packets:
action: KICK
interval: 7.0
max-packet-rate: 500.0
kick-message: <red><lang:disconnect.exceeded_packet_rate>
overrides:
minecraft:place_recipe:
action: DROP
interval: 4.0
max-packet-rate: 5.0
player-auto-save:
max-per-tick: -1
rate: -1
proxies:
bungee-cord:
online-mode: true
proxy-protocol: false
velocity:
enabled: false
online-mode: true
secret: ''
scoreboards:
save-empty-scoreboard-teams: true
track-plugin-scoreboards: false
spam-limiter:
incoming-packet-threshold: 300
recipe-spam-increment: 1
recipe-spam-limit: 20
tab-spam-increment: 1
tab-spam-limit: 500
spark:
enable-immediately: false
enabled: true
unsupported-settings:
allow-headless-pistons: false
allow-permanent-block-break-exploits: false
allow-piston-duplication: false
allow-unsafe-end-portal-teleportation: false
compression-format: ZLIB
perform-username-validation: true
skip-tripwire-hook-placement-validation: false
skip-vanilla-damage-tick-when-shield-blocked: false
update-equipment-on-player-actions: true
watchdog:
early-warning-delay: 10000
early-warning-every: 5000

View File

@@ -0,0 +1,320 @@
# This is the world defaults configuration file for Paper.
# As you can see, there's a lot to configure. Some options may impact gameplay, so use
# with caution, and make sure you know what each option does before configuring.
#
# If you need help with the configuration or have any questions related to Paper,
# join us in our Discord or check the docs page.
#
# Configuration options here apply to all worlds, unless you specify overrides inside
# the world-specific config file inside each world folder.
#
# File Reference: https://docs.papermc.io/paper/reference/world-configuration/
# Docs: https://docs.papermc.io/
# Discord: https://discord.gg/papermc
# Website: https://papermc.io/
_version: 31
anticheat:
anti-xray:
enabled: false
engine-mode: 1
hidden-blocks:
- copper_ore
- deepslate_copper_ore
- raw_copper_block
- gold_ore
- deepslate_gold_ore
- iron_ore
- deepslate_iron_ore
- raw_iron_block
- coal_ore
- deepslate_coal_ore
- lapis_ore
- deepslate_lapis_ore
- mossy_cobblestone
- obsidian
- chest
- diamond_ore
- deepslate_diamond_ore
- redstone_ore
- deepslate_redstone_ore
- clay
- emerald_ore
- deepslate_emerald_ore
- ender_chest
lava-obscures: false
max-block-height: 64
replacement-blocks:
- stone
- oak_planks
- deepslate
update-radius: 2
use-permission: false
chunks:
auto-save-interval: default
delay-chunk-unloads-by: 10s
entity-per-chunk-save-limit:
arrow: -1
ender_pearl: -1
experience_orb: -1
fireball: -1
small_fireball: -1
snowball: -1
fixed-chunk-inhabited-time: -1
flush-regions-on-save: false
max-auto-save-chunks-per-tick: 24
prevent-moving-into-unloaded-chunks: false
collisions:
allow-player-cramming-damage: false
allow-vehicle-collisions: true
fix-climbing-bypassing-cramming-rule: false
max-entity-collisions: 8
only-players-collide: false
command-blocks:
force-follow-perm-level: true
permissions-level: 2
entities:
armor-stands:
do-collision-entity-lookups: true
tick: true
behavior:
allow-spider-world-border-climbing: true
baby-zombie-movement-modifier: 0.5
cooldown-failed-beehive-releases: true
disable-chest-cat-detection: false
disable-creeper-lingering-effect: false
disable-player-crits: false
door-breaking-difficulty:
husk:
- HARD
vindicator:
- NORMAL
- HARD
zombie:
- HARD
zombie_villager:
- HARD
zombified_piglin:
- HARD
ender-dragons-death-always-places-dragon-egg: false
experience-merge-max-value: -1
mobs-can-always-pick-up-loot:
skeletons: false
zombies: false
nerf-pigmen-from-nether-portals: false
only-merge-items-horizontally: false
parrots-are-unaffected-by-player-movement: false
phantoms-do-not-spawn-on-creative-players: true
phantoms-only-attack-insomniacs: true
phantoms-spawn-attempt-max-seconds: 119
phantoms-spawn-attempt-min-seconds: 60
piglins-guard-chests: true
pillager-patrols:
disable: false
spawn-chance: 0.2
spawn-delay:
per-player: false
ticks: 12000
start:
day: 5
per-player: false
player-insomnia-start-ticks: 72000
should-remove-dragon: false
spawner-nerfed-mobs-should-jump: false
stuck-entity-poi-retry-delay: 200
zombie-villager-infection-chance: default
zombies-target-turtle-eggs: true
markers:
tick: true
mob-effects:
immune-to-wither-effect:
wither: true
wither-skeleton: true
spiders-immune-to-poison-effect: true
sniffer:
boosted-hatch-time: default
hatch-time: default
spawning:
all-chunks-are-slime-chunks: false
alt-item-despawn-rate:
enabled: false
items:
cobblestone: 300
count-all-mobs-for-spawning: false
creative-arrow-despawn-rate: default
despawn-range-shape: ELLIPSOID
despawn-ranges:
ambient:
hard: default
soft: default
axolotls:
hard: default
soft: default
creature:
hard: default
soft: default
misc:
hard: default
soft: default
monster:
hard: default
soft: default
underground_water_creature:
hard: default
soft: default
water_ambient:
hard: default
soft: default
water_creature:
hard: default
soft: default
despawn-time:
llama_spit: disabled
snowball: disabled
disable-mob-spawner-spawn-egg-transformation: false
duplicate-uuid:
mode: SAFE_REGEN
safe-regen-delete-range: 32
filter-bad-tile-entity-nbt-from-falling-blocks: true
filtered-entity-tag-nbt-paths:
- Pos
- Motion
- sleeping_pos
iron-golems-can-spawn-in-air: false
monster-spawn-max-light-level: default
non-player-arrow-despawn-rate: default
per-player-mob-spawns: true
scan-for-legacy-ender-dragon: true
skeleton-horse-thunder-spawn-chance: default
slime-spawn-height:
slime-chunk:
maximum: 40.0
surface-biome:
maximum: 70.0
minimum: 50.0
spawn-limits:
ambient: -1
axolotls: -1
creature: -1
monster: -1
underground_water_creature: -1
water_ambient: -1
water_creature: -1
ticks-per-spawn:
ambient: -1
axolotls: -1
creature: -1
monster: -1
underground_water_creature: -1
water_ambient: -1
water_creature: -1
wandering-trader:
spawn-chance-failure-increment: 25
spawn-chance-max: 75
spawn-chance-min: 25
spawn-day-length: 24000
spawn-minute-length: 1200
wateranimal-spawn-height:
maximum: default
minimum: default
tracking-range-y:
animal: default
display: default
enabled: false
misc: default
monster: default
other: default
player: default
environment:
disable-explosion-knockback: false
disable-ice-and-snow: false
disable-thunder: false
fire-tick-delay: 30
frosted-ice:
delay:
max: 40
min: 20
enabled: true
generate-flat-bedrock: false
locate-structures-outside-world-border: false
max-block-ticks: 65536
max-fluid-ticks: 65536
nether-ceiling-void-damage-height: disabled
optimize-explosions: false
portal-create-radius: 16
portal-search-radius: 128
portal-search-vanilla-dimension-scaling: true
treasure-maps:
enabled: true
find-already-discovered:
loot-tables: default
villager-trade: false
void-damage-amount: 4.0
void-damage-min-build-height-offset: -64.0
water-over-lava-flow-speed: 5
feature-seeds:
generate-random-seeds-for-all: false
fishing-time-range:
maximum: 600
minimum: 100
fixes:
disable-unloaded-chunk-enderpearl-exploit: false
falling-block-height-nerf: disabled
fix-items-merging-through-walls: false
prevent-tnt-from-moving-in-water: false
split-overstacked-loot: true
tnt-entity-height-nerf: disabled
hopper:
cooldown-when-full: true
disable-move-event: false
ignore-occluding-blocks: false
lootables:
auto-replenish: false
max-refills: -1
refresh-max: 2d
refresh-min: 12h
reset-seed-on-fill: true
restrict-player-reloot: true
restrict-player-reloot-time: disabled
retain-unlooted-shulker-box-loot-table-on-non-player-break: true
maps:
item-frame-cursor-limit: 128
item-frame-cursor-update-interval: 10
max-growth-height:
bamboo:
max: 16
min: 11
cactus: 3
reeds: 3
misc:
allow-remote-ender-dragon-respawning: false
alternate-current-update-order: HORIZONTAL_FIRST_OUTWARD
disable-end-credits: false
disable-relative-projectile-velocity: false
disable-sprint-interruption-on-attack: false
legacy-ender-pearl-behavior: false
max-leash-distance: default
redstone-implementation: VANILLA
shield-blocking-delay: 5
show-sign-click-command-failure-msgs-to-player: false
update-pathfinding-on-block-update: true
scoreboards:
allow-non-player-entities-on-scoreboards: true
use-vanilla-world-scoreboard-name-coloring: false
spawn:
allow-using-signs-inside-spawn-protection: false
tick-rates:
behavior:
villager:
validatenearbypoi: -1
container-update: 1
dry-farmland: 1
grass-spread: 1
mob-spawner: 1
sensor:
villager:
secondarypoisensor: 40
wet-farmland: 1
unsupported-settings:
disable-world-ticking-when-empty: false
fix-invulnerable-end-crystal-exploit: true

3
test/server/eula.txt Normal file
View File

@@ -0,0 +1,3 @@
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://aka.ms/MinecraftEULA).
#Thu May 14 00:57:10 CST 2026
eula=true

64
test/server/help.yml Normal file
View File

@@ -0,0 +1,64 @@
# This is the Bukkit help configuration file for Paper.
#
# By default you do not need to modify this file. Help topics for all plugin commands are automatically provided by
# or extracted from your installed plugins. You only need to modify this file if you wish to add new help pages to
# your server or override the help pages of existing plugin commands.
#
# This file is divided up into the following parts:
# -- general-topics: lists admin defined help topics
# -- index-topics: lists admin defined index topics
# -- amend-topics: lists topic amendments to apply to existing help topics
# -- ignore-plugins: lists any plugins that should be excluded from help
#
# Examples are given below. When amending command topic, the string <text> will be replaced with the existing value
# in the help topic. Color codes can be used in topic text. The color code character is & followed by 0-F.
# ================================================================
#
# Set this to true to list the individual command help topics in the master help.
# command-topics-in-master-index: true
#
# Each general topic will show up as a separate topic in the help index along with all the plugin command topics.
# general-topics:
# Rules:
# shortText: Rules of the server
# fullText: |
# &61. Be kind to your fellow players.
# &B2. No griefing.
# &D3. No swearing.
# permission: topics.rules
#
# Each index topic will show up as a separate sub-index in the help index along with all the plugin command topics.
# To override the default help index (displayed when the user executes /help), name the index topic "Default".
# index-topics:
# Ban Commands:
# shortText: Player banning commands
# preamble: Moderator - do not abuse these commands
# permission: op
# commands:
# - /ban
# - /ban-ip
# - /banlist
#
# Topic amendments are used to change the content of automatically generated plugin command topics.
# amended-topics:
# /stop:
# shortText: Stops the server cold....in its tracks!
# fullText: <text> - This kills the server.
# permission: you.dont.have
#
# Any plugin in the ignored plugins list will be excluded from help. The name must match the name displayed by
# the /plugins command. Ignore "Bukkit" to remove the standard bukkit commands from the index. Ignore "All"
# to completely disable automatic help topic generation.
# ignore-plugins:
# - PluginNameOne
# - PluginNameTwo
# - PluginNameThree
#
# If you need help with the configuration or have any questions related to Paper,
# join us in our Discord or check the docs page.
#
# File Reference: https://docs.papermc.io/paper/reference/bukkit-help-configuration/
# Docs: https://docs.papermc.io/
# Discord: https://discord.gg/papermc
{}

Some files were not shown because too many files have changed in this diff Show More