use of com.jaoafa.MyMaid2.Lib.Pointjao in project MyMaid2 by jaoafa.
the class Event_Shop method BUY.
@SuppressWarnings("deprecation")
void BUY(PlayerInteractEvent event) {
Player player = event.getPlayer();
Block block = event.getClickedBlock();
Sign sign = (Sign) block.getState();
Location loc = block.getLocation();
Location ChestLoc = loc.add(0, -1, 0);
Block ChestBlock = ChestLoc.getWorld().getBlockAt(ChestLoc);
Chest chest = (Chest) ChestBlock.getState();
// チェストに関連するアイテムがあるかどうか?
// 必要なjaoポイントを持っているか?
// →販売・購入
String TransManager_Str = sign.getLine(1);
if (TransManager_Str.equalsIgnoreCase(player.getName())) {
player.sendMessage(ChatColor.GOLD + "[jaoShop] " + ChatColor.RESET + "取引運営者が購入することはできません。");
return;
}
OfflinePlayer TransManager = Bukkit.getOfflinePlayer(TransManager_Str);
if (TransManager == null) {
player.sendMessage(ChatColor.GOLD + "[jaoShop] " + ChatColor.RESET + "取引運営者が取得できませんでした。");
return;
}
Pointjao TransManager_jao;
try {
TransManager_jao = new Pointjao(TransManager);
} catch (NullPointerException | ClassNotFoundException | SQLException e) {
player.sendMessage(ChatColor.GOLD + "[jaoShop] " + ChatColor.RESET + "取引運営者のjaoポイントデータが取得できませんでした。");
BugReporter(e);
return;
}
Pointjao Player_jao;
try {
Player_jao = new Pointjao(player);
} catch (NullPointerException | ClassNotFoundException | SQLException e) {
player.sendMessage(ChatColor.GOLD + "[jaoShop] " + ChatColor.RESET + "jaoポイントデータが取得できませんでした。");
BugReporter(e);
return;
}
Inventory inv = chest.getInventory();
String Line4 = sign.getLine(3);
ItemStack MainItem = inv.getItem(0);
if (MainItem == null) {
player.sendMessage(ChatColor.GOLD + "[jaoShop] " + ChatColor.RESET + "販売アイテムの情報が取得できませんでした。");
return;
}
ItemStack item = null;
int slot;
for (int i = 1; i < inv.getSize(); i++) {
ItemStack is = inv.getItem(i);
if (is == null) {
continue;
}
if (MainItem != is) {
continue;
}
item = is;
slot = i;
break;
}
if (item == null) {
player.sendMessage(ChatColor.GOLD + "[jaoShop] " + ChatColor.RESET + "販売できる商品がありませんでした。");
return;
}
try {
int jao = Player_jao.get();
} catch (ClassNotFoundException | NullPointerException | SQLException e) {
player.sendMessage(ChatColor.GOLD + "[jaoShop] " + ChatColor.RESET + "jaoポイントデータが操作できませんでした。");
BugReporter(e);
return;
}
}
use of com.jaoafa.MyMaid2.Lib.Pointjao in project MyMaid2 by jaoafa.
the class Event_VoteReceived method VoteReceive.
public static boolean VoteReceive(String name) {
final int VOTEPOINT = 20;
String oldVote = "取得できませんでした";
String newVote = "取得できませんでした";
String oldjao = "取得できませんでした";
String newjao = "取得できませんでした";
/* ------------- 投票イベント関連開始 ------------- */
/*
String plusargs = "";
// ハロウィンイベント Issue #18
try {
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date start = format.parse("2017/10/15 09:00:00");
Date end = format.parse("2017/11/01 08:59:59");
if(isPeriod(start, end)){
plusargs = "&pluscount=2"; // 2倍
}
} catch (ParseException e) {
BugReporter(e);
}
try {
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date start = format.parse("2017/07/01 00:00:00");
Date end = format.parse("2017/07/14 23:59:59");
if(Method.isPeriod(start, end)){
VOTECOUNT += 20;
Bukkit.broadcastMessage("[MyMaid] " + ChatColor.GREEN + player.getName() + "さんが投票し、七夕イベントボーナスを追加で20ポイントポイント追加しました。");
DiscordSend(player.getName() + "さんが投票し、七夕イベントボーナスを追加で20ポイント追加しました。");
}
} catch (ParseException e) {
BugReporter(e);
}
*/
/* ------------- 投票イベント関連終了 ------------- */
UUID uuid = null;
try {
PreparedStatement statement = MySQL.getNewPreparedStatement("SELECT * FROM login WHERE player = ? ORDER BY id DESC");
statement.setString(1, name);
ResultSet res = statement.executeQuery();
if (res.next()) {
uuid = UUID.fromString(res.getString("uuid"));
}
} catch (SQLException | ClassNotFoundException e) {
// TODO 自動生成された catch ブロック
DiscordSend("499922840871632896", "<@221991565567066112> :outbox_tray:**投票受信エラー**: " + name + "のプレイヤーデータをデータベースから取得している最中にClassNotFoundExceptionもしくはSQLExceptionが発生したため、投票処理が正常に行われませんでした。");
BugReporter(e);
return false;
}
if (uuid == null) {
DiscordSend("499922840871632896", "<@221991565567066112> :outbox_tray:**投票受信エラー**: " + name + "のプレイヤーデータがデータベースから取得できなかったため、投票処理が正常に行われませんでした。");
return false;
}
OfflinePlayer offplayer = Bukkit.getOfflinePlayer(uuid);
if (offplayer == null) {
DiscordSend("499922840871632896", "<@221991565567066112> :outbox_tray:**投票受信エラー**: " + name + "のOfflinePlayerを取得できなかったため、投票処理が正常に行われませんでした。");
return false;
}
if (!offplayer.getName().equals(name)) {
name += "(" + offplayer.getName() + ")";
}
boolean first = PlayerVoteData.TodayFirstVote();
String i;
try {
PlayerVoteData pvd = new PlayerVoteData(offplayer);
oldVote = String.valueOf(pvd.get());
pvd.add();
newVote = String.valueOf(pvd.get());
i = String.valueOf(pvd.get());
} catch (ClassNotFoundException | SQLException e) {
DiscordSend("499922840871632896", "<@221991565567066112> :outbox_tray:**投票受信エラー**: " + name + "の投票処理時にClassNotFoundExceptionもしくはSQLExceptionが発生したため、投票処理(投票数追加)が正常に行われませんでした。");
BugReporter(e);
return false;
} catch (NullPointerException e) {
DiscordSend("499922840871632896", "<@221991565567066112> :outbox_tray:**投票受信エラー**: " + name + "のプレイヤー投票データが取得できなかったため、投票処理(投票数追加)が正常に行われませんでした。");
return false;
}
try {
Pointjao pointjao = new Pointjao(offplayer);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
oldjao = "" + pointjao.get();
pointjao.add(VOTEPOINT, sdf.format(new Date()) + "の投票ボーナス");
newjao = "" + pointjao.get();
try {
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date start = format.parse("2018/08/12 00:00:00");
Date end = format.parse("2018/08/31 23:59:59");
if (isPeriod(start, end)) {
Random rnd = new Random();
int random = rnd.nextInt(40) + 11;
pointjao.add(random, sdf.format(new Date()) + "の投票ボーナス (サバイバルイベント分)");
Bukkit.broadcastMessage("[jaoPoint] " + ChatColor.GREEN + name + "さんがサバイバルイベント投票ボーナスによってjaoポイントを追加で" + random + "ポイント追加しました。");
DiscordSend(name + "さんがサバイバルイベント投票ボーナスによってjaoポイントを追加で" + random + "ポイント追加しました。");
}
} catch (ParseException e) {
BugReporter(e);
}
} catch (NullPointerException e) {
DiscordSend("499922840871632896", "<@221991565567066112> :outbox_tray:**投票受信エラー**: " + name + "のプレイヤーデータが取得できなかったため、投票処理(ポイント追加)が正常に行われませんでした。");
return false;
} catch (ClassNotFoundException | SQLException e) {
DiscordSend("499922840871632896", "<@221991565567066112> :outbox_tray:**投票受信エラー**: " + name + "の投票処理時にClassNotFoundExceptionもしくはSQLExceptionが発生したため、投票処理(投票数追加)が正常に行われませんでした。");
BugReporter(e);
return false;
}
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Bukkit.broadcastMessage("[MyMaid] " + ChatColor.GREEN + "プレイヤー「" + name + "」が投票をしました!(現在の投票数:" + i + "回)");
Bukkit.broadcastMessage("[MyMaid] " + ChatColor.GREEN + "投票をよろしくお願いします! https://jaoafa.com/vote");
DiscordSend("プレイヤー「" + name + "」が投票をしました!(現在の投票数:" + i + "回)");
DiscordSend("投票をよろしくお願いします! https://jaoafa.com/vote");
DiscordSend("499922840871632896", ":inbox_tray:**投票を受信しました。(" + format.format(new Date()) + ")**\n" + "プレイヤー: `" + name + "`\n" + "投票前カウント: " + oldVote + "\n" + "投票後カウント: " + newVote + "\n" + "投票前jaoポイント: " + oldjao + "\n" + "投票後jaoポイント: " + newjao);
if (first) {
// 初めての投票だったら、実績獲得 (No.21 / 筆頭株主)
if (offplayer != null) {
Achievementjao.getAchievement(offplayer, new AchievementType(21));
}
}
/*
if(date.format(Date).equalsIgnoreCase("2017-02")){
Random rnd = new Random();
int random = rnd.nextInt(50)+1;
Pointjao.addjao(player, random, sdf.format(Date) + "の投票ボーナス(2月ポイント補填ボーナス)");
Bukkit.broadcastMessage("[MyMaid] " + ChatColor.GREEN + player.getName() + "さんが投票し、2月ポイント補填ボーナスを" + random + "ポイント追加しました。");
DiscordSend(player.getName() + "さんが投票し、2月ポイント補填ボーナスを" + random + "ポイント追加しました。");
}
*/
return true;
}
use of com.jaoafa.MyMaid2.Lib.Pointjao in project MyMaid2 by jaoafa.
the class Event_JoinjaoPoint method OnEvent_JoinjaoPoint.
@EventHandler
public void OnEvent_JoinjaoPoint(PlayerJoinEvent event) {
Player player = event.getPlayer();
String uuid = player.getUniqueId().toString();
Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
SimpleDateFormat date_full = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
date_full.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));
String today = date_full.format(cal.getTime());
SimpleDateFormat date = new SimpleDateFormat("yyyy/MM/dd");
try {
PreparedStatement statement = MySQL.getNewPreparedStatement("SELECT * FROM login WHERE uuid = ? AND date >= cast(? as datetime) AND login_success = ?");
statement.setString(1, uuid);
statement.setString(2, today);
statement.setBoolean(3, true);
ResultSet res = statement.executeQuery();
if (res.next()) {
return;
}
} catch (SQLException | ClassNotFoundException e) {
BugReporter(e);
}
try {
Pointjao Pjao = new Pointjao(player);
Pjao.add(10, date.format(new Date()) + "のログインボーナス");
} catch (NullPointerException e) {
BugReporter(e);
return;
} catch (ClassNotFoundException | SQLException e) {
BugReporter(e);
return;
}
try {
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date start = format.parse("2019/03/05 00:00:00");
Date end = format.parse("2019/03/15 23:59:59");
if (isPeriod(start, end)) {
String group = PermissionsManager.getPermissionMainGroup(player);
if (!group.equalsIgnoreCase("Admin") && !group.equalsIgnoreCase("Moderator") && !group.equalsIgnoreCase("Regular") && !group.equalsIgnoreCase("Default")) {
return;
}
ItemStack item = new ItemStack(Material.POTATO_ITEM);
net.minecraft.server.v1_12_R1.ItemStack nms = CraftItemStack.asNMSCopy(item);
NBTTagCompound nbttag = nms.getTag();
if (nbttag == null) {
nbttag = new NBTTagCompound();
}
UUID item_uuid = UUID.randomUUID();
MessageDigest md;
try {
md = MessageDigest.getInstance("SHA-1");
} catch (NoSuchAlgorithmException e) {
BugReporter(e);
player.sendMessage("[EscapeJail] " + ChatColor.RED + "新しいEscapeJailアイテムの精製に失敗しました。(2)");
return;
}
byte[] digest = md.digest(item_uuid.toString().getBytes());
String id = DatatypeConverter.printHexBinary(digest);
if (id == null) {
player.sendMessage("[EscapeJail] " + ChatColor.RED + "新しいEscapeJailアイテムの精製に失敗しました。(3)");
return;
}
nbttag.setString("MyMaid_EscapeJailID", id);
nms.setTag(nbttag);
item = CraftItemStack.asBukkitCopy(nms);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("EscapeItem - IMO");
List<String> lore = new ArrayList<String>();
lore.add("このアイテムをインベントリ内に配置しておくと、Jail(EBan除く)を無効化できます!(アイテム1つにつき1回限り)");
lore.add(ChatColor.RED + "NBTデータを削除してしまうと、アイテムは無効となります。また、複製をしても1つしか有効ではありません。");
meta.setLore(lore);
meta.addEnchant(Enchantment.LOOT_BONUS_BLOCKS, 999, true);
item.setItemMeta(meta);
try {
PreparedStatement statement = MySQL.getNewPreparedStatement("INSERT INTO uniqueitem (id, type) VALUES (?, ?)");
statement.setString(1, id);
statement.setString(2, "MyMaid_EscapeJailID");
statement.executeUpdate();
} catch (SQLException | ClassNotFoundException e) {
BugReporter(e);
player.sendMessage("[EscapeJail] " + ChatColor.RED + "新しいEscapeJailアイテムの精製に失敗しました。(3)");
return;
}
player.sendMessage("[EscapeJail] " + ChatColor.RED + "新しいEscapeJailアイテムの精製に成功しました。");
player.sendMessage("[EscapeJail] " + ChatColor.RED + "このアイテムをインベントリの中に配置しておくと、Jail(EBan除く)をアイテム個数分だけ無効化できます!");
if (player.getInventory().firstEmpty() == -1) {
player.getLocation().getWorld().dropItem(player.getLocation(), item);
player.sendMessage("[EscapeJail] " + ChatColor.RED + "インベントリがいっぱいだったため、あなたの足元にアイテムをドロップしました。");
Bukkit.getLogger().info("[EscapeJail] dropped to " + player.getName());
} else {
player.getInventory().addItem(item);
Bukkit.getLogger().info("[EscapeJail] gived to " + player.getName());
}
}
} catch (ParseException e) {
BugReporter(e);
}
}
use of com.jaoafa.MyMaid2.Lib.Pointjao in project MyMaid2 by jaoafa.
the class MyMaidBookHistory method onCommand.
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
if (args.length >= 1 && args[0].equalsIgnoreCase("help")) {
SendUsageMessage(sender, cmd);
return true;
}
if (args.length == 1) {
if (args[0].equalsIgnoreCase("list")) {
// /book list : 本のリストを表示
try {
PreparedStatement statement = MySQL.getNewPreparedStatement("SELECT COUNT(*) FROM book WHERE status = ?");
statement.setString(1, "now");
ResultSet rescount = statement.executeQuery();
rescount.next();
int size = rescount.getInt("COUNT(*)");
statement = MySQL.getNewPreparedStatement("SELECT * FROM book WHERE status = ?");
statement.setString(1, "now");
ResultSet res = statement.executeQuery();
int count = 0;
int page = 1;
int startcount = (page - 1) * 10;
int endcount = page * 10;
int maxpage = size / 10;
if (size % 10 != 0)
maxpage += 1;
SendMessage(sender, cmd, "Book List: " + page + "page / " + maxpage + "page");
SendMessage(sender, cmd, "-------------------------");
while (res.next()) {
if (count < startcount) {
count++;
continue;
}
if (count > endcount) {
break;
}
int id = res.getInt("id");
String title = res.getString("title");
String author = res.getString("author");
String author_uuid = res.getString("author_uuid");
String pages_str = res.getString("data");
int requiredjao = res.getInt("requiredjao");
int book_count = res.getInt("count");
String history = res.getString("history");
String status = res.getString("status");
int createdate = res.getInt("createdate");
MyMaidBookData bookdata;
if (author_uuid.equalsIgnoreCase("null") || author_uuid.equalsIgnoreCase("")) {
bookdata = new MyMaidBookData(id, title, author, pages_str, requiredjao, book_count, history, status, createdate);
} else {
UUID uuid = UUID.fromString(author_uuid);
try {
bookdata = new MyMaidBookData(id, title, uuid, pages_str, requiredjao, book_count, history, status, createdate);
} catch (IllegalArgumentException e) {
BugReporter(e);
SendMessage(sender, cmd, "データの解析に失敗しました。");
return true;
}
}
SendMessage(sender, cmd, "[" + bookdata.getID() + "] " + bookdata.getTitle() + ChatColor.GREEN + " - " + bookdata.getAuthorName() + "(" + bookdata.getRequiredjao() + "jao)");
count++;
}
SendMessage(sender, cmd, "-------------------------");
SendMessage(sender, cmd, startcount + " - " + endcount + " / " + size);
if (page != maxpage) {
SendMessage(sender, cmd, "次のページを見るには「/book list " + (page + 1) + "」を実行します。");
}
return true;
} catch (ClassNotFoundException | SQLException e) {
BugReporter(e);
}
}
} else if (args.length == 2) {
if (args[0].equalsIgnoreCase("get")) {
// /book get <Name|ID>
if (!(sender instanceof Player)) {
SendMessage(sender, cmd, "このコマンドはサーバ内から実行可能です。");
return true;
}
Player player = (Player) sender;
try {
MyMaidBookData bookdata = null;
if (isNumber(args[1])) {
// ID
PreparedStatement statement = MySQL.getNewPreparedStatement("SELECT * FROM book WHERE id = ?");
statement.setInt(1, Integer.parseInt(args[1]));
ResultSet res = statement.executeQuery();
if (!res.next()) {
SendMessage(sender, cmd, "指定された本は見つかりませんでした。");
return true;
}
int id = res.getInt("id");
String title = res.getString("title");
String author = res.getString("author");
String author_uuid = res.getString("author_uuid");
String pages_str = res.getString("data");
int requiredjao = res.getInt("requiredjao");
int book_count = res.getInt("count");
String history = res.getString("history");
String status = res.getString("status");
int createdate = res.getInt("createdate");
if (status.equalsIgnoreCase("end")) {
// 販売終了
SendMessage(sender, cmd, "指定された本はすでに販売を終了しています。");
return true;
} else if (!status.equalsIgnoreCase("now")) {
SendMessage(sender, cmd, "指定された本は未発売か、なにかしらの理由で販売できません。(Status: " + status + ")");
return true;
}
if (author_uuid.equalsIgnoreCase("null") || author_uuid.equalsIgnoreCase("")) {
bookdata = new MyMaidBookData(id, title, author, pages_str, requiredjao, book_count, history, status, createdate);
} else {
UUID uuid = UUID.fromString(author_uuid);
try {
bookdata = new MyMaidBookData(id, title, uuid, pages_str, requiredjao, book_count, history, status, createdate);
} catch (IllegalArgumentException e) {
BugReporter(e);
SendMessage(sender, cmd, "データの解析に失敗しました。");
return true;
}
}
} else {
PreparedStatement statement = MySQL.getNewPreparedStatement("SELECT * FROM book WHERE title = ?");
statement.setString(1, args[1]);
ResultSet res = statement.executeQuery();
if (!res.next()) {
SendMessage(sender, cmd, "指定された本は見つかりませんでした。");
return true;
}
int id = res.getInt("id");
String title = res.getString("title");
String author = res.getString("author");
String author_uuid = res.getString("author_uuid");
String pages_str = res.getString("data");
int requiredjao = res.getInt("requiredjao");
int book_count = res.getInt("count");
String history = res.getString("history");
String status = res.getString("status");
int createdate = res.getInt("createdate");
if (author_uuid.equalsIgnoreCase("null") || author_uuid.equalsIgnoreCase("")) {
bookdata = new MyMaidBookData(id, title, author, pages_str, requiredjao, book_count, history, status, createdate);
} else {
UUID uuid = UUID.fromString(author_uuid);
try {
bookdata = new MyMaidBookData(id, title, uuid, pages_str, requiredjao, book_count, history, status, createdate);
} catch (IllegalArgumentException e) {
BugReporter(e);
SendMessage(sender, cmd, "データの解析に失敗しました。");
return true;
}
}
}
Pointjao Pjao = new Pointjao(player);
if (!Pjao.has(bookdata.getRequiredjao())) {
// ポイントが足りない
SendMessage(sender, cmd, "指定された本を購入するには、" + bookdata.getRequiredjao() + "jaoが必要です。");
return true;
}
Pjao.use(bookdata.getRequiredjao(), "本「" + bookdata.getTitle() + "」の購入のため");
if (bookdata.getAuthor() != null) {
try {
Pointjao Pjao_wasbought = new Pointjao(bookdata.getAuthor());
Pjao_wasbought.add(bookdata.getRequiredjao(), "本「" + bookdata.getTitle() + "」を" + player.getName() + "が購入したため");
} catch (UnsupportedOperationException e) {
// jaotanなど指定した場合アカウントがないといわれるので回避
}
}
ItemStack is = bookdata.getBook();
if (player.getInventory().firstEmpty() == -1) {
player.getLocation().getWorld().dropItem(player.getLocation(), is);
SendMessage(sender, cmd, "購入された本をインベントリに追加しようとしましたが、インベントリが一杯だったのであなたの足元にドロップしました。");
} else {
player.getInventory().addItem(is);
SendMessage(sender, cmd, "購入された本をインベントリに追加しました。");
}
SendMessage(sender, cmd, "必ずお読みください: https://jaoafa.com/blog/tomachi/book_command_item_duplication");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String date = sdf.format(new Date());
bookdata.addHistory(player, MyMaidBookHistoryType.BUY, date);
PreparedStatement statement = MySQL.getNewPreparedStatement("UPDATE book SET history = ?, count = count + 1 WHERE id = ?");
statement.setString(1, bookdata.getRawHistory());
statement.setInt(2, bookdata.getID());
statement.executeUpdate();
return true;
} catch (SQLException | ClassNotFoundException | NullPointerException e) {
// TODO 自動生成された catch ブロック
BugReporter(e);
return true;
}
} else if (args[0].equalsIgnoreCase("delete")) {
// /book delete <Name|ID>
if (!(sender instanceof Player)) {
SendMessage(sender, cmd, "このコマンドはサーバ内から実行可能です。");
return true;
}
Player player = (Player) sender;
try {
MyMaidBookData bookdata = null;
if (isNumber(args[1])) {
// ID
PreparedStatement statement = MySQL.getNewPreparedStatement("SELECT * FROM book WHERE id = ?");
statement.setInt(1, Integer.parseInt(args[1]));
ResultSet res = statement.executeQuery();
if (!res.next()) {
SendMessage(sender, cmd, "指定された本は見つかりませんでした。");
return true;
}
int id = res.getInt("id");
String title = res.getString("title");
String author = res.getString("author");
String author_uuid = res.getString("author_uuid");
String pages_str = res.getString("data");
int requiredjao = res.getInt("requiredjao");
int book_count = res.getInt("count");
String history = res.getString("history");
String status = res.getString("status");
int createdate = res.getInt("createdate");
if (author_uuid.equalsIgnoreCase("null") || author_uuid.equalsIgnoreCase("")) {
bookdata = new MyMaidBookData(id, title, author, pages_str, requiredjao, book_count, history, status, createdate);
} else {
UUID uuid = UUID.fromString(author_uuid);
try {
bookdata = new MyMaidBookData(id, title, uuid, status, requiredjao, book_count, history, status, createdate);
} catch (IllegalArgumentException e) {
BugReporter(e);
SendMessage(sender, cmd, "データの解析に失敗しました。");
return true;
}
}
} else {
PreparedStatement statement = MySQL.getNewPreparedStatement("SELECT * FROM book WHERE title = ?");
statement.setString(1, args[1]);
ResultSet res = statement.executeQuery();
if (!res.next()) {
SendMessage(sender, cmd, "指定された本は見つかりませんでした。");
return true;
}
int id = res.getInt("id");
String title = res.getString("title");
String author = res.getString("author");
String author_uuid = res.getString("author_uuid");
String pages_str = res.getString("data");
int requiredjao = res.getInt("requiredjao");
int book_count = res.getInt("count");
String history = res.getString("history");
String status = res.getString("status");
int createdate = res.getInt("createdate");
if (author_uuid.equalsIgnoreCase("null") || author_uuid.equalsIgnoreCase("")) {
bookdata = new MyMaidBookData(id, title, author, pages_str, requiredjao, book_count, history, status, createdate);
} else {
UUID uuid = UUID.fromString(author_uuid);
try {
bookdata = new MyMaidBookData(id, title, uuid, status, requiredjao, book_count, history, status, createdate);
} catch (IllegalArgumentException e) {
BugReporter(e);
SendMessage(sender, cmd, "データの解析に失敗しました。");
return true;
}
}
}
if (bookdata.getAuthor() == null) {
SendMessage(sender, cmd, "この本は販売終了できません。(プレイヤーデータ取得失敗)");
return true;
}
OfflinePlayer offplayer = bookdata.getAuthor();
if (!offplayer.getUniqueId().toString().equalsIgnoreCase(player.getUniqueId().toString())) {
// 割とクソ実装感ある
// UUIDが違ったら(プレイヤーが違ったら)
SendMessage(sender, cmd, "この本は" + offplayer.getName() + "の販売物のため、販売を終了できません。");
return true;
}
if (!bookdata.getStatus().equalsIgnoreCase("now")) {
SendMessage(sender, cmd, "この本は現在販売中ではないため、販売を終了できません。");
return true;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String date = sdf.format(new Date());
bookdata.addHistory(player, MyMaidBookHistoryType.END, date);
PreparedStatement statement = MySQL.getNewPreparedStatement("UPDATE book SET history = ?, status = ? WHERE id = ?");
statement.setString(1, bookdata.getRawHistory());
statement.setString(2, "end");
statement.setInt(3, bookdata.getID());
statement.executeUpdate();
SendMessage(sender, cmd, "販売を終了しました。");
return true;
} catch (SQLException | ClassNotFoundException e) {
// TODO 自動生成された catch ブロック
BugReporter(e);
return true;
}
} else if (args[0].equalsIgnoreCase("history")) {
// /book history <Name|ID>
try {
MyMaidBookData bookdata = null;
if (isNumber(args[1])) {
// ID
PreparedStatement statement = MySQL.getNewPreparedStatement("SELECT * FROM book WHERE id = ?");
statement.setInt(1, Integer.parseInt(args[1]));
ResultSet res = statement.executeQuery();
if (!res.next()) {
SendMessage(sender, cmd, "指定された本は見つかりませんでした。");
return true;
}
int id = res.getInt("id");
String title = res.getString("title");
String author = res.getString("author");
String author_uuid = res.getString("author_uuid");
String pages_str = res.getString("data");
int requiredjao = res.getInt("requiredjao");
int book_count = res.getInt("count");
String history = res.getString("history");
String status = res.getString("status");
int createdate = res.getInt("createdate");
if (author_uuid.equalsIgnoreCase("null") || author_uuid.equalsIgnoreCase("")) {
bookdata = new MyMaidBookData(id, title, author, pages_str, requiredjao, book_count, history, status, createdate);
} else {
UUID uuid = UUID.fromString(author_uuid);
try {
bookdata = new MyMaidBookData(id, title, uuid, status, requiredjao, book_count, history, status, createdate);
} catch (IllegalArgumentException e) {
BugReporter(e);
SendMessage(sender, cmd, "データの解析に失敗しました。");
return true;
}
}
} else {
PreparedStatement statement = MySQL.getNewPreparedStatement("SELECT * FROM book WHERE title = ?");
statement.setString(1, args[1]);
ResultSet res = statement.executeQuery();
if (!res.next()) {
SendMessage(sender, cmd, "指定された本は見つかりませんでした。");
return true;
}
int id = res.getInt("id");
String title = res.getString("title");
String author = res.getString("author");
String author_uuid = res.getString("author_uuid");
String pages_str = res.getString("data");
int requiredjao = res.getInt("requiredjao");
int book_count = res.getInt("count");
String history = res.getString("history");
String status = res.getString("status");
int createdate = res.getInt("createdate");
if (author_uuid.equalsIgnoreCase("null") || author_uuid.equalsIgnoreCase("")) {
bookdata = new MyMaidBookData(id, title, author, pages_str, requiredjao, book_count, history, status, createdate);
} else {
UUID uuid = UUID.fromString(author_uuid);
try {
bookdata = new MyMaidBookData(id, title, uuid, status, requiredjao, book_count, history, status, createdate);
} catch (IllegalArgumentException e) {
BugReporter(e);
SendMessage(sender, cmd, "データの解析に失敗しました。");
return true;
}
}
}
SendMessage(sender, cmd, "----- 本「" + bookdata.getTitle() + "」のログデータ -----");
List<MyMaidBookHistory> historys = bookdata.getHistory();
for (MyMaidBookHistory history : historys) {
SendMessage(sender, cmd, history.getName() + "が" + history.getDate() + "に" + history.getType().getName() + "しました。");
}
return true;
} catch (SQLException | ClassNotFoundException e) {
// TODO 自動生成された catch ブロック
BugReporter(e);
return true;
}
} else if (args[0].equalsIgnoreCase("sell")) {
// /book save <Point>
if (!(sender instanceof Player)) {
SendMessage(sender, cmd, "このコマンドはサーバ内から実行可能です。");
return true;
}
Player player = (Player) sender;
if (!isNumber(args[1])) {
// 販売に必要なjaoポイント
SendMessage(sender, cmd, "必要jaoポイント数には数値を指定してください。");
return true;
}
int requiredjao = Integer.parseInt(args[1]);
try {
if (player.getInventory().getItemInMainHand().getType() == Material.AIR) {
SendMessage(sender, cmd, "アイテムを持っていません。");
return true;
}
Material handtype = player.getInventory().getItemInMainHand().getType();
if (handtype != Material.WRITTEN_BOOK) {
SendMessage(sender, cmd, "このコマンドを使用するには、販売する本を手に持ってください。");
return true;
}
BookMeta book = (BookMeta) player.getInventory().getItemInMainHand().getItemMeta();
String title = book.getTitle();
PreparedStatement statement = MySQL.getNewPreparedStatement("SELECT * FROM book WHERE title = ? AND status = ?");
statement.setString(1, title);
statement.setString(2, "now");
ResultSet res = statement.executeQuery();
if (res.next()) {
// 被りを防ぐため、同名の本は販売できない
SendMessage(sender, cmd, "指定された本の題名と同じ題名の本が発売されています。");
SendMessage(sender, cmd, "システムの障害を引き起こしたり、無駄な発売のし過ぎを未然に防ぐため、同名の本を複数販売することはできません。");
return true;
}
String pages_data = implode(book.getPages(), "§j");
String author = player.getName();
String author_uuid = player.getUniqueId().toString();
long unixtime = System.currentTimeMillis() / 1000L;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String date = sdf.format(new Date());
statement.execute("INSERT INTO book (title, author, author_uuid, data, requiredjao, count, history, status, createdate) VALUES ('" + title + "', '" + author + "', '" + author_uuid + "', '" + pages_data + "', '" + requiredjao + "', '0', '" + author + ",create," + date + "', 'now', '" + unixtime + "');");
SendMessage(sender, cmd, "指定された本の販売を開始しました。詳しくは/book listをお使いください。");
return true;
} catch (SQLException | ClassNotFoundException e) {
// TODO 自動生成された catch ブロック
BugReporter(e);
return true;
}
} else if (args[0].equalsIgnoreCase("list")) {
// /book list <Page> : 本のリストを表示
try {
PreparedStatement statement = MySQL.getNewPreparedStatement("SELECT COUNT(*) FROM book WHERE status = ?");
statement.setString(1, "now");
ResultSet rescount = statement.executeQuery();
rescount.next();
int size = rescount.getInt("COUNT(*)");
statement = MySQL.getNewPreparedStatement("SELECT * FROM book WHERE status = ?");
statement.setString(1, "now");
ResultSet res = statement.executeQuery();
if (!isNumber(args[1])) {
SendMessage(sender, cmd, "指定されたページは数値ではありません。");
return true;
}
int count = 0;
int page = Integer.parseInt(args[1]);
int startcount = (page - 1) * 10;
int endcount = page * 10;
int maxpage = size / 10;
if (size % 10 != 0)
maxpage += 1;
SendMessage(sender, cmd, "Book List: " + page + "page / " + maxpage + "page");
SendMessage(sender, cmd, "-------------------------");
while (res.next()) {
if (count < startcount) {
count++;
continue;
}
if (count > endcount) {
break;
}
int id = res.getInt("id");
String title = res.getString("title");
String author = res.getString("author");
String author_uuid = res.getString("author_uuid");
String pages_str = res.getString("data");
int requiredjao = res.getInt("requiredjao");
int book_count = res.getInt("count");
String history = res.getString("history");
String status = res.getString("status");
int createdate = res.getInt("createdate");
MyMaidBookData bookdata;
if (author_uuid.equalsIgnoreCase("null") || author_uuid.equalsIgnoreCase("")) {
bookdata = new MyMaidBookData(id, title, author, pages_str, requiredjao, book_count, history, status, createdate);
} else {
UUID uuid = UUID.fromString(author_uuid);
try {
bookdata = new MyMaidBookData(id, title, uuid, pages_str, requiredjao, book_count, history, status, createdate);
} catch (IllegalArgumentException e) {
BugReporter(e);
SendMessage(sender, cmd, "データの解析に失敗しました。");
return true;
}
}
SendMessage(sender, cmd, "[" + bookdata.getID() + "] " + bookdata.getTitle() + " - " + bookdata.getAuthorName() + "(" + bookdata.getRequiredjao() + "jao)");
count++;
}
SendMessage(sender, cmd, "-------------------------");
SendMessage(sender, cmd, startcount + " - " + endcount + " / " + size);
if (page != maxpage) {
SendMessage(sender, cmd, "次のページを見るには「/book list " + (page + 1) + "」を実行します。");
}
return true;
} catch (SQLException | ClassNotFoundException e) {
// TODO 自動生成された catch ブロック
BugReporter(e);
return true;
}
}
}
SendUsageMessage(sender, cmd);
return true;
}
use of com.jaoafa.MyMaid2.Lib.Pointjao in project MyMaid2 by jaoafa.
the class Cmd_Summer method onCommand.
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
if (args.length >= 1 && args[0].equalsIgnoreCase("help")) {
SendUsageMessage(sender, cmd);
return true;
}
if (MyMaid2.econ == null) {
SendMessage(sender, cmd, "このコマンドは現在使用できません。");
return true;
}
try {
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date start = format.parse("2018/08/01 00:00:00");
Date end = format.parse("2018/08/31 23:59:59");
if (!isPeriod(start, end)) {
SendMessage(sender, cmd, "イベントが終了したため、コマンドは使用できません。");
return true;
}
} catch (ParseException e) {
BugReporter(e);
}
if (args.length == 3) {
// /summer exchange [jP/jSP] jao
if (args[0].equalsIgnoreCase("exchange")) {
// jSP: (Summer2017ワールドで使用できるポイント)
if (args[1].equalsIgnoreCase("jSP")) {
if (!(sender instanceof Player)) {
SendMessage(sender, cmd, "このコマンドはゲーム内から実行してください。");
return true;
}
Player player = (Player) sender;
int i;
try {
i = Integer.parseInt(args[2]);
} catch (NumberFormatException e) {
SendMessage(sender, cmd, "「交換ポイント」には数値を入力してください。");
return true;
}
try {
Pointjao jaoP = new Pointjao(player);
if (!jaoP.has(i)) {
SendMessage(sender, cmd, "指定された交換ポイントのjaoPointをあなたは持っていません。");
return true;
}
jaoP.use(i, "jao Survival Pointへのポイント交換");
} catch (NullPointerException | ClassNotFoundException | SQLException e) {
SendMessage(sender, cmd, "jaoポイントデータが取得できませんでした。");
BugReporter(e);
return true;
}
MyMaid2.econ.depositPlayer(player, i);
SendMessage(sender, cmd, "あなたは現在jao Survival Pointを " + MyMaid2.econ.format(MyMaid2.econ.getBalance(player)) + "持っています。");
return true;
// Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "money give " + player.getName() + " " + i);
} else if (args[1].equalsIgnoreCase("jP")) {
// jSP -> jP
if (!(sender instanceof Player)) {
SendMessage(sender, cmd, "このコマンドはゲーム内から実行してください。");
return true;
}
Player player = (Player) sender;
int i;
try {
i = Integer.parseInt(args[2]);
} catch (NumberFormatException e) {
SendMessage(sender, cmd, "「交換ポイント」には数値を入力してください。");
return true;
}
if (!MyMaid2.econ.has(player, i)) {
SendMessage(sender, cmd, "指定された交換ポイントのjaoSurvivalPointをあなたは持っていません。");
return true;
}
try {
Pointjao jaoP = new Pointjao(player);
jaoP.add(i, "jao Survival Pointからのポイント交換");
} catch (NullPointerException | ClassNotFoundException | SQLException e) {
SendMessage(sender, cmd, "jaoポイントデータが取得できませんでした。");
BugReporter(e);
return true;
}
MyMaid2.econ.withdrawPlayer(player, i);
SendMessage(sender, cmd, "あなたは現在jao Survival Pointを " + MyMaid2.econ.format(MyMaid2.econ.getBalance(player)) + "持っています。");
return true;
}
}
}
SendUsageMessage(sender, cmd);
return true;
}
Aggregations