Search in sources :

Example 11 with PlayerInventory

use of net.minecraft.server.v1_12_R1.PlayerInventory in project MyMaid2 by jaoafa.

the class Jail method JailAdd.

/**
 * Jailに理由つきでプレイヤーを追加
 * @param cmd コマンド情報
 * @param player プレイヤー
 * @param banned_by 追加したプレイヤー
 * @param reason 理由
 * @param InvRemove インベントリを削除するか
 * @return 実行できたかどうか
 * @author mine_book000
 * @throws SQLException
 * @throws NullPointerException
 * @throws ClassNotFoundException
 * @throws EscapeJailException
 */
public static boolean JailAdd(Player player, OfflinePlayer banned_by, String reason, boolean InvRemove) throws ClassNotFoundException, NullPointerException, SQLException, EscapeJailException {
    if (player == null) {
        try {
            throw new java.lang.NullPointerException("JailAdd Player is null...!");
        } catch (java.lang.NullPointerException e) {
            BugReporter(e);
        }
        return false;
    }
    if (banned_by == null) {
        try {
            throw new java.lang.NullPointerException("JailAdd OfflinePlayer(banned_by) is null...!");
        } catch (java.lang.NullPointerException e) {
            BugReporter(e);
        }
        return false;
    }
    if (banned_by instanceof Player) {
        Player banned_by_player = (Player) banned_by;
        Pointjao pointjao = new Pointjao(banned_by_player);
        if (!pointjao.has(REQUIRED_jao)) {
            // 所持していない
            ((Player) banned_by).sendMessage("[JAIL] " + ChatColor.GREEN + "あなたはJailするためのjaoポイントが足りません。");
            return false;
        }
    }
    if (Jail.contains(player.getUniqueId().toString())) {
        // 既に牢獄にいるので無理
        return false;
    }
    // Item Check
    if (player.isOnline()) {
        Boolean EscapeFlag = false;
        Player target = player.getPlayer();
        PlayerInventory inv = target.getInventory();
        for (int n = 0; n < inv.getSize(); n++) {
            ItemStack is = inv.getItem(n);
            if (is == null) {
                continue;
            }
            if (is.getType() == Material.AIR) {
                continue;
            }
            net.minecraft.server.v1_12_R1.ItemStack nms = CraftItemStack.asNMSCopy(is);
            NBTTagCompound nbttag = nms.getTag();
            if (nbttag == null) {
                continue;
            }
            String id = nbttag.getString("MyMaid_EscapeJailID");
            if (id == null) {
                continue;
            } else if (id.equals("")) {
                continue;
            }
            PreparedStatement statement = MySQL.getNewPreparedStatement("SELECT * FROM uniqueitem WHERE id = ? AND type = ?");
            statement.setString(1, id);
            statement.setString(2, "MyMaid_EscapeJailID");
            ResultSet res = statement.executeQuery();
            if (res.next()) {
                // ある
                if (res.getBoolean("used")) {
                    // 使ってる
                    nbttag.remove("MyMaid_EscapeJailID");
                    nms.setTag(nbttag);
                    is = CraftItemStack.asBukkitCopy(nms);
                    ItemMeta meta = is.getItemMeta();
                    meta.setDisplayName(meta.getDisplayName() + ChatColor.RED + " [使用済]");
                    is.setItemMeta(meta);
                    inv.setItem(n, is);
                    continue;
                }
            } else {
                // ない
                nbttag.remove("MyMaid_EscapeJailID");
                nms.setTag(nbttag);
                is = CraftItemStack.asBukkitCopy(nms);
                ItemMeta meta = is.getItemMeta();
                meta.setDisplayName(meta.getDisplayName() + ChatColor.RED + " [無効]");
                is.setItemMeta(meta);
                inv.setItem(n, is);
                continue;
            }
            // 使ってない
            PreparedStatement statement_disable = MySQL.getNewPreparedStatement("UPDATE uniqueitem SET used = ? WHERE id = ? AND type = ?");
            statement_disable.setBoolean(1, true);
            statement_disable.setString(2, id);
            statement_disable.setString(3, "MyMaid_EscapeJailID");
            statement_disable.executeUpdate();
            nbttag.remove("MyMaid_EscapeJailID");
            nms.setTag(nbttag);
            is = CraftItemStack.asBukkitCopy(nms);
            ItemMeta meta = is.getItemMeta();
            meta.setDisplayName(meta.getDisplayName() + ChatColor.RED + " [使用済]");
            is.setItemMeta(meta);
            inv.setItem(n, is);
            EscapeFlag = true;
            break;
        }
        target.updateInventory();
        if (EscapeFlag) {
            if (banned_by instanceof Player) {
                Player banned_by_player = (Player) banned_by;
                Pointjao pointjao = new Pointjao(banned_by_player);
                pointjao.use(REQUIRED_jao, player.getName() + "をJailに追加しようとしたため。(理由: " + reason + " | EscapeJailによって失敗)");
            }
            throw new EscapeJailException();
        }
    }
    Jail.add(player.getUniqueId().toString());
    // 設置破壊不可
    block.put(player.getUniqueId().toString(), false);
    // 範囲外移動
    area.put(player.getUniqueId().toString(), false);
    // まだ遺言を残してない
    lasttext.put(player.getUniqueId().toString(), false);
    if (InvRemove) {
        player.getInventory().clear();
    // player.getEnderChest().clear(); - さすがにエンダーチェスト消すのはかわいそうかなと思ってきた
    }
    if (player.getGameMode() == GameMode.SPECTATOR)
        player.setGameMode(GameMode.CREATIVE);
    World Jao_Afa = Bukkit.getServer().getWorld("Jao_Afa");
    Location minami = new Location(Jao_Afa, 2856, 69, 2888);
    // テレポート
    player.teleport(minami);
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
    SimpleDateFormat allsdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    player.sendMessage(ChatColor.GRAY + "[" + sdf.format(new Date()) + "]" + ChatColor.GOLD + "■jaotan" + ChatColor.WHITE + ": " + "やあ。" + player.getName() + "クン。どうも君はなにかをして南の楽園に来てしまったみたいなんだ");
    player.sendMessage(ChatColor.GRAY + "[" + sdf.format(new Date()) + "]" + ChatColor.GOLD + "■jaotan" + ChatColor.WHITE + ": " + "話を聞けば、「" + reason + "」という理由でここにきたみたいだね。");
    player.sendMessage(ChatColor.GRAY + "[" + sdf.format(new Date()) + "]" + ChatColor.GOLD + "■jaotan" + ChatColor.WHITE + ": " + "ちょっとやったことを反省してみるのもいいかもしれないね");
    player.sendMessage(ChatColor.GRAY + "[" + sdf.format(new Date()) + "]" + ChatColor.GOLD + "■jaotan" + ChatColor.WHITE + ": " + "あ、そうだ、今の君に人権はないよ。");
    player.sendMessage(ChatColor.GRAY + "[" + sdf.format(new Date()) + "]" + ChatColor.GOLD + "■jaotan" + ChatColor.WHITE + ": " + "あと、「/testment <LastText>」で遺言を残せるよ!");
    try {
        PreparedStatement statement = MySQL.getNewPreparedStatement("INSERT INTO jail (player, uuid, banned_by, reason, date) VALUES (?, ?, ?, ?, ?)");
        statement.setString(1, player.getName());
        statement.setString(2, player.getUniqueId().toString());
        statement.setString(3, banned_by.getName());
        statement.setString(4, reason);
        statement.setString(5, allsdf.format(new Date()));
        statement.executeUpdate();
    } catch (SQLException | ClassNotFoundException e) {
        BugReporter(e);
    }
    try {
        PreparedStatement statement = MySQL.getNewPreparedStatement("INSERT INTO banlist (player, uuid, type, bannedby, reason, time) VALUES (?, ?, ?, ?, ?, ?)");
        statement.setString(1, player.getName());
        statement.setString(2, player.getUniqueId().toString());
        statement.setString(3, "jail");
        statement.setString(4, banned_by.getName());
        statement.setString(5, reason);
        statement.setString(6, allsdf.format(new Date()));
        statement.executeUpdate();
    } catch (SQLException | ClassNotFoundException e) {
        BugReporter(e);
    }
    Bukkit.broadcastMessage("[JAIL] " + ChatColor.GREEN + "プレイヤー:「" + player.getName() + "」を「" + reason + "」という理由で牢獄リストに追加しました。");
    DiscordSend("223582668132974594", "***Jail[追加]***: プレイヤー「" + player.getName() + "」が「" + banned_by.getName() + "」によって「" + reason + "」という理由でJailリストに追加されました。");
    if (!Achievementjao.getAchievement(player, new AchievementType(20))) {
        player.sendMessage(AchievementAPI.getPrefix() + "実績の解除中に問題が発生しました。");
    }
    if (banned_by instanceof Player) {
        Player banned_by_player = (Player) banned_by;
        Pointjao pointjao = new Pointjao(banned_by_player);
        pointjao.use(REQUIRED_jao, player.getName() + "をJailに追加したため。(理由: " + reason + ")");
    }
    JailBackupSaveTxt(player.getName(), JailType.ADD, banned_by.getName(), reason);
    return true;
}
Also used : SQLException(java.sql.SQLException) NBTTagCompound(net.minecraft.server.v1_12_R1.NBTTagCompound) World(org.bukkit.World) ResultSet(java.sql.ResultSet) ItemMeta(org.bukkit.inventory.meta.ItemMeta) Player(org.bukkit.entity.Player) OfflinePlayer(org.bukkit.OfflinePlayer) PreparedStatement(java.sql.PreparedStatement) PlayerInventory(org.bukkit.inventory.PlayerInventory) Date(java.util.Date) AchievementType(com.jaoafa.jaoSuperAchievement.jaoAchievement.AchievementType) CraftItemStack(org.bukkit.craftbukkit.v1_12_R1.inventory.CraftItemStack) ItemStack(org.bukkit.inventory.ItemStack) SimpleDateFormat(java.text.SimpleDateFormat) Location(org.bukkit.Location)

