mirror of
https://github.com/TotalFreedomMC/TotalFreedomMod.git
synced 2024-06-25 23:40:35 +00:00
9c2f181ab9
- Ignore totalfreedom.iml (people who clone from Git get this instead of TotalFreedomMod) - Essentials check before running /denick - Revise grammar in /invis - WorldEdit check for /setl (since W/E is no longer a required dependency) - WorldEdit check for /gtfo - WorldEdit check for /unban - Refactor -> LibsDisguiseBridge: isPluginEnabled -> isEnabled - Remove unneccesary ChatColor in /wiperegions - Use BlockData in Trailer - Revise /wiewarps grammar
180 lines
4.1 KiB
Java
180 lines
4.1 KiB
Java
package me.totalfreedom.totalfreedommod.bridge;
|
|
|
|
import com.sk89q.worldedit.LocalSession;
|
|
import com.sk89q.worldedit.WorldEdit;
|
|
import com.sk89q.worldedit.bukkit.BukkitPlayer;
|
|
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
|
|
import me.totalfreedom.totalfreedommod.FreedomService;
|
|
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
|
import me.totalfreedom.totalfreedommod.util.FLog;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.plugin.Plugin;
|
|
|
|
public class WorldEditBridge extends FreedomService
|
|
{
|
|
|
|
private final WorldEditListener listener;
|
|
//
|
|
private WorldEditPlugin worldeditPlugin = null;
|
|
|
|
public WorldEditBridge(TotalFreedomMod plugin)
|
|
{
|
|
super(plugin);
|
|
listener = new WorldEditListener(plugin);
|
|
}
|
|
|
|
@Override
|
|
protected void onStart()
|
|
{
|
|
listener.register();
|
|
}
|
|
|
|
@Override
|
|
protected void onStop()
|
|
{
|
|
listener.unregister();
|
|
}
|
|
|
|
private WorldEditPlugin getWorldEditPlugin()
|
|
{
|
|
if (worldeditPlugin == null)
|
|
{
|
|
try
|
|
{
|
|
Plugin we = server.getPluginManager().getPlugin("WorldEdit");
|
|
if (we != null)
|
|
{
|
|
if (we instanceof WorldEditPlugin)
|
|
{
|
|
worldeditPlugin = (WorldEditPlugin) we;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
FLog.severe(ex);
|
|
}
|
|
}
|
|
|
|
return worldeditPlugin;
|
|
}
|
|
|
|
public void undo(Player player, int count)
|
|
{
|
|
try
|
|
{
|
|
LocalSession session = getPlayerSession(player);
|
|
if (session != null)
|
|
{
|
|
final BukkitPlayer bukkitPlayer = getBukkitPlayer(player);
|
|
if (bukkitPlayer != null)
|
|
{
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
session.undo(session.getBlockBag(bukkitPlayer), bukkitPlayer);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
FLog.severe(ex);
|
|
}
|
|
}
|
|
|
|
public void redo(Player player, int count)
|
|
{
|
|
try
|
|
{
|
|
LocalSession session = getPlayerSession(player);
|
|
if (session != null)
|
|
{
|
|
final BukkitPlayer bukkitPlayer = getBukkitPlayer(player);
|
|
if (bukkitPlayer != null)
|
|
{
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
session.redo(session.getBlockBag(bukkitPlayer), bukkitPlayer);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
FLog.severe(ex);
|
|
}
|
|
}
|
|
|
|
public void setLimit(Player player, int limit)
|
|
{
|
|
try
|
|
{
|
|
final LocalSession session = getPlayerSession(player);
|
|
if (session != null)
|
|
{
|
|
session.setBlockChangeLimit(limit);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
FLog.severe(ex);
|
|
}
|
|
|
|
}
|
|
|
|
private LocalSession getPlayerSession(Player player)
|
|
{
|
|
final WorldEditPlugin wep = getWorldEditPlugin();
|
|
if (wep == null)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
try
|
|
{
|
|
return wep.getSession(player);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
FLog.severe(ex);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
private BukkitPlayer getBukkitPlayer(Player player)
|
|
{
|
|
final WorldEditPlugin wep = getWorldEditPlugin();
|
|
if (wep == null)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
try
|
|
{
|
|
return wep.wrapPlayer(player);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
FLog.severe(ex);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public boolean isWorldEditEnabled()
|
|
{
|
|
try
|
|
{
|
|
WorldEditPlugin worldedit = getWorldEditPlugin();
|
|
if (worldedit != null)
|
|
{
|
|
return worldedit.isEnabled();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
FLog.severe(ex);
|
|
}
|
|
return false;
|
|
}
|
|
}
|