diff --git a/core/src/main/java/com/boydti/fawe/wrappers/PlayerWrapper.java b/core/src/main/java/com/boydti/fawe/wrappers/PlayerWrapper.java index c38abf62..51ddd06f 100644 --- a/core/src/main/java/com/boydti/fawe/wrappers/PlayerWrapper.java +++ b/core/src/main/java/com/boydti/fawe/wrappers/PlayerWrapper.java @@ -37,6 +37,13 @@ public class PlayerWrapper implements Player { this.parent = parent; } + public static PlayerWrapper wrap(Player parent) { + if (parent instanceof PlayerWrapper) { + return (PlayerWrapper) parent; + } + return new PlayerWrapper(parent); + } + public Player getParent() { return parent; } @@ -223,18 +230,28 @@ public class PlayerWrapper implements Player { } @Override - public WorldVector getBlockTrace(int range, boolean useLastBlock) { - return parent.getBlockTrace(range, useLastBlock); + public WorldVector getBlockTrace(final int range, final boolean useLastBlock) { + return TaskManager.IMP.sync(new RunnableVal() { + @Override + public void run(WorldVector value) { + this.value = parent.getBlockTrace(range, useLastBlock); + } + }); } @Override - public WorldVectorFace getBlockTraceFace(int range, boolean useLastBlock) { - return parent.getBlockTraceFace(range, useLastBlock); + public WorldVectorFace getBlockTraceFace(final int range, final boolean useLastBlock) { + return TaskManager.IMP.sync(new RunnableVal() { + @Override + public void run(WorldVectorFace value) { + this.value = parent.getBlockTraceFace(range, useLastBlock); + } + }); } @Override public WorldVector getBlockTrace(int range) { - return parent.getBlockTrace(range); + return getBlockTrace(range, false); } @Override diff --git a/core/src/main/java/com/sk89q/worldedit/extension/platform/CommandManager.java b/core/src/main/java/com/sk89q/worldedit/extension/platform/CommandManager.java index 4267bc23..822fcc82 100644 --- a/core/src/main/java/com/sk89q/worldedit/extension/platform/CommandManager.java +++ b/core/src/main/java/com/sk89q/worldedit/extension/platform/CommandManager.java @@ -245,7 +245,7 @@ public final class CommandManager { return; } fp.setMeta("fawe_action", true); - locals.put(Actor.class, new PlayerWrapper((Player) actor)); + locals.put(Actor.class, PlayerWrapper.wrap((Player) actor)); } else { locals.put(Actor.class, actor); } diff --git a/core/src/main/java/com/sk89q/worldedit/extension/platform/PlatformManager.java b/core/src/main/java/com/sk89q/worldedit/extension/platform/PlatformManager.java index 57a97d19..e9e42933 100644 --- a/core/src/main/java/com/sk89q/worldedit/extension/platform/PlatformManager.java +++ b/core/src/main/java/com/sk89q/worldedit/extension/platform/PlatformManager.java @@ -23,6 +23,7 @@ import com.boydti.fawe.config.BBC; import com.boydti.fawe.object.FawePlayer; import com.boydti.fawe.object.exception.FaweException; import com.boydti.fawe.util.MainUtil; +import com.boydti.fawe.wrappers.PlayerWrapper; import com.sk89q.worldedit.LocalConfiguration; import com.sk89q.worldedit.LocalSession; import com.sk89q.worldedit.ServerInterface; @@ -440,7 +441,7 @@ public class PlatformManager { public void handlePlayerInput(PlayerInputEvent event) { // Create a proxy actor with a potentially different world for // making changes to the world - final Player player = createProxyActor(event.getPlayer()); + final Player player = PlayerWrapper.wrap(createProxyActor(event.getPlayer())); try { switch (event.getInputType()) { case PRIMARY: { diff --git a/forge1710/src/main/java/com/boydti/fawe/forge/ForgePlayer.java b/forge1710/src/main/java/com/boydti/fawe/forge/ForgePlayer.java index bba22bf9..de15d615 100644 --- a/forge1710/src/main/java/com/boydti/fawe/forge/ForgePlayer.java +++ b/forge1710/src/main/java/com/boydti/fawe/forge/ForgePlayer.java @@ -1,5 +1,6 @@ package com.boydti.fawe.forge; +import com.boydti.fawe.config.BBC; import com.boydti.fawe.config.Settings; import com.boydti.fawe.object.FaweLocation; import com.boydti.fawe.object.FawePlayer; @@ -51,7 +52,7 @@ public class ForgePlayer extends FawePlayer { @Override public void sendMessage(String msg) { for (String part : msg.split("\n")) { - part = EnumChatFormatting.getTextWithoutFormattingCodes(msg); + part = BBC.color(part); ChatComponentText component = new ChatComponentText(part); component.getChatStyle().setColor(EnumChatFormatting.LIGHT_PURPLE); this.parent.addChatMessage(component); diff --git a/forge189/src/main/java/com/boydti/fawe/forge/ForgePlayer.java b/forge189/src/main/java/com/boydti/fawe/forge/ForgePlayer.java index 7ecd8af9..eb23d929 100644 --- a/forge189/src/main/java/com/boydti/fawe/forge/ForgePlayer.java +++ b/forge189/src/main/java/com/boydti/fawe/forge/ForgePlayer.java @@ -1,5 +1,6 @@ package com.boydti.fawe.forge; +import com.boydti.fawe.config.BBC; import com.boydti.fawe.config.Settings; import com.boydti.fawe.object.FaweLocation; import com.boydti.fawe.object.FawePlayer; @@ -51,7 +52,7 @@ public class ForgePlayer extends FawePlayer { @Override public void sendMessage(String msg) { for (String part : msg.split("\n")) { - part = EnumChatFormatting.getTextWithoutFormattingCodes(msg); + part = BBC.color(part); ChatComponentText component = new ChatComponentText(part); component.getChatStyle().setColor(EnumChatFormatting.LIGHT_PURPLE); this.parent.addChatMessage(component);