Example 12 with PlayerInventory

use of net.minecraft.server.v1_12_R1.PlayerInventory in project MyMaid2 by jaoafa.

the class Jail method JailAdd.

/**
 * Jailに理由つきでプレイヤーを追加
 * @param cmd コマンド情報
 * @param player プレイヤー
 * @param banned_by 追加したプレイヤー
 * @param reason 理由
 * @param InvRemove インベントリを削除するか
 * @return 実行できたかどうか
 * @author mine_book000
 * @throws SQLException
 * @throws NullPointerException
 * @throws ClassNotFoundException
 * @throws EscapeJailException
 */
public static boolean JailAdd(Player player, CommandSender banned_by, String reason, boolean InvRemove) throws ClassNotFoundException, NullPointerException, SQLException, EscapeJailException {
    if (player == null) {
        banned_by.sendMessage("[JAIL] " + ChatColor.GREEN + "指定されたプレイヤーは見つかりません。");
        try {
            throw new java.lang.NullPointerException("JailAdd Player is null...!");
        } catch (java.lang.NullPointerException e) {
            BugReporter(e);
        }
        return false;
    }
    if (banned_by instanceof Player) {
        Player banned_by_player = (Player) banned_by;
        Pointjao pointjao = new Pointjao(banned_by_player);
        if (!pointjao.has(REQUIRED_jao)) {
            // 所持していない
            banned_by.sendMessage("[JAIL] " + ChatColor.GREEN + "あなたはJailするためのjaoポイントが足りません。");
            return true;
        }
    }
    if (Jail.contains(player.getUniqueId().toString())) {
        // 既に牢獄にいるので無理
        banned_by.sendMessage("[JAIL] " + ChatColor.GREEN + "指定されたプレイヤーはすでに牢獄にいるため追加できません。");
        return false;
    }
    // Item Check
    if (player.isOnline()) {
        Boolean EscapeFlag = false;
        Player target = player.getPlayer();
        PlayerInventory inv = target.getInventory();
        for (int n = 0; n < inv.getSize(); n++) {
            ItemStack is = inv.getItem(n);
            if (is == null) {
                continue;
            }
            if (is.getType() == Material.AIR) {
                continue;
            }
            net.minecraft.server.v1_12_R1.ItemStack nms = CraftItemStack.asNMSCopy(is);
            NBTTagCompound nbttag = nms.getTag();
            if (nbttag == null) {
                continue;
            }
            String id = nbttag.getString("MyMaid_EscapeJailID");
            if (id == null) {
                continue;
            } else if (id.equals("")) {
                continue;
            }
            PreparedStatement statement = MySQL.getNewPreparedStatement("SELECT * FROM uniqueitem WHERE id = ? AND type = ?");
            statement.setString(1, id);
            statement.setString(2, "MyMaid_EscapeJailID");
            ResultSet res = statement.executeQuery();
            if (res.next()) {
                // ある
                if (res.getBoolean("used")) {
                    // 使ってる
                    nbttag.remove("MyMaid_EscapeJailID");
                    nms.setTag(nbttag);
                    is = CraftItemStack.asBukkitCopy(nms);
                    ItemMeta meta = is.getItemMeta();
                    meta.setDisplayName(meta.getDisplayName() + ChatColor.RED + " [使用済]");
                    is.setItemMeta(meta);
                    inv.setItem(n, is);
                    continue;
                }
            } else {
                // ない
                nbttag.remove("MyMaid_EscapeJailID");
                nms.setTag(nbttag);
                is = CraftItemStack.asBukkitCopy(nms);
                ItemMeta meta = is.getItemMeta();
                meta.setDisplayName(meta.getDisplayName() + ChatColor.RED + " [無効]");
                is.setItemMeta(meta);
                inv.setItem(n, is);
                continue;
            }
            // 使ってない
            PreparedStatement statement_disable = MySQL.getNewPreparedStatement("UPDATE uniqueitem SET used = ? WHERE id = ? AND type = ?");
            statement_disable.setBoolean(1, true);
            statement_disable.setString(2, id);
            statement_disable.setString(3, "MyMaid_EscapeJailID");
            statement_disable.executeUpdate();
            nbttag.remove("MyMaid_EscapeJailID");
            nms.setTag(nbttag);
            is = CraftItemStack.asBukkitCopy(nms);
            ItemMeta meta = is.getItemMeta();
            meta.setDisplayName(meta.getDisplayName() + ChatColor.RED + " [使用済]");
            is.setItemMeta(meta);
            inv.setItem(n, is);
            EscapeFlag = true;
            break;
        }
        target.updateInventory();
        if (EscapeFlag) {
            if (banned_by instanceof Player) {
                Player banned_by_player = (Player) banned_by;
                Pointjao pointjao = new Pointjao(banned_by_player);
                pointjao.use(REQUIRED_jao, player.getName() + "をJailに追加しようとしたため。(理由: " + reason + " | EscapeJailによって失敗)");
            }
            throw new EscapeJailException();
        }
    }
    Jail.add(player.getUniqueId().toString());
    // 設置破壊不可
    block.put(player.getUniqueId().toString(), false);
    // 範囲外移動
    area.put(player.getUniqueId().toString(), false);
    // まだ遺言を残してない
    lasttext.put(player.getUniqueId().toString(), false);
    if (InvRemove) {
        player.getInventory().clear();
    // player.getEnderChest().clear(); - さすがにエンダーチェスト消すのはかわいそうかなと思ってきた
    }
    if (player.getGameMode() == GameMode.SPECTATOR)
        player.setGameMode(GameMode.CREATIVE);
    World Jao_Afa = Bukkit.getServer().getWorld("Jao_Afa");
    Location minami = new Location(Jao_Afa, 2856, 69, 2888);
    // テレポート
    player.teleport(minami);
    SimpleDateFormat allsdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
    player.sendMessage(ChatColor.GRAY + "[" + sdf.format(new Date()) + "]" + ChatColor.GOLD + "■jaotan" + ChatColor.WHITE + ": " + "やあ。" + player.getName() + "クン。どうも君はなにかをして南の楽園に来てしまったみたいなんだ");
    player.sendMessage(ChatColor.GRAY + "[" + sdf.format(new Date()) + "]" + ChatColor.GOLD + "■jaotan" + ChatColor.WHITE + ": " + "話を聞けば、「" + reason + "」という理由でここにきたみたいだね。");
    player.sendMessage(ChatColor.GRAY + "[" + sdf.format(new Date()) + "]" + ChatColor.GOLD + "■jaotan" + ChatColor.WHITE + ": " + "ちょっとやったことを反省してみるのもいいかもしれないね");
    player.sendMessage(ChatColor.GRAY + "[" + sdf.format(new Date()) + "]" + ChatColor.GOLD + "■jaotan" + ChatColor.WHITE + ": " + "あ、そうだ、今の君に人権はないよ。");
    player.sendMessage(ChatColor.GRAY + "[" + sdf.format(new Date()) + "]" + ChatColor.GOLD + "■jaotan" + ChatColor.WHITE + ": " + "あと、「/testment <LastText>」で遺言を残せるよ!");
    try {
        PreparedStatement statement = MySQL.getNewPreparedStatement("INSERT INTO jail (player, uuid, banned_by, reason, date) VALUES (?, ?, ?, ?, ?)");
        statement.setString(1, player.getName());
        statement.setString(2, player.getUniqueId().toString());
        statement.setString(3, banned_by.getName());
        statement.setString(4, reason);
        statement.setString(5, allsdf.format(new Date()));
        statement.executeUpdate();
    } catch (SQLException | ClassNotFoundException e) {
        BugReporter(e);
    }
    try {
        PreparedStatement statement = MySQL.getNewPreparedStatement("INSERT INTO banlist (player, uuid, type, bannedby, reason, time) VALUES (?, ?, ?, ?, ?, ?)");
        statement.setString(1, player.getName());
        statement.setString(2, player.getUniqueId().toString());
        statement.setString(3, "jail");
        statement.setString(4, banned_by.getName());
        statement.setString(5, reason);
        statement.setString(6, allsdf.format(new Date()));
        statement.executeUpdate();
    } catch (SQLException | ClassNotFoundException e) {
        BugReporter(e);
    }
    Bukkit.broadcastMessage("[JAIL] " + ChatColor.GREEN + "プレイヤー:「" + player.getName() + "」を「" + reason + "」という理由で牢獄リストに追加しました。");
    DiscordSend("223582668132974594", "***Jail[追加]***: プレイヤー「" + player.getName() + "」が「" + banned_by.getName() + "」によって「" + reason + "」という理由でJailリストに追加されました。");
    if (!Achievementjao.getAchievement(player, new AchievementType(20))) {
        player.sendMessage(AchievementAPI.getPrefix() + "実績の解除中に問題が発生しました。");
    }
    if (banned_by instanceof Player) {
        Player banned_by_player = (Player) banned_by;
        Pointjao pointjao = new Pointjao(banned_by_player);
        pointjao.use(REQUIRED_jao, player.getName() + "をJailに追加したため。(理由: " + reason + ")");
    }
    JailBackupSaveTxt(player.getName(), JailType.ADD, banned_by.getName(), reason);
    return true;
}
Also used : SQLException(java.sql.SQLException) NBTTagCompound(net.minecraft.server.v1_12_R1.NBTTagCompound) World(org.bukkit.World) ResultSet(java.sql.ResultSet) ItemMeta(org.bukkit.inventory.meta.ItemMeta) Player(org.bukkit.entity.Player) OfflinePlayer(org.bukkit.OfflinePlayer) PreparedStatement(java.sql.PreparedStatement) PlayerInventory(org.bukkit.inventory.PlayerInventory) Date(java.util.Date) AchievementType(com.jaoafa.jaoSuperAchievement.jaoAchievement.AchievementType) CraftItemStack(org.bukkit.craftbukkit.v1_12_R1.inventory.CraftItemStack) ItemStack(org.bukkit.inventory.ItemStack) SimpleDateFormat(java.text.SimpleDateFormat) Location(org.bukkit.Location)

