package jk_5.nailed.plugins.worldedit; import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.event.platform.BlockInteractEvent; import com.sk89q.worldedit.event.platform.Interaction; import com.sk89q.worldedit.event.platform.PlatformReadyEvent; import com.sk89q.worldedit.util.command.CommandMapping; import jk_5.eventbus.EventHandler; import jk_5.nailed.api.event.RegisterCommandsEvent; import jk_5.nailed.api.event.player.PlayerInteractEvent; import jk_5.nailed.api.event.plugin.RegisterAdditionalEventHandlersEvent; import jk_5.nailed.api.plugin.Plugin; import jk_5.nailed.api.plugin.PluginIdentifier; import jk_5.nailed.server.player.NailedPlayer; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.util.Set; @Plugin(id = "NailedWorldEditPlugin", version = "1.0.0", name = "NailedWorldEditPlugin") public class NailedWorldEditPlugin { private static final Logger logger = LogManager.getLogger(); private static NailedWorldEditPlugin INSTANCE; public Set<CommandMapping> commands; @PluginIdentifier.Instance public PluginIdentifier identifier; public NailedWorldEditPlugin() { INSTANCE = this; } @EventHandler public void registerEvents(RegisterAdditionalEventHandlersEvent event){ event.register(ThreadSafeCache.getInstance()); event.getPlatform().getMessenger().registerOutgoingPluginChannel(identifier, "WECUI"); event.getPlatform().getMessenger().registerIncomingPluginChannel(identifier, "WECUI", new WorldEditCUIPacketHandler()); WorldEditBiomeRegistry.populate(); WorldEdit we = WorldEdit.getInstance(); we.getPlatformManager().register(NailedWorldEditPlatform.instance()); WorldEdit.getInstance().getEventBus().post(new PlatformReadyEvent()); } @EventHandler public void registerCommands(RegisterCommandsEvent event){ for(final CommandMapping command : commands){ WorldEditCommand wrapper = new WorldEditCommand(command); event.registerCallable(wrapper, command.getAllAliases()); } } /*override def onDisable(){ WorldEdit.getInstance.getPlatformManager.unregister(NailedPlatform) }*/ @EventHandler public void onInteract(PlayerInteractEvent event){ if(!NailedWorldEditPlatform.instance().isHookingEvents()){ return; } WorldEdit we = WorldEdit.getInstance(); WorldEditPlayer player = WorldEditPlayer.wrap(((NailedPlayer) event.getPlayer()).getEntity()); WorldEditWorld world = WorldEditWorld.wrap(((NailedPlayer) event.getPlayer()).getEntity().worldObj); switch(event.getAction()){ case LEFT_CLICK_AIR: if(we.handleArmSwing(player)){ event.setCanceled(true); } break; case LEFT_CLICK_BLOCK: com.sk89q.worldedit.util.Location location = new com.sk89q.worldedit.util.Location(world, event.getClicked().getX(), event.getClicked().getY(), event.getClicked().getZ()); BlockInteractEvent e = new BlockInteractEvent(player, location, Interaction.HIT); we.getEventBus().post(e); if(e.isCancelled()){ event.setCanceled(true); } if(we.handleArmSwing(player)){ event.setCanceled(true); } break; case RIGHT_CLICK_AIR: if(we.handleRightClick(player)){ event.setCanceled(true); } break; case RIGHT_CLICK_BLOCK: com.sk89q.worldedit.util.Location loc = new com.sk89q.worldedit.util.Location(world, event.getClicked().getX(), event.getClicked().getY(), event.getClicked().getZ()); BlockInteractEvent e1 = new BlockInteractEvent(player, loc, Interaction.OPEN); we.getEventBus().post(e1); if(e1.isCancelled()){ event.setCanceled(true); } if(we.handleRightClick(player)){ event.setCanceled(true); } break; } } public static NailedWorldEditPlugin instance(){ return INSTANCE; } }