- package sandtechnology.alwaysKeepInventory;
- import com.google.common.base.Charsets;
- import org.bukkit.GameRule;
- import org.bukkit.World;
- import org.bukkit.configuration.file.YamlConfiguration;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.EventPriority;
- import org.bukkit.event.Listener;
- import org.bukkit.event.entity.PlayerDeathEvent;
- import org.bukkit.event.player.PlayerRespawnEvent;
- import org.bukkit.event.world.WorldLoadEvent;
- import org.bukkit.plugin.java.JavaPlugin;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- public class AlwaysKeepInventory extends JavaPlugin implements Listener {
- /*
- 多版本兼容
- 使用NMS名称判断
- org.bukkit.craftbukkit.v1_x_Ry->x
- 比如:org.bukkit.craftbukkit.v1_8_R1->8
- */
- private int minecraftVersion = Integer.parseInt(getServer().getClass().getPackage().getName().split("_")[1]);
- @Override
- public void onEnable() {
- saveDefaultConfig();
- getConfig();
- getServer().getPluginManager().registerEvents(this, this);
- getLogger().info("强制死亡不掉落插件已启用!判断版本号:1."+minecraftVersion+".x");
- }
- @Override
- public void onDisable() {
- getLogger().info("强制死亡不掉落插件已禁用!");
- }
- private void trueGamerule(World world, String gamerule) {
- if (minecraftVersion > 12) {
- if (gamerule.equals("keepInventory")) {
- world.setGameRule(GameRule.KEEP_INVENTORY, true);
- } else throw new RuntimeException("不支持的游戏规则:" + gamerule);
- } else {
- world.setGameRuleValue(gamerule, "true");
- }
- }
- @EventHandler
- public void onPlayerDeath(PlayerDeathEvent event) {
- //星际背包支持
- if (getConfig().getBoolean("GalacticraftSupport")) {
- getServer().dispatchCommand(getServer().getConsoleSender(), "gcinv save " + event.getEntity().getName());
- }
- }
- @EventHandler(priority = EventPriority.LOWEST)
- public void onPlayerRespawn(PlayerRespawnEvent event) {
- //星际背包支持
- if (getConfig().getBoolean("GalacticraftSupport")) {
- getServer().getScheduler().runTaskLater(this, () -> getServer().dispatchCommand(getServer().getConsoleSender(), "gcinv restore " + event.getPlayer().getName()), 1);
- }
- }
- @EventHandler(priority = EventPriority.LOWEST)
- public void onWorldLoad(WorldLoadEvent event) {
- World world = event.getWorld();
- //原版死亡不掉落
- trueGamerule(world, "keepInventory");
- //虚无世界支持
- if (getConfig().getBoolean("NevermineSupport")) {
- trueGamerule(world, "KeepAllInventory");
- }
- }
- }
复制代码 |