Example 13 with PlayerInventory

use of net.minecraft.server.v1_12_R1.PlayerInventory in project PaperDev by Kamillaova.

the class CraftContainer method c.

@Override
public boolean c(EntityHuman entityhuman) {
    if (cachedType == view.getType() && cachedSize == getSize() && cachedTitle.equals(view.getTitle())) {
        return true;
    }
    // If the window type has changed for some reason, update the player
    // This method will be called every tick or something, so it's
    // as good a place as any to put something like this.
    boolean typeChanged = (cachedType != view.getType());
    cachedType = view.getType();
    cachedTitle = view.getTitle();
    if (view.getPlayer() instanceof CraftPlayer) {
        CraftPlayer player = (CraftPlayer) view.getPlayer();
        String type = getNotchInventoryType(cachedType);
        IInventory top = ((CraftInventory) view.getTopInventory()).getInventory();
        PlayerInventory bottom = (PlayerInventory) ((CraftInventory) view.getBottomInventory()).getInventory();
        this.items.clear();
        this.slots.clear();
        if (typeChanged) {
            setupSlots(top, bottom, player.getHandle());
        }
        int size = getSize();
        player.getHandle().playerConnection.sendPacket(new PacketPlayOutOpenWindow(this.windowId, type, new ChatComponentText(cachedTitle), size));
        player.updateInventory();
    }
    return true;
}
Also used : IInventory(net.minecraft.server.v1_12_R1.IInventory) CraftPlayer(org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer) PlayerInventory(net.minecraft.server.v1_12_R1.PlayerInventory) PacketPlayOutOpenWindow(net.minecraft.server.v1_12_R1.PacketPlayOutOpenWindow) ChatComponentText(net.minecraft.server.v1_12_R1.ChatComponentText)

