• 【问卷调查奖励发放公告】

    感谢大家积极参与本次 MineBBS 社区问卷调查。200 金粒的参与奖励已完成发放。部分用户发放失败,请【点击此处】 查看详情。

资源图标

原创 开源 工具 CustomDropsPlugin —— 自定义实体掉落物 1.1

请登录后获取
版权类型
原创
插件中文名称
自定义实体掉落物
插件英文名称
CustomDropsPlugin
原帖地址
#
支持的核心(服务端)
  1. Paper
语言支持
中文(简体)
适配版本(Java)
  1. 1.21
这是我用DeepSeek的插件
功能:自定义实体的掉落物,如猪可以掉落圆石
指令配置重载/reloaddrops
Java:
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
作者
NaiveGod
价格
200金粒
下载
1
查看
318
首次发布
最后更新

评分

0.00 星 0 次评分

NaiveGod 的其他资源

最新更新

  1. 增加掉落物概率功能

    增加掉落物概率功能
后退
顶部 底部