Added basic support for CUI.

This commit is contained in:
sk89q
2011-03-11 22:43:02 -08:00
parent ce445ce419
commit 5ac8c5adf7
15 changed files with 386 additions and 23 deletions

View File

@@ -22,8 +22,10 @@ package com.sk89q.worldedit.bukkit;
import org.bukkit.*;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import com.sk89q.util.StringUtil;
import com.sk89q.worldedit.*;
import com.sk89q.worldedit.bags.BlockBag;
import com.sk89q.worldedit.cui.CUIEvent;
public class BukkitPlayer extends LocalPlayer {
private Player player;
@@ -114,4 +116,21 @@ public class BukkitPlayer extends LocalPlayer {
public LocalWorld getWorld() {
return new BukkitWorld(player.getWorld());
}
@Override
public void dispatchCUIEvent(CUIEvent event) {
String[] params = event.getParameters();
if (params.length > 0) {
printRaw("\u00A75\u00A76\u00A74\u00A75" + event.getTypeId()
+ "|" + StringUtil.joinString(params, "|"));
} else {
printRaw("\u00A75\u00A76\u00A74\u00A75" + event.getTypeId());
}
}
@Override
public void dispatchCUIHandshake() {
printRaw("\u00A75\u00A76\u00A74\u00A75");
}
}

View File

@@ -0,0 +1,57 @@
// $Id$
/*
* WorldEdit
* Copyright (C) 2010 sk89q <http://www.sk89q.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.sk89q.worldedit.bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerEvent;
import org.bukkit.event.player.PlayerListener;
/**
* Handles all events thrown in relation to a Player
*/
public class WorldEditCriticalPlayerListener extends PlayerListener {
/**
* Plugin.
*/
private WorldEditPlugin plugin;
/**
* Construct the object;
*
* @param plugin
*/
public WorldEditCriticalPlayerListener(WorldEditPlugin plugin) {
this.plugin = plugin;
}
/**
* Called when a player joins a server
*
* @param event Relevant event details
*/
@Override
public void onPlayerJoin(PlayerEvent event) {
wrapPlayer(event.getPlayer()).dispatchCUIHandshake();
}
private BukkitPlayer wrapPlayer(Player player) {
return new BukkitPlayer(plugin, plugin.server, player);
}
}

View File

@@ -123,6 +123,7 @@ public class WorldEditPlugin extends JavaPlugin {
*/
protected void registerEvents() {
PlayerListener playerListener = new WorldEditPlayerListener(this);
PlayerListener criticalPlayerListener = new WorldEditCriticalPlayerListener(this);
BlockListener blockListener = new WorldEditBlockListener(this);
registerEvent(Event.Type.PLAYER_QUIT, playerListener);
@@ -131,6 +132,7 @@ public class WorldEditPlugin extends JavaPlugin {
registerEvent(Event.Type.PLAYER_COMMAND_PREPROCESS, playerListener);
registerEvent(Event.Type.BLOCK_DAMAGED, blockListener);
registerEvent(Event.Type.BLOCK_RIGHTCLICKED, blockListener);
registerEvent(Event.Type.PLAYER_JOIN, criticalPlayerListener, Priority.Lowest);
// The permissions resolver has some hooks of its own
(new PermissionsResolverServerListener(perms)).register(this);