Aggregations

PlayerInventory (org.bukkit.inventory.PlayerInventory)8 Location (org.bukkit.Location)6 PreparedStatement (java.sql.PreparedStatement)5 ResultSet (java.sql.ResultSet)5 NBTTagCompound (net.minecraft.server.v1_12_R1.NBTTagCompound)5 OfflinePlayer (org.bukkit.OfflinePlayer)5 CraftItemStack (org.bukkit.craftbukkit.v1_12_R1.inventory.CraftItemStack)5 Player (org.bukkit.entity.Player)5 ItemStack (org.bukkit.inventory.ItemStack)5 ItemMeta (org.bukkit.inventory.meta.ItemMeta)5 SimpleDateFormat (java.text.SimpleDateFormat)4 Date (java.util.Date)4 SQLException (java.sql.SQLException)3 Seat (me.legofreak107.vehicles.objects.Seat)3 Vehicle (me.legofreak107.vehicles.objects.Vehicle)3 EntityArmorStand (net.minecraft.server.v1_12_R1.EntityArmorStand)3 IInventory (net.minecraft.server.v1_12_R1.IInventory)3 PacketPlayInSteerVehicle (net.minecraft.server.v1_12_R1.PacketPlayInSteerVehicle)3 World (org.bukkit.World)3 BossBar (org.bukkit.boss.BossBar)3