Search in sources :

Example 1 with EnginePlayer

use of thpmc.engine.api.player.EnginePlayer in project THP-Engine by TheHollowPlanetMC.

the class ParallelStructure method clearStructureData.

/**
 * 適用されている構造物データを消去します
 * @param player 構造物を変化させて見せるプレイヤー
 * @param chunkUpdate チャンクアップデートのパケットを送信するかどうか
 */
public void clearStructureData(Player player, boolean chunkUpdate) {
    EnginePlayer enginePlayer = EnginePlayer.getParallelPlayer(player);
    if (enginePlayer == null)
        return;
    this.clearStructureData(enginePlayer, chunkUpdate);
}
Also used : EnginePlayer(thpmc.engine.api.player.EnginePlayer)

Example 2 with EnginePlayer

use of thpmc.engine.api.player.EnginePlayer in project THP-Engine by TheHollowPlanetMC.

the class ParallelStructure method setStructureData.

/**
 * この構造物を指定された構造物データで上書きして特定のプレイヤーへ見せる
 * @param player 構造物を変化させて見せるプレイヤー
 * @param implStructureData 構造物データ
 */
public void setStructureData(Player player, ImplStructureData implStructureData) {
    EnginePlayer enginePlayer = EnginePlayer.getParallelPlayer(player);
    if (enginePlayer == null)
        return;
    this.setStructureData(enginePlayer, implStructureData);
}
Also used : EnginePlayer(thpmc.engine.api.player.EnginePlayer)

Example 3 with EnginePlayer

use of thpmc.engine.api.player.EnginePlayer in project THP-Engine by TheHollowPlanetMC.

the class parallelCommandExecutor method onCommand.

