mirror of
https://github.com/essentials/Essentials.git
synced 2025-08-13 10:04:51 +02:00
If Essentials core fails to read one of the configs now, it will disable itself. If other modules detect that Essentials is not enabled, they will be disabled too. EssentialsProtect will go into emergency mode, canceling all events that could hurt your world. Fix the file and either restart or reload the server.
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
package com.earth2me.essentials.protect;
|
||||
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockBurnEvent;
|
||||
import org.bukkit.event.block.BlockFromToEvent;
|
||||
import org.bukkit.event.block.BlockIgniteEvent;
|
||||
import org.bukkit.event.block.BlockListener;
|
||||
|
||||
|
||||
public class EmergencyBlockListener extends BlockListener
|
||||
{
|
||||
|
||||
@Override
|
||||
public void onBlockBurn(final BlockBurnEvent event)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockIgnite(final BlockIgniteEvent event)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockFromTo(final BlockFromToEvent event)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockBreak(final BlockBreakEvent event)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
@@ -0,0 +1,22 @@
|
||||
package com.earth2me.essentials.protect;
|
||||
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.EntityExplodeEvent;
|
||||
import org.bukkit.event.entity.EntityListener;
|
||||
|
||||
|
||||
public class EmergencyEntityListener extends EntityListener
|
||||
{
|
||||
|
||||
@Override
|
||||
public void onEntityExplode(final EntityExplodeEvent event)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEntityDamage(final EntityDamageEvent event)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
@@ -0,0 +1,16 @@
|
||||
package com.earth2me.essentials.protect;
|
||||
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerListener;
|
||||
|
||||
|
||||
public class EmergencyPlayerListener extends PlayerListener
|
||||
{
|
||||
|
||||
@Override
|
||||
public void onPlayerJoin(PlayerJoinEvent event)
|
||||
{
|
||||
event.getPlayer().sendMessage("Essentials Protect is in emergency mode. Check your log for errors.");
|
||||
}
|
||||
|
||||
}
|
@@ -51,6 +51,14 @@ public class EssentialsProtect extends JavaPlugin implements IConf, IProtect
|
||||
{
|
||||
final PluginManager pm = this.getServer().getPluginManager();
|
||||
ess = (IEssentials)pm.getPlugin("Essentials");
|
||||
if (!this.getDescription().getVersion().equals(ess.getDescription().getVersion()))
|
||||
{
|
||||
LOGGER.log(Level.WARNING, _("versionMismatchAll"));
|
||||
}
|
||||
if (!ess.isEnabled()) {
|
||||
enableEmergencyMode(pm);
|
||||
return;
|
||||
}
|
||||
|
||||
final EssentialsProtectPlayerListener playerListener = new EssentialsProtectPlayerListener(this);
|
||||
pm.registerEvent(Type.PLAYER_INTERACT, playerListener, Priority.Low, this);
|
||||
@@ -79,13 +87,28 @@ public class EssentialsProtect extends JavaPlugin implements IConf, IProtect
|
||||
|
||||
reloadConfig();
|
||||
ess.addReloadListener(this);
|
||||
if (!this.getDescription().getVersion().equals(ess.getDescription().getVersion()))
|
||||
{
|
||||
LOGGER.log(Level.WARNING, _("versionMismatchAll"));
|
||||
}
|
||||
LOGGER.info(_("loadinfo", this.getDescription().getName(), this.getDescription().getVersion(), "essentials team"));
|
||||
}
|
||||
|
||||
private void enableEmergencyMode(final PluginManager pm)
|
||||
{
|
||||
final EmergencyBlockListener emBlockListener = new EmergencyBlockListener();
|
||||
final EmergencyEntityListener emEntityListener = new EmergencyEntityListener();
|
||||
final EmergencyPlayerListener emPlayerListener = new EmergencyPlayerListener();
|
||||
pm.registerEvent(Type.PLAYER_JOIN, emPlayerListener, Priority.Low, this);
|
||||
pm.registerEvent(Type.BLOCK_BURN, emBlockListener, Priority.Low, this);
|
||||
pm.registerEvent(Type.BLOCK_IGNITE, emBlockListener, Priority.Low, this);
|
||||
pm.registerEvent(Type.BLOCK_FROMTO, emBlockListener, Priority.Low, this);
|
||||
pm.registerEvent(Type.BLOCK_BREAK, emBlockListener, Priority.Low, this);
|
||||
pm.registerEvent(Type.ENTITY_DAMAGE, emEntityListener, Priority.Low, this);
|
||||
pm.registerEvent(Type.ENTITY_EXPLODE, emEntityListener, Priority.Low, this);
|
||||
for (Player player : getServer().getOnlinePlayers())
|
||||
{
|
||||
player.sendMessage("Essentials Protect is in emergency mode. Check your log for errors.");
|
||||
}
|
||||
LOGGER.log(Level.SEVERE, "Essentials not installed or failed to load. Essenials Protect is in emergency mode now.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkProtectionItems(final ProtectConfig list, final int id)
|
||||
{
|
||||
|
@@ -6,4 +6,4 @@ version: TeamCity
|
||||
website: http://www.earth2me.net:8001/
|
||||
description: Provides protection for various parts of the world.
|
||||
authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology]
|
||||
depend: [Essentials]
|
||||
softdepend: [Essentials]
|
Reference in New Issue
Block a user