From bb7d680b92621bb9551342039e273e771a925756 Mon Sep 17 00:00:00 2001 From: Mitality <96748385+Mitality@users.noreply.github.com> Date: Sun, 21 Jul 2024 00:01:28 +0200 Subject: [PATCH] Extra settings to manage drop behaviour of killed players Fairly simple change requested by ero1ne in ticket #3163 to disable drops from killed players, while still having d2i activated for everything else. --- .../java/de/jeff_media/drop2inventory/config/Config.java | 4 ++++ .../drop2inventory/handlers/PermissionChecker.java | 7 ++++++- .../drop2inventory/listeners/CollectListener.java | 3 ++- src/main/resources/config.yml | 8 +++++++- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/jeff_media/drop2inventory/config/Config.java b/src/main/java/de/jeff_media/drop2inventory/config/Config.java index cd8fdfe..c010f18 100644 --- a/src/main/java/de/jeff_media/drop2inventory/config/Config.java +++ b/src/main/java/de/jeff_media/drop2inventory/config/Config.java @@ -10,6 +10,8 @@ public class Config { public static final String COLLECT_BLOCK_EXP = "collect-block-exp"; public static final String COLLECT_MOB_DROPS = "collect-mob-drops"; public static final String COLLECT_MOB_EXP = "collect-mob-exp"; + public static final String COLLECT_PLAYER_DROPS = "collect-player-drops"; + public static final String COLLECT_PLAYER_EXP = "collect-player-exp"; public static final String AUTO_CONDENSE_ENABLED_BY_DEFAULT = "auto-condense-enabled-by-default"; public static final String FORCE_AUTO_CONDENSE = "force-auto-condense"; public static final String AUTO_SMELT_ENABLED_BY_DEFAULT = "auto-smelt-enabled-by-default"; @@ -77,9 +79,11 @@ public Config() { conf.addDefault(SHOW_MESSAGE_AGAIN_AFTER_LOGOUT, true); conf.addDefault(COLLECT_BLOCK_DROPS, true); conf.addDefault(COLLECT_MOB_DROPS, true); + conf.addDefault(COLLECT_PLAYER_DROPS, true); conf.addDefault(COLLECT_FISHING_DROPS, false); conf.addDefault(COLLECT_BLOCK_EXP, true); conf.addDefault(COLLECT_MOB_EXP, true); + conf.addDefault(COLLECT_PLAYER_EXP, true); conf.addDefault(FORCE_AUTO_CONDENSE,false); conf.addDefault(DETECT_LEGACY_DROPS,true); conf.addDefault(DEFAULT_BOUNDING_BOX_RADIUS, 2); diff --git a/src/main/java/de/jeff_media/drop2inventory/handlers/PermissionChecker.java b/src/main/java/de/jeff_media/drop2inventory/handlers/PermissionChecker.java index fc105e9..ed42e68 100644 --- a/src/main/java/de/jeff_media/drop2inventory/handlers/PermissionChecker.java +++ b/src/main/java/de/jeff_media/drop2inventory/handlers/PermissionChecker.java @@ -166,11 +166,16 @@ private static boolean isAllowedForEntity(Player player, Entity entity, boolean return false; } - if (!main.getConfig().getBoolean(Config.COLLECT_MOB_DROPS)) { + if (!main.getConfig().getBoolean(Config.COLLECT_MOB_DROPS) && !(entity instanceof Player)) { if (main.isDebug()) main.debug("Collect mob drops is disabled"); return false; } + if (!main.getConfig().getBoolean(Config.COLLECT_PLAYER_DROPS) && (entity instanceof Player)) { + if (main.isDebug()) main.debug("Collect player drops is disabled"); + return false; + } + return true; } } diff --git a/src/main/java/de/jeff_media/drop2inventory/listeners/CollectListener.java b/src/main/java/de/jeff_media/drop2inventory/listeners/CollectListener.java index 3035863..bae62de 100644 --- a/src/main/java/de/jeff_media/drop2inventory/listeners/CollectListener.java +++ b/src/main/java/de/jeff_media/drop2inventory/listeners/CollectListener.java @@ -150,7 +150,8 @@ public void onBlockXP(BlockBreakEvent event) { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onEntityXP(EntityDeathEvent event) { - if(!main.getConfig().getBoolean(Config.COLLECT_MOB_EXP)) return; + if(!main.getConfig().getBoolean(Config.COLLECT_MOB_EXP) && !(event.getEntity() instanceof Player)) return; + if(!main.getConfig().getBoolean(Config.COLLECT_PLAYER_EXP) && (event.getEntity() instanceof Player)) return; LivingEntity dead = event.getEntity(); Player killer = dead.getKiller(); if (killer == null) return; diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 8e66960..1306e9c 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -76,12 +76,18 @@ collect-block-drops: true collect-block-exp: true # when set to true, mob/entity drops will be automatically collected if the plugin is enabled -# Note: Drops from entities (item frames, minecarts, etc.) count as mob drops +# Note: Drops from entities (item frames, minecarts, etc.) count as mob drops, however drops from killed players have their own setting collect-mob-drops: true # when set to true, mob/entity experience orbs will be automatically collected if the plugin is enabled collect-mob-exp: true +# when set to true, inventory contents of killed players will be automatically collected if the plugin is enabled +collect-player-drops: true + +# when set to true, experience orbs of killed players will be automatically collected if the plugin is enabled +collect-player-exp: true + # when set to true, fishes / drops caught via fishing will be automatically collected if the plugin is enabled # Note: Disabled by default because this also removes the "drop flying towards player" animation collect-fishing-drops: false