@Override
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    if (args == null)
        return false;
    if (args.length == 0)
        return false;
    if (args[0].equals("structure")) {
        if (args.length < 3) {
            return false;
        }
        // parallel structure set-data [structure-name] [data-name] [player]
        if (args[1].equals("set-data")) {
            if (args.length < 5) {
                return false;
            }
            ParallelStructure parallelStructure = ParallelStructure.getParallelStructure(args[2]);
            if (parallelStructure == null) {
                sender.sendMessage(ChatColor.RED + "指定された名前の構造体は存在しません。");
                return true;
            }
            ImplStructureData implStructureData = (ImplStructureData) ImplStructureData.getStructureData(args[3]);
            if (implStructureData == null) {
                sender.sendMessage(ChatColor.RED + "指定された名前の構造データは存在しません。");
                return true;
            }
            Player player = Bukkit.getPlayer(args[4]);
            if (player == null) {
                sender.sendMessage(ChatColor.RED + "指定されたプレイヤーが見つかりませんでした。");
                return true;
            }
            parallelStructure.setStructureData(player, implStructureData);
            sender.sendMessage(ChatColor.GREEN + "適用しました。");
            return true;
        }
        // parallel structure remove-data [structure-name] [player]
        if (args[1].equals("remove-data")) {
            if (args.length < 4) {
                return false;
            }
            ParallelStructure parallelStructure = ParallelStructure.getParallelStructure(args[2]);
            if (parallelStructure == null) {
                sender.sendMessage(ChatColor.RED + "指定された名前の構造体は存在しません。");
                return true;
            }
            Player player = Bukkit.getPlayer(args[3]);
            if (player == null) {
                sender.sendMessage(ChatColor.RED + "指定されたプレイヤーが見つかりませんでした。");
                return true;
            }
            parallelStructure.clearStructureData(player, true);
            sender.sendMessage(ChatColor.GREEN + "適用しました。");
            return true;
        }
    }
    if (!(sender instanceof Player)) {
        sender.sendMessage(ChatColor.RED + "このコマンドはコンソールから実行できません。");
        return true;
    }
    if (args[0].equals("menu")) {
        Player player = (Player) sender;
        UniverseGUI.openUniverseGUI(player);
        return true;
    }
    if (args[0].equals("join-universe")) {
        if (args.length != 2)
            return false;
        String universeName = args[1];
        ParallelUniverse universe = THPEngineAPI.getInstance().getUniverse(universeName);
        if (universe == null) {
            sender.sendMessage("§aThe universe is not found.");
            return true;
        }
        EnginePlayer enginePlayer = EnginePlayer.getParallelPlayer((Player) sender);
        if (enginePlayer == null)
            return false;
        enginePlayer.setUniverse(universe);
        enginePlayer.getBukkitPlayer().sendMessage("§7Switched to §r" + universe.getName());
    }
    if (args[0].equals("leave-universe")) {
        EnginePlayer enginePlayer = EnginePlayer.getParallelPlayer((Player) sender);
        if (enginePlayer == null)
            return false;
        enginePlayer.setUniverse(null);
    }
    // parallel structure-data create [name]
    if (args[0].equals("structure-data")) {
        if (args.length < 3) {
            return false;
        }
        if (args[1].equals("create")) {
            Player player = (Player) sender;
            com.sk89q.worldedit.entity.Player wePlayer = BukkitAdapter.adapt(player);
            SessionManager sessionManager = WorldEdit.getInstance().getSessionManager();
            LocalSession localSession = sessionManager.get(wePlayer);
            com.sk89q.worldedit.world.World selectionWorld = localSession.getSelectionWorld();
            Region region;
            try {
                if (selectionWorld == null)
                    throw new IncompleteRegionException();
                region = localSession.getSelection(selectionWorld);
            } catch (IncompleteRegionException ex) {
                sender.sendMessage(ChatColor.GREEN + "範囲が選択されていません。");
                return true;
            }
            BlockVector3 max = region.getMaximumPoint();
            BlockVector3 min = region.getMinimumPoint();
            World world = BukkitAdapter.adapt(region.getWorld());
            Vector maxLocation = new Vector(max.getX(), max.getY(), max.getZ());
            Vector minLocation = new Vector(min.getX(), min.getY(), min.getZ());
            RegionBlocks regionBlocks = new RegionBlocks(minLocation.toLocation(world), maxLocation.toLocation(world));
            ImplStructureData implStructureData = (ImplStructureData) StructureData.getStructureData(args[2]);
            if (implStructureData != null) {
                sender.sendMessage(ChatColor.RED + "指定された名前の構造データは既に存在しています。");
                return true;
            }
            implStructureData = new ImplStructureData(args[2]);
            implStructureData.setBlockData(minLocation.toLocation(world), regionBlocks.getBlocks());
            sender.sendMessage(ChatColor.GREEN + "作成しました。");
            return true;
        }
        if (args[1].equals("save")) {
            ImplStructureData implStructureData = (ImplStructureData) ImplStructureData.getStructureData(args[2]);
            if (implStructureData == null) {
                sender.sendMessage(ChatColor.RED + "指定された名前の構造データは存在しません。");
                return true;
            }
            implStructureData.saveData();
            sender.sendMessage(ChatColor.GREEN + "保存しました。");
            return true;
        }
    }
    if (args[0].equals("structure")) {
        if (args.length < 3) {
            return false;
        }
        // parallel structure create [name]
        if (args[1].equals("create")) {
            Player player = (Player) sender;
            com.sk89q.worldedit.entity.Player wePlayer = BukkitAdapter.adapt(player);
            SessionManager sessionManager = WorldEdit.getInstance().getSessionManager();
            LocalSession localSession = sessionManager.get(wePlayer);
            com.sk89q.worldedit.world.World selectionWorld = localSession.getSelectionWorld();
            Region region;
            try {
                if (selectionWorld == null)
                    throw new IncompleteRegionException();
                region = localSession.getSelection(selectionWorld);
            } catch (IncompleteRegionException ex) {
                sender.sendMessage(ChatColor.GREEN + "範囲が選択されていません。");
                return true;
            }
            BlockVector3 min = region.getMinimumPoint();
            World world = BukkitAdapter.adapt(region.getWorld());
            Vector minLocation = new Vector(min.getX(), min.getY(), min.getZ());
            ParallelStructure parallelStructure = ParallelStructure.getParallelStructure(args[2]);
            if (parallelStructure != null) {
                sender.sendMessage(ChatColor.RED + "指定された名前の構造体は既に存在しています。");
                return true;
            }
            parallelStructure = new ParallelStructure(args[2]);
            parallelStructure.setBaseLocation(minLocation.toLocation(world));
            sender.sendMessage(ChatColor.GREEN + "作成しました。");
            return true;
        }
        // parallel structure save [name]
        if (args[1].equals("save")) {
            ParallelStructure parallelStructure = ParallelStructure.getParallelStructure(args[2]);
            if (parallelStructure == null) {
                sender.sendMessage(ChatColor.RED + "指定された名前の構造体は存在しません。");
                return true;
            }
            parallelStructure.saveData();
            sender.sendMessage(ChatColor.GREEN + "保存しました。");
            return true;
        }
    }
    return true;
}
Also used : Player(org.bukkit.entity.Player) EnginePlayer(thpmc.engine.api.player.EnginePlayer) SessionManager(com.sk89q.worldedit.session.SessionManager) LocalSession(com.sk89q.worldedit.LocalSession) IncompleteRegionException(com.sk89q.worldedit.IncompleteRegionException) BlockVector3(com.sk89q.worldedit.math.BlockVector3) World(org.bukkit.World) RegionBlocks(thpmc.engine.util.RegionBlocks) ImplStructureData(thpmc.engine.structure.ImplStructureData) ParallelUniverse(thpmc.engine.api.world.parallel.ParallelUniverse) Region(com.sk89q.worldedit.regions.Region) ParallelStructure(thpmc.engine.structure.ParallelStructure) EnginePlayer(thpmc.engine.api.player.EnginePlayer) Vector(org.bukkit.util.Vector)

