diff --git a/src/main/java/net/fameless/forcebattle/configuration/SettingsManager.java b/src/main/java/net/fameless/forcebattle/configuration/SettingsManager.java index cbf7ed4..b38489c 100644 --- a/src/main/java/net/fameless/forcebattle/configuration/SettingsManager.java +++ b/src/main/java/net/fameless/forcebattle/configuration/SettingsManager.java @@ -82,6 +82,8 @@ public enum Setting { FORCE_COORDS, FORCE_STRUCTURE, + NO_HUNGER, + NO_DAMAGE, BACKPACK, CHAIN_MODE, HIDE_POINTS, diff --git a/src/main/java/net/fameless/forcebattle/game/GameListener.java b/src/main/java/net/fameless/forcebattle/game/GameListener.java index 72af389..9784739 100644 --- a/src/main/java/net/fameless/forcebattle/game/GameListener.java +++ b/src/main/java/net/fameless/forcebattle/game/GameListener.java @@ -39,6 +39,7 @@ import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.FoodLevelChangeEvent; import org.bukkit.event.player.AsyncPlayerPreLoginEvent; import org.bukkit.event.player.PlayerInteractEvent; @@ -214,7 +215,7 @@ public void onGameEnd(TimerEndEvent event) { public void onHungerChange(FoodLevelChangeEvent event) { if (!(event.getEntity() instanceof Player player)) return; - if (!ForceBattle.getTimer().isRunning()) { + if (!ForceBattle.getTimer().isRunning() || SettingsManager.isEnabled(SettingsManager.Setting.NO_HUNGER)) { event.setCancelled(true); player.setFoodLevel(20); @@ -224,11 +225,6 @@ public void onHungerChange(FoodLevelChangeEvent event) { @EventHandler public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { - if (!ForceBattle.getTimer().isRunning() && event.getEntity() instanceof Player) { - event.setCancelled(true); - return; - } - if (!SettingsManager.isEnabled(SettingsManager.Setting.FORCE_MOB)) return; if (!(event.getDamager() instanceof Player damager)) return; @@ -243,6 +239,14 @@ public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { checkTeamObjective(battlePlayer, target); } + @EventHandler + public void onPlayerDamage(EntityDamageEvent event) { + if (!(event.getEntity() instanceof Player)) return; + if (!ForceBattle.getTimer().isRunning() || SettingsManager.isEnabled(SettingsManager.Setting.NO_DAMAGE)) { + event.setCancelled(true); + } + } + private void checkPlayerObjective(BattlePlayer battlePlayer, LivingEntity target) { if (battlePlayer.getObjective().getBattleType() != BattleType.FORCE_MOB) return; diff --git a/src/main/java/net/fameless/forcebattle/gui/impl/SettingsGUI.java b/src/main/java/net/fameless/forcebattle/gui/impl/SettingsGUI.java index 7301b9a..50f482a 100644 --- a/src/main/java/net/fameless/forcebattle/gui/impl/SettingsGUI.java +++ b/src/main/java/net/fameless/forcebattle/gui/impl/SettingsGUI.java @@ -42,6 +42,10 @@ public enum SettingButton { FORCE_STRUCTURE(6, Material.STRUCTURE_BLOCK, SettingsManager.Setting.FORCE_STRUCTURE, true, "gui.force_structure_name", "gui.force_structure_lore", "notification.force_structure_changed"), + NO_HUNGER(18, Material.COOKED_BEEF, SettingsManager.Setting.NO_HUNGER, false, + "gui.no_hunger_name", "gui.no_hunger_lore", "notification.no_hunger_changed"), + NO_DAMAGE(19, Material.IRON_SWORD, SettingsManager.Setting.NO_DAMAGE, false, + "gui.no_damage_name", "gui.no_damage_lore", "notification.no_damage_changed"), CHAIN_MODE(27, Material.CHAIN, SettingsManager.Setting.CHAIN_MODE, false, "gui.chain_mode_name", "gui.chain_mode_lore", "notification.chain_mode_changed"), BACKPACK(28, Material.CHEST, SettingsManager.Setting.BACKPACK, false, diff --git a/src/main/resources/languages/en_US.json b/src/main/resources/languages/en_US.json index 2a3ded8..d7a5db0 100644 --- a/src/main/resources/languages/en_US.json +++ b/src/main/resources/languages/en_US.json @@ -30,6 +30,10 @@ "gui.force_coords_lore" : "
Click to toggle ForceCoords.

Current Status: ", "gui.force_structure_name" : "Force Structure", "gui.force_structure_lore" : "
Click to toggle ForceStructure.

Current Status: ", + "gui.no_hunger_name" : "No Hunger", + "gui.no_hunger_lore" : "
Click to toggle no Hunger.

Current Status: ", + "gui.no_damage_name" : "No Damage", + "gui.no_damage_lore" : "
Click to toggle no Damage.

Current Status: ", "gui.chain_mode_name" : "Chain Mode", "gui.chain_mode_lore" : "
Click to toggle Chain Mode.

Current Status: ", "gui.result_title_all" : "Results | All Players", @@ -78,6 +82,8 @@ "notification.force_height_changed" : "ForceHeight has been set to !", "notification.force_coords_changed" : "ForceCoords has been set to !", "notification.force_structure_changed" : "ForceStructure has been set to !", + "notification.no_hunger_changed" : "No Hunger has been set to !", + "notification.no_damage_changed" : "No Damage has been set to !", "notification.chain_mode_changed" : "Chain Mode has been set to !", "notification.no_duplicate_objectives_changed" : "No duplicate objectives has been set to !", "notification.simplified_objectives_changed" : "Simplified objectives have been set to !",