mirror of
https://github.com/TotalFreedomMC/TF-EssentialsX.git
synced 2025-02-11 11:49:12 +00:00
Allow preventing bed and respawn anchor explosions in EssentialsProtect
This commit is contained in:
parent
1be3daf0b5
commit
e7d9dbfbcf
6 changed files with 70 additions and 5 deletions
|
@ -839,6 +839,8 @@ protect:
|
|||
enderdragon-blockdamage: true
|
||||
enderman-pickup: false
|
||||
villager-death: false
|
||||
bed-explosion: false
|
||||
respawn-anchor-explosion: false
|
||||
# Monsters won't follow players.
|
||||
# permission essentials.protect.entitytarget.bypass disables this.
|
||||
entitytarget: false
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package com.earth2me.essentials.protect;
|
||||
|
||||
import com.earth2me.essentials.metrics.Metrics;
|
||||
import com.earth2me.essentials.metrics.MetricsWrapper;
|
||||
import com.earth2me.essentials.utils.VersionUtil;
|
||||
import org.bukkit.Material;
|
||||
|
@ -52,7 +51,7 @@ public class EssentialsProtect extends JavaPlugin implements IProtect {
|
|||
pm.registerEvents(entityListener, this);
|
||||
|
||||
if (VersionUtil.getServerBukkitVersion().isHigherThan(VersionUtil.v1_13_2_R01)) {
|
||||
final EssentialsProtectEntityListener1_13_2_R1 entityListener1_13_2_r1 = new EssentialsProtectEntityListener1_13_2_R1(this);
|
||||
final EssentialsProtectEntityListener_1_13_R1 entityListener1_13_2_r1 = new EssentialsProtectEntityListener_1_13_R1(this);
|
||||
pm.registerEvents(entityListener1_13_2_r1, this);
|
||||
}
|
||||
if (VersionUtil.getServerBukkitVersion().isHigherThan(VersionUtil.v1_14_R01)) {
|
||||
|
@ -60,6 +59,11 @@ public class EssentialsProtect extends JavaPlugin implements IProtect {
|
|||
pm.registerEvents(entityListener_1_14_r1, this);
|
||||
}
|
||||
|
||||
if (VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_16_1_R01)) {
|
||||
final EssentialsProtectBlockListener_1_16_R1 blockListener_1_16_r1 = new EssentialsProtectBlockListener_1_16_R1(this);
|
||||
pm.registerEvents(blockListener_1_16_r1, this);
|
||||
}
|
||||
|
||||
final EssentialsProtectWeatherListener weatherListener = new EssentialsProtectWeatherListener(this);
|
||||
pm.registerEvents(weatherListener, this);
|
||||
}
|
||||
|
|
|
@ -2,7 +2,9 @@ package com.earth2me.essentials.protect;
|
|||
|
||||
import com.earth2me.essentials.utils.EnumUtil;
|
||||
|
||||
import com.earth2me.essentials.utils.MaterialUtil;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.*;
|
||||
|
@ -10,11 +12,13 @@ import org.bukkit.entity.minecart.ExplosiveMinecart;
|
|||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.block.BlockBurnEvent;
|
||||
import org.bukkit.event.block.BlockFromToEvent;
|
||||
import org.bukkit.event.block.BlockIgniteEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.world.PortalCreateEvent;
|
||||
|
||||
import java.util.Set;
|
||||
|
@ -125,4 +129,19 @@ public class EssentialsProtectBlockListener implements Listener {
|
|||
event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_portal_creation));
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onPlayerInteract(final PlayerInteractEvent event) {
|
||||
if (!event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
|
||||
return;
|
||||
}
|
||||
Block block = event.getClickedBlock();
|
||||
if (block == null) {
|
||||
return;
|
||||
}
|
||||
World.Environment environment = block.getWorld().getEnvironment();
|
||||
if (MaterialUtil.isBed(block.getType()) && !environment.equals(World.Environment.NORMAL)) {
|
||||
event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_bed_explosion));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
package com.earth2me.essentials.protect;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.data.type.RespawnAnchor;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
|
||||
public class EssentialsProtectBlockListener_1_16_R1 implements Listener {
|
||||
|
||||
final private IProtect prot;
|
||||
|
||||
EssentialsProtectBlockListener_1_16_R1(final IProtect parent) {
|
||||
this.prot = parent;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onPlayerInteract(final PlayerInteractEvent event) {
|
||||
if (!event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
|
||||
return;
|
||||
}
|
||||
Block block = event.getClickedBlock();
|
||||
if (block == null) {
|
||||
return;
|
||||
}
|
||||
World.Environment environment = block.getWorld().getEnvironment();
|
||||
if (block.getType() == Material.RESPAWN_ANCHOR && !environment.equals(World.Environment.NETHER)) {
|
||||
RespawnAnchor respawnAnchor = (RespawnAnchor) block.getBlockData();
|
||||
if (respawnAnchor.getCharges() == respawnAnchor.getMaximumCharges()) {
|
||||
event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_respawn_anchor_explosion));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -11,11 +11,11 @@ import org.bukkit.event.EventPriority;
|
|||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityTransformEvent;
|
||||
|
||||
public class EssentialsProtectEntityListener1_13_2_R1 implements Listener {
|
||||
public class EssentialsProtectEntityListener_1_13_R1 implements Listener {
|
||||
private final IProtect prot;
|
||||
private final IEssentials ess;
|
||||
|
||||
EssentialsProtectEntityListener1_13_2_R1(final IProtect prot) {
|
||||
EssentialsProtectEntityListener_1_13_R1(final IProtect prot) {
|
||||
this.prot = prot;
|
||||
this.ess = prot.getEssentialsConnect().getEssentials();
|
||||
}
|
|
@ -47,6 +47,8 @@ public enum ProtectConfig {
|
|||
prevent_ender_crystal_explosion("protect.prevent.ender-crystal-explosion", false),
|
||||
prevent_enderman_pickup("protect.prevent.enderman-pickup", false),
|
||||
prevent_villager_death("protect.prevent.villager-death", false),
|
||||
prevent_bed_explosion("protect.prevent.bed-explosion", false),
|
||||
prevent_respawn_anchor_explosion("protect.prevent.respawn-anchor-explosion", false),
|
||||
prevent_enderdragon_blockdmg("protect.prevent.enderdragon-blockdamage", true),
|
||||
prevent_entitytarget("protect.prevent.entitytarget", false),
|
||||
enderdragon_fakeexplosions("protect.enderdragon-fakeexplosions", false),
|
||||
|
|
Loading…
Reference in a new issue