这是我用DeepSeek的插件
功能:自定义实体的掉落物,如猪可以掉落圆石
指令配置重载/reloaddrops
Code (Text):
package MyPlugin.customDropsPlugin;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.EntityType;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.*;
public class CustomDropsPlugin extends JavaPlugin implements Listener {
private Map<EntityType, List<ItemStack>> dropMap = new HashMap<>();
@Override
public void onEnable() {
saveDefaultConfig();
loadConfig();
getServer().getPluginManager().registerEvents(this, this);
getCommand("reloaddrops").setExecutor(this); // 注册指令
getLogger().info("插件已加载 - 使用 /reloaddrops 重载配置");
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("reloaddrops")) {
if (!sender.hasPermission("customdrops.reload")) {
sender.sendMessage("§c你没有权限执行此命令!");
return true;
}
reloadConfig();
loadConfig();
sender.sendMessage("§a配置已成功重载!");
return true;
}
return false;
}
private void loadConfig() {
dropMap.clear();
FileConfiguration config = getConfig();
ConfigurationSection entities = config.getConfigurationSection("entities");
if (entities == null) {
getLogger().warning("配置错误:缺少 'entities' 主节点!");
return;
}
for (String entityKey : entities.getKeys(false)) {
try {
EntityType type = EntityType.valueOf(entityKey.toUpperCase());
List<ItemStack> drops = new ArrayList<>();
List<Map<?, ?>> dropList = entities.getMapList(entityKey + ".drops");
for (Map<?, ?> entry : dropList) {
Material material = Material.matchMaterial(entry.get("material").toString());
int amount = Integer.parseInt(entry.get("amount").toString());
if (material != null) {
drops.add(new ItemStack(material, amount));
}
}
if (!drops.isEmpty()) {
dropMap.put(type, drops);
getLogger().info("已加载 " + type + " 的掉落配置");
}
} catch (Exception e) {
getLogger().warning("配置错误:实体 " + entityKey + " - " + e.getMessage());
}
}
}
@EventHandler
public void onEntityDeath(EntityDeathEvent event) {
EntityType type = event.getEntityType();
if (dropMap.containsKey(type)) {
event.getDrops().clear();
event.getDrops().addAll(dropMap.get(type));
}
}
@Override
public void onDisable() {
dropMap.clear();
}
}
config.yml:
entities:
PIG:
drops:
- material: COBBLESTONE
amount: 1
plugin.yml:
name: CustomDrops
main: MyPlugin.customDropsPlugin.CustomDropsPlugin
version: 1.0
commands:
reloaddrops:
description: 重载掉落配置
usage: /reloaddrops
permission: customdrops.reload
permissions:
customdrops.reload:
description: 允许重载配置
default: op