Example 4 with EnginePlayer

use of thpmc.engine.api.player.EnginePlayer in project THP-Engine by TheHollowPlanetMC.

the class ImplEnginePlayer method onPlayerQuit.

public static void onPlayerQuit(Player player) {
    EnginePlayer EnginePlayer = playerMap.get(player);
    EnginePlayer.setUniverse(null);
    playerMap.remove(player);
}
Also used : EnginePlayer(thpmc.engine.api.player.EnginePlayer)

Example 5 with EnginePlayer

use of thpmc.engine.api.player.EnginePlayer in project THP-Engine by TheHollowPlanetMC.

the class EnginePlayerEntity method hide.

@Override
public void hide(EnginePlayer player) {
    INMSHandler nmsHandler = THPEngineAPI.getInstance().getNMSHandler();
    Player bukkitPlayer = player.getBukkitPlayer();
    nmsHandler.sendPacket(bukkitPlayer, nmsHandler.createPlayerInfoPacket(nmsEntity, WrappedPlayerInfoAction.REMOVE_PLAYER));
    nmsHandler.sendPacket(bukkitPlayer, nmsHandler.createEntityDestroyPacket(nmsEntity));
}
Also used : EnginePlayer(thpmc.engine.api.player.EnginePlayer) NMSEntityPlayer(thpmc.engine.api.nms.entity.NMSEntityPlayer) Player(org.bukkit.entity.Player) INMSHandler(thpmc.engine.api.nms.INMSHandler)

Aggregations

EnginePlayer (thpmc.engine.api.player.EnginePlayer)11 Player (org.bukkit.entity.Player)6 INMSHandler (thpmc.engine.api.nms.INMSHandler)3 NMSEntityPlayer (thpmc.engine.api.nms.entity.NMSEntityPlayer)3 ParallelUniverse (thpmc.engine.api.world.parallel.ParallelUniverse)3 be4rjp.artgui.button (be4rjp.artgui.button)1 Artist (be4rjp.artgui.frame.Artist)1 ArtMenu (be4rjp.artgui.menu.ArtMenu)1 IncompleteRegionException (com.sk89q.worldedit.IncompleteRegionException)1 LocalSession (com.sk89q.worldedit.LocalSession)1 BlockVector3 (com.sk89q.worldedit.math.BlockVector3)1 Region (com.sk89q.worldedit.regions.Region)1 SessionManager (com.sk89q.worldedit.session.SessionManager)1 ChannelPipeline (io.netty.channel.ChannelPipeline)1 Material (org.bukkit.Material)1 World (org.bukkit.World)1 EventHandler (org.bukkit.event.EventHandler)1 Vector (org.bukkit.util.Vector)1 THPEngine (thpmc.engine.THPEngine)1 THPEngineAPI (thpmc.engine.api.THPEngineAPI)1