From 2a1667e0c730ce9d5e422948ae95df41821970bc Mon Sep 17 00:00:00 2001 From: kumitatepazuru Date: Mon, 7 Mar 2022 07:55:46 +0900 Subject: [PATCH 1/6] =?UTF-8?q?=E8=BB=BD=E9=87=8F=E5=8C=96...=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../metaverseplugin/scheduler/AdvancementScheduler.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/world/arainu/core/metaverseplugin/scheduler/AdvancementScheduler.java b/src/main/java/world/arainu/core/metaverseplugin/scheduler/AdvancementScheduler.java index 6087033..87d017a 100644 --- a/src/main/java/world/arainu/core/metaverseplugin/scheduler/AdvancementScheduler.java +++ b/src/main/java/world/arainu/core/metaverseplugin/scheduler/AdvancementScheduler.java @@ -25,10 +25,10 @@ public void run() { AtomicInteger i = new AtomicInteger(); AtomicInteger j = new AtomicInteger(); Bukkit.advancementIterator().forEachRemaining(advancement -> { - Bukkit.getScheduler().runTaskLater(MetaversePlugin.getInstance(),() -> addPlayerAdvancement(advancement, p),j.get()); + Bukkit.getScheduler().runTaskLaterAsynchronously(MetaversePlugin.getInstance(),() -> addPlayerAdvancement(advancement, p),j.get()); i.getAndIncrement(); - if(i.get()%50 == 0){ - j.set(j.get()+2); + if(i.get()%100 == 0){ + j.set(j.get()+5); } }); MetaversePlugin.logger().info("synced"); From 34978177537ea00c6390aeb85115e16d8a565559 Mon Sep 17 00:00:00 2001 From: kumitatepazuru Date: Mon, 7 Mar 2022 08:01:24 +0900 Subject: [PATCH 2/6] =?UTF-8?q?=E9=AB=98=E9=80=9F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/metaverseplugin/scheduler/AdvancementScheduler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/world/arainu/core/metaverseplugin/scheduler/AdvancementScheduler.java b/src/main/java/world/arainu/core/metaverseplugin/scheduler/AdvancementScheduler.java index 87d017a..fa14b01 100644 --- a/src/main/java/world/arainu/core/metaverseplugin/scheduler/AdvancementScheduler.java +++ b/src/main/java/world/arainu/core/metaverseplugin/scheduler/AdvancementScheduler.java @@ -27,7 +27,7 @@ public void run() { Bukkit.advancementIterator().forEachRemaining(advancement -> { Bukkit.getScheduler().runTaskLaterAsynchronously(MetaversePlugin.getInstance(),() -> addPlayerAdvancement(advancement, p),j.get()); i.getAndIncrement(); - if(i.get()%100 == 0){ + if(i.get()%150 == 0){ j.set(j.get()+5); } }); From f56dccf8c0d7133a6e71aaaf8950b083ae553e28 Mon Sep 17 00:00:00 2001 From: kumitatepazuru Date: Tue, 8 Mar 2022 09:58:06 +0900 Subject: [PATCH 3/6] =?UTF-8?q?=E5=B0=91=E3=81=97=E3=81=A0=E3=81=91?= =?UTF-8?q?=E7=B0=A1=E7=95=A5=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commands/CommandSpawn.java | 56 ++++++++----------- 1 file changed, 24 insertions(+), 32 deletions(-) diff --git a/src/main/java/world/arainu/core/metaverseplugin/commands/CommandSpawn.java b/src/main/java/world/arainu/core/metaverseplugin/commands/CommandSpawn.java index 895ca3e..19f921c 100644 --- a/src/main/java/world/arainu/core/metaverseplugin/commands/CommandSpawn.java +++ b/src/main/java/world/arainu/core/metaverseplugin/commands/CommandSpawn.java @@ -9,13 +9,14 @@ import org.bukkit.entity.Villager; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.MerchantRecipe; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; import org.jetbrains.annotations.NotNull; import world.arainu.core.metaverseplugin.iphone.Bank; import world.arainu.core.metaverseplugin.utils.ChatUtil; import world.arainu.core.metaverseplugin.utils.sqlUtil; -import java.util.ArrayList; -import java.util.List; +import java.util.*; /** * プラグイン特有のmobをスポーンさせるコマンドを定義している関数 @@ -24,14 +25,7 @@ */ public class CommandSpawn extends CommandPlayerOnlyBase { @Getter - private final CommandSpawn Instance; - - /** - * プラグイン特有のmobをスポーンさせるコマンドを定義している関数 - */ - public CommandSpawn() { - this.Instance = this; - } + private static final Map METAZON_VILLAGER = Map.of("mason-villager", "鉱石店員","stone-villager", "石工店員","mason-villager-shop","お金店員(鉱石)", "stone-villager-shop","お金店員(石系)", "mob-villager-shop","モブ店員", "sandstone-villager","砂岩砂利店員", "sandstone-villager-shop","お金店員(砂岩系&砂利)"); /** * 村人との取引(買いとり)のレシピを取得する関数 @@ -71,7 +65,7 @@ public static MerchantRecipe createRecipe2(int yen, int quantity, ItemStack ingr * @param player プレイヤー(ここの座標に作成する) * @return 村人 */ - public static Villager createVillager(String name, Villager.Profession type, Player player) { + public static Villager createVillager(String name, Villager.Profession type, Player player,String[] args) { Villager villager = (Villager) player.getWorld().spawnEntity(player.getLocation(), EntityType.VILLAGER); villager.setProfession(type); villager.setVillagerLevel(5); @@ -79,20 +73,22 @@ public static Villager createVillager(String name, Villager.Profession type, Pla villager.setCustomNameVisible(true); villager.setAI(false); villager.setInvulnerable(true); + if(args.length == 2) { + if (Objects.equals(args[1], "invisible")) { + villager.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 9999, 255, false, false)); + } + } + sqlUtil.setuuidtype(villager.getUniqueId(), args[0]); return villager; } @Override public boolean execute(Player player, String[] args) { - if (args.length == 1) { + if (args.length == 1 || args.length == 2) { switch (args[0]) { - case "casino-villager" -> { - Villager villager = createVillager("スロットマン", Villager.Profession.MASON, player); - sqlUtil.setuuidtype(villager.getUniqueId(), args[0]); - } + case "casino-villager" -> createVillager("スロットマン", Villager.Profession.MASON, player,args); case "mason-villager" -> { - Villager villager = createVillager("鉱石店員", Villager.Profession.MASON, player); - sqlUtil.setuuidtype(villager.getUniqueId(), args[0]); + Villager villager = createVillager(METAZON_VILLAGER.get(args[0]), Villager.Profession.MASON, player,args); List recipes = new ArrayList<>(); recipes.add(createRecipe(1, 50, new ItemStack(Material.COAL))); recipes.add(createRecipe(5, 40, new ItemStack(Material.RAW_COPPER))); @@ -104,8 +100,7 @@ public boolean execute(Player player, String[] args) { villager.setRecipes(recipes); } case "mason-villager-shop" -> { - Villager villager = createVillager("お金店員(鉱石)", Villager.Profession.MASON, player); - sqlUtil.setuuidtype(villager.getUniqueId(), args[0]); + Villager villager = createVillager(METAZON_VILLAGER.get(args[0]), Villager.Profession.MASON, player,args); List recipes = new ArrayList<>(); recipes.add(createRecipe2(1, 50, new ItemStack(Material.COAL))); recipes.add(createRecipe2(5, 40, new ItemStack(Material.RAW_COPPER))); @@ -117,8 +112,7 @@ public boolean execute(Player player, String[] args) { villager.setRecipes(recipes); } case "stone-villager" -> { - Villager villager = createVillager("石工店員", Villager.Profession.MASON, player); - sqlUtil.setuuidtype(villager.getUniqueId(), args[0]); + Villager villager = createVillager(METAZON_VILLAGER.get(args[0]), Villager.Profession.MASON, player,args); List recipes = new ArrayList<>(); recipes.add(createRecipe(1, 3, new ItemStack(Material.COBBLESTONE))); recipes.add(createRecipe(1, 5, new ItemStack(Material.MOSSY_COBBLESTONE))); @@ -170,8 +164,7 @@ public boolean execute(Player player, String[] args) { villager.setRecipes(recipes); } case "stone-villager-shop" -> { - Villager villager = createVillager("お金店員(石系)", Villager.Profession.MASON, player); - sqlUtil.setuuidtype(villager.getUniqueId(), args[0]); + Villager villager = createVillager(METAZON_VILLAGER.get(args[0]), Villager.Profession.MASON, player,args); List recipes = new ArrayList<>(); recipes.add(createRecipe2(1, 3, new ItemStack(Material.COBBLESTONE))); recipes.add(createRecipe2(1, 5, new ItemStack(Material.MOSSY_COBBLESTONE))); @@ -222,9 +215,8 @@ public boolean execute(Player player, String[] args) { recipes.add(createRecipe2(1, 5, new ItemStack(Material.POINTED_DRIPSTONE))); villager.setRecipes(recipes); } - case "mob-villager" -> { - Villager villager = createVillager("モブ店員", Villager.Profession.FARMER, player); - sqlUtil.setuuidtype(villager.getUniqueId(), args[0] + "-shop"); + case "mob-villager-shop" -> { + Villager villager = createVillager(METAZON_VILLAGER.get(args[0]), Villager.Profession.FARMER, player,args); List recipes = new ArrayList<>(); recipes.add(createRecipe2(1000, 5, new ItemStack(Material.AXOLOTL_SPAWN_EGG))); recipes.add(createRecipe2(500, 5, new ItemStack(Material.BEE_SPAWN_EGG))); @@ -257,8 +249,7 @@ public boolean execute(Player player, String[] args) { } case "sandstone-villager" -> { - Villager villager = createVillager("砂岩砂利店員", Villager.Profession.MASON, player); - sqlUtil.setuuidtype(villager.getUniqueId(), args[0]); + Villager villager = createVillager(METAZON_VILLAGER.get(args[0]), Villager.Profession.MASON, player,args); List recipes = new ArrayList<>(); recipes.add(createRecipe(1, 5, new ItemStack(Material.GRAVEL))); recipes.add(createRecipe(1, 5, new ItemStack(Material.SANDSTONE))); @@ -272,8 +263,7 @@ public boolean execute(Player player, String[] args) { villager.setRecipes(recipes); } case "sandstone-villager-shop" -> { - Villager villager = createVillager("お金店員(砂岩系&砂利)", Villager.Profession.MASON, player); - sqlUtil.setuuidtype(villager.getUniqueId(), args[0]); + Villager villager = createVillager(METAZON_VILLAGER.get(args[0]), Villager.Profession.MASON, player,args); List recipes = new ArrayList<>(); recipes.add(createRecipe2(1, 5, new ItemStack(Material.GRAVEL))); recipes.add(createRecipe2(1, 5, new ItemStack(Material.SANDSTONE))); @@ -299,6 +289,8 @@ public boolean execute(Player player, String[] args) { @Override public List onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String label, String[] args) { - return List.of("casino-villager", "mason-villager", "stone-villager", "mason-villager-shop", "stone-villager-shop", "mob-villager", "sandstone-villager", "sandstone-villager-shop"); + List r = new ArrayList<>(METAZON_VILLAGER.keySet()); + r.add("casino-villager"); + return r; } } From 65293d1355cc68e805a621cb9d6e79950a0f6f62 Mon Sep 17 00:00:00 2001 From: kumitatepazuru Date: Tue, 8 Mar 2022 10:10:25 +0900 Subject: [PATCH 4/6] =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E3=82=B7=E3=82=B9?= =?UTF-8?q?=E3=83=86=E3=83=A0=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/metaverseplugin/MetaversePlugin.java | 12 +---- .../commands/CommandSpawn.java | 7 +++ .../core/metaverseplugin/iphone/Metazon.java | 30 +++++++++++ .../listener/VillagerListener.java | 50 ++++++++++++------- .../core/metaverseplugin/utils/sqlUtil.java | 17 +++++++ 5 files changed, 88 insertions(+), 28 deletions(-) create mode 100644 src/main/java/world/arainu/core/metaverseplugin/iphone/Metazon.java diff --git a/src/main/java/world/arainu/core/metaverseplugin/MetaversePlugin.java b/src/main/java/world/arainu/core/metaverseplugin/MetaversePlugin.java index a53d55d..5ded90a 100644 --- a/src/main/java/world/arainu/core/metaverseplugin/MetaversePlugin.java +++ b/src/main/java/world/arainu/core/metaverseplugin/MetaversePlugin.java @@ -31,16 +31,7 @@ import world.arainu.core.metaverseplugin.commands.CommandiPhone; import world.arainu.core.metaverseplugin.gui.Gui; import world.arainu.core.metaverseplugin.gui.MenuItem; -import world.arainu.core.metaverseplugin.iphone.Bank; -import world.arainu.core.metaverseplugin.iphone.ChestLock; -import world.arainu.core.metaverseplugin.iphone.Drilling; -import world.arainu.core.metaverseplugin.iphone.LinkDiscord; -import world.arainu.core.metaverseplugin.iphone.MoveSurvival; -import world.arainu.core.metaverseplugin.iphone.Municipal; -import world.arainu.core.metaverseplugin.iphone.Spawn; -import world.arainu.core.metaverseplugin.iphone.TrapTower; -import world.arainu.core.metaverseplugin.iphone.Worldteleport; -import world.arainu.core.metaverseplugin.iphone.iPhoneEnderDragon; +import world.arainu.core.metaverseplugin.iphone.*; import world.arainu.core.metaverseplugin.listener.AdvancementListener; import world.arainu.core.metaverseplugin.listener.BankListener; import world.arainu.core.metaverseplugin.listener.ChestLockListener; @@ -189,6 +180,7 @@ private void loadGuis() { chestMeta.lore(Arrays.asList(Component.text("チェストに向かって使用することで"), Component.text("チェストを個人用チェストにすることができます。"), Component.text("300円/個").color(NamedTextColor.GOLD))); chestItem.setItemMeta(chestMeta); iPhoneStore.addGuiItem(new MenuItem("チェストの鍵を購入する", new ChestLock()::executeGui, true, chestItem), (p) -> Objects.equals(ServerStore.getServerName(), "survival")); + iPhoneStore.addGuiItem(new MenuItem("Metazon", new Metazon()::executeGui, true, Material.CHEST), (p) -> Objects.equals(ServerStore.getServerName(), "survival")); } /** diff --git a/src/main/java/world/arainu/core/metaverseplugin/commands/CommandSpawn.java b/src/main/java/world/arainu/core/metaverseplugin/commands/CommandSpawn.java index 19f921c..8a9a6f3 100644 --- a/src/main/java/world/arainu/core/metaverseplugin/commands/CommandSpawn.java +++ b/src/main/java/world/arainu/core/metaverseplugin/commands/CommandSpawn.java @@ -27,6 +27,13 @@ public class CommandSpawn extends CommandPlayerOnlyBase { @Getter private static final Map METAZON_VILLAGER = Map.of("mason-villager", "鉱石店員","stone-villager", "石工店員","mason-villager-shop","お金店員(鉱石)", "stone-villager-shop","お金店員(石系)", "mob-villager-shop","モブ店員", "sandstone-villager","砂岩砂利店員", "sandstone-villager-shop","お金店員(砂岩系&砂利)"); + @Getter + private static CommandSpawn instance; + + public CommandSpawn(){ + instance = this; + } + /** * 村人との取引(買いとり)のレシピを取得する関数 * diff --git a/src/main/java/world/arainu/core/metaverseplugin/iphone/Metazon.java b/src/main/java/world/arainu/core/metaverseplugin/iphone/Metazon.java new file mode 100644 index 0000000..ac72202 --- /dev/null +++ b/src/main/java/world/arainu/core/metaverseplugin/iphone/Metazon.java @@ -0,0 +1,30 @@ +package world.arainu.core.metaverseplugin.iphone; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.entity.Villager; +import world.arainu.core.metaverseplugin.MetaversePlugin; +import world.arainu.core.metaverseplugin.commands.CommandSpawn; +import world.arainu.core.metaverseplugin.gui.Gui; +import world.arainu.core.metaverseplugin.gui.MenuItem; +import world.arainu.core.metaverseplugin.listener.VillagerListener; +import world.arainu.core.metaverseplugin.utils.sqlUtil; + +import java.util.Objects; +import java.util.stream.Collectors; + +public class Metazon extends iPhoneBase { + @Override + public void executeGui(MenuItem menuItem) { + Gui.getInstance().openMenu(menuItem.getClicker(), "Metazon", CommandSpawn.getMETAZON_VILLAGER().entrySet().stream().map((n) -> new MenuItem(n.getValue(),this::openMetazon, true,Material.STONE,n.getKey())).collect(Collectors.toList())); + } + + private void openMetazon(MenuItem menuItem){ + // テスト鯖でデバッグ時に例外が発生しないようにするコード + if(Objects.requireNonNull(sqlUtil.getuuidsbytype((String) menuItem.getCustomData())).size() == 0){ + MetaversePlugin.logger().warning("Villager entityが存在しないため、新規作成します(自動破棄されます)"); + CommandSpawn.getInstance().execute(menuItem.getClicker(), new String[]{(String) menuItem.getCustomData(),"invisible"}); + } + VillagerListener.getInstance().open(menuItem.getClicker(), (Villager) Objects.requireNonNull(Bukkit.getEntity(Objects.requireNonNull(sqlUtil.getuuidsbytype((String) menuItem.getCustomData())).get(0)))); + } +} diff --git a/src/main/java/world/arainu/core/metaverseplugin/listener/VillagerListener.java b/src/main/java/world/arainu/core/metaverseplugin/listener/VillagerListener.java index 1c93428..1e0d7c4 100644 --- a/src/main/java/world/arainu/core/metaverseplugin/listener/VillagerListener.java +++ b/src/main/java/world/arainu/core/metaverseplugin/listener/VillagerListener.java @@ -1,5 +1,6 @@ package world.arainu.core.metaverseplugin.listener; +import lombok.Getter; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import net.milkbowl.vault.economy.Economy; @@ -21,6 +22,7 @@ import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataType; +import org.bukkit.potion.PotionEffectType; import world.arainu.core.metaverseplugin.MetaversePlugin; import world.arainu.core.metaverseplugin.gui.Gui; import world.arainu.core.metaverseplugin.gui.MenuItem; @@ -49,6 +51,11 @@ */ public class VillagerListener implements Listener { private final HashMap invMap = new HashMap<>(); + @Getter private static VillagerListener instance; + + public VillagerListener(){ + instance = this; + } /** * インベントリ内のお金を取得する関数 @@ -68,6 +75,25 @@ public static ReturnMoney getTotalmoney(Inventory inv) { return new ReturnMoney(money_list, total_money); } + public void open(Player player, Villager villager){ + AtomicInteger i = new AtomicInteger(-1); + List tradeitems = villager.getRecipes().stream().map((recipe) -> { + i.getAndIncrement(); + return new Mapdata(recipe, i.get(), villager); + }) + .map((recipe) -> new MenuItem( + this::onClick, + true, + Bank.isMoney(recipe.recipe.getResult()) ? recipe.recipe.getIngredients().get(0) : recipe.recipe.getResult(), + recipe, + false, + -1, + -1)) + .collect(Collectors.toList()); + + Gui.getInstance().openMenu(player, villager.getName(), tradeitems); + } + /** * プレイヤーが右クリックしたときに特定の村人の場合は独自UIを表示させるリスナー * @@ -83,22 +109,7 @@ public void onPlayerInteractEntity(PlayerInteractEntityEvent e) { obj.start(e.getPlayer()); } else { Villager villager = (Villager) e.getRightClicked(); - AtomicInteger i = new AtomicInteger(-1); - List tradeitems = villager.getRecipes().stream().map((recipe) -> { - i.getAndIncrement(); - return new Mapdata(recipe, i.get(), villager); - }) - .map((recipe) -> new MenuItem( - this::onClick, - true, - Bank.isMoney(recipe.recipe.getResult()) ? recipe.recipe.getIngredients().get(0) : recipe.recipe.getResult(), - recipe, - false, - -1, - -1)) - .collect(Collectors.toList()); - - Gui.getInstance().openMenu(e.getPlayer(), villager.getName(), tradeitems); + open(e.getPlayer(),villager); } } } @@ -250,8 +261,7 @@ public void onInventoryClick(InventoryClickEvent e) { if (inv.getType() == InventoryType.MERCHANT) { HashMap items = inv.all(Material.EMERALD); List isMoney = items.values().stream() - .map(itemStack -> itemStack.getItemMeta().getPersistentDataContainer().has(BankStore.getKey(), PersistentDataType.INTEGER)) - .collect(Collectors.toList()); + .map(itemStack -> itemStack.getItemMeta().getPersistentDataContainer().has(BankStore.getKey(), PersistentDataType.INTEGER)).toList(); MerchantRecipe recipe = ((MerchantInventory) inv).getSelectedRecipe(); if (recipe != null && isMoney.contains(true)) { recipe.setUses(recipe.getUses() - 1); @@ -276,6 +286,10 @@ public void onInventoryClose(InventoryCloseEvent e) { if (item == null) continue; ItemUtil.addItem(item, e.getPlayer().getInventory(), (Player) e.getPlayer()); } + if(invMap.get(inv).villager().getPotionEffect(PotionEffectType.INVISIBILITY) != null){ + sqlUtil.removeuuidtype(invMap.get(inv).villager().getUniqueId()); + invMap.get(inv).villager().remove(); + } invMap.remove(inv); } diff --git a/src/main/java/world/arainu/core/metaverseplugin/utils/sqlUtil.java b/src/main/java/world/arainu/core/metaverseplugin/utils/sqlUtil.java index 09f3e2b..8ede45d 100644 --- a/src/main/java/world/arainu/core/metaverseplugin/utils/sqlUtil.java +++ b/src/main/java/world/arainu/core/metaverseplugin/utils/sqlUtil.java @@ -168,6 +168,23 @@ public static void setuuidtype(UUID uuid, String type) { } } + /** + * 何かしらのタイプとUUIDの紐付けを解除する関数 + * + * @param uuid UUID + */ + public static void removeuuidtype(UUID uuid) { + try { + create_uuidtype_table(); + PreparedStatement ps = conn.prepareStatement("DELETE FROM `uuidtype` WHERE `uuid` LIKE ?"); + ps.setString(1,uuid.toString()); + ps.executeUpdate(); + ps.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + /** * 何かしらのタイプとUUIDを紐付ける関数。 * From 1a3e274b3a218d296a72d8d83563d79808cfdbca Mon Sep 17 00:00:00 2001 From: kumitatepazuru Date: Tue, 8 Mar 2022 10:26:18 +0900 Subject: [PATCH 5/6] =?UTF-8?q?=E6=89=8B=E6=95=B0=E6=96=99=E3=82=92?= =?UTF-8?q?=E5=8F=96=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../arainu/core/metaverseplugin/iphone/Metazon.java | 6 ++++-- .../metaverseplugin/listener/VillagerListener.java | 10 +++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/world/arainu/core/metaverseplugin/iphone/Metazon.java b/src/main/java/world/arainu/core/metaverseplugin/iphone/Metazon.java index ac72202..8a7580a 100644 --- a/src/main/java/world/arainu/core/metaverseplugin/iphone/Metazon.java +++ b/src/main/java/world/arainu/core/metaverseplugin/iphone/Metazon.java @@ -2,6 +2,7 @@ import org.bukkit.Bukkit; import org.bukkit.Material; +import org.bukkit.entity.Player; import org.bukkit.entity.Villager; import world.arainu.core.metaverseplugin.MetaversePlugin; import world.arainu.core.metaverseplugin.commands.CommandSpawn; @@ -20,11 +21,12 @@ public void executeGui(MenuItem menuItem) { } private void openMetazon(MenuItem menuItem){ + Player p = menuItem.getClicker(); // テスト鯖でデバッグ時に例外が発生しないようにするコード if(Objects.requireNonNull(sqlUtil.getuuidsbytype((String) menuItem.getCustomData())).size() == 0){ MetaversePlugin.logger().warning("Villager entityが存在しないため、新規作成します(自動破棄されます)"); - CommandSpawn.getInstance().execute(menuItem.getClicker(), new String[]{(String) menuItem.getCustomData(),"invisible"}); + CommandSpawn.getInstance().execute(p, new String[]{(String) menuItem.getCustomData(),"invisible"}); } - VillagerListener.getInstance().open(menuItem.getClicker(), (Villager) Objects.requireNonNull(Bukkit.getEntity(Objects.requireNonNull(sqlUtil.getuuidsbytype((String) menuItem.getCustomData())).get(0)))); + VillagerListener.getInstance().open(p, (Villager) Objects.requireNonNull(Bukkit.getEntity(Objects.requireNonNull(sqlUtil.getuuidsbytype((String) menuItem.getCustomData())).get(0))), (int) p.getWorld().getSpawnLocation().distance(p.getLocation())); } } diff --git a/src/main/java/world/arainu/core/metaverseplugin/listener/VillagerListener.java b/src/main/java/world/arainu/core/metaverseplugin/listener/VillagerListener.java index 1e0d7c4..bf49f04 100644 --- a/src/main/java/world/arainu/core/metaverseplugin/listener/VillagerListener.java +++ b/src/main/java/world/arainu/core/metaverseplugin/listener/VillagerListener.java @@ -75,11 +75,11 @@ public static ReturnMoney getTotalmoney(Inventory inv) { return new ReturnMoney(money_list, total_money); } - public void open(Player player, Villager villager){ + public void open(Player player, Villager villager,int fee){ AtomicInteger i = new AtomicInteger(-1); List tradeitems = villager.getRecipes().stream().map((recipe) -> { i.getAndIncrement(); - return new Mapdata(recipe, i.get(), villager); + return new Mapdata(recipe, i.get(), villager, fee); }) .map((recipe) -> new MenuItem( this::onClick, @@ -109,7 +109,7 @@ public void onPlayerInteractEntity(PlayerInteractEntityEvent e) { obj.start(e.getPlayer()); } else { Villager villager = (Villager) e.getRightClicked(); - open(e.getPlayer(),villager); + open(e.getPlayer(),villager, 0); } } } @@ -299,7 +299,7 @@ private void onClick(MenuItem e) { Villager villager = ((Mapdata) e.getCustomData()).villager; boolean isPurchase = Bank.isMoney(recipe.getResult()); ItemStack money = Bank.isMoney(recipe.getResult()) ? recipe.getResult() : recipe.getIngredients().get(0); - int price = money.getAmount() * Objects.requireNonNull(money.getItemMeta().getPersistentDataContainer().get(BankStore.getKey(), PersistentDataType.INTEGER)); + int price = money.getAmount() * Objects.requireNonNull(money.getItemMeta().getPersistentDataContainer().get(BankStore.getKey(), PersistentDataType.INTEGER)) + ((Mapdata) e.getCustomData()).fee(); final Inventory inv; if (isPurchase) { inv = Bukkit.createInventory(null, 27, e.getIcon().displayName().append(Component.text(" を買取")).color(NamedTextColor.BLACK)); @@ -370,7 +370,7 @@ private void onClick(MenuItem e) { /** * Mapのreturnに使うやつ */ - record Mapdata(MerchantRecipe recipe, int index, Villager villager) { + record Mapdata(MerchantRecipe recipe, int index, Villager villager,int fee) { } /** From 4f46bc6268024747823ccb1dd99631a10b245fbd Mon Sep 17 00:00:00 2001 From: kumitatepazuru Date: Tue, 8 Mar 2022 10:29:22 +0900 Subject: [PATCH 6/6] =?UTF-8?q?=E3=83=90=E3=82=B0=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/metaverseplugin/listener/VillagerListener.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/world/arainu/core/metaverseplugin/listener/VillagerListener.java b/src/main/java/world/arainu/core/metaverseplugin/listener/VillagerListener.java index bf49f04..505d6bd 100644 --- a/src/main/java/world/arainu/core/metaverseplugin/listener/VillagerListener.java +++ b/src/main/java/world/arainu/core/metaverseplugin/listener/VillagerListener.java @@ -298,8 +298,8 @@ private void onClick(MenuItem e) { int index = ((Mapdata) e.getCustomData()).index; Villager villager = ((Mapdata) e.getCustomData()).villager; boolean isPurchase = Bank.isMoney(recipe.getResult()); - ItemStack money = Bank.isMoney(recipe.getResult()) ? recipe.getResult() : recipe.getIngredients().get(0); - int price = money.getAmount() * Objects.requireNonNull(money.getItemMeta().getPersistentDataContainer().get(BankStore.getKey(), PersistentDataType.INTEGER)) + ((Mapdata) e.getCustomData()).fee(); + ItemStack money = isPurchase ? recipe.getResult() : recipe.getIngredients().get(0); + int price = money.getAmount() * Objects.requireNonNull(money.getItemMeta().getPersistentDataContainer().get(BankStore.getKey(), PersistentDataType.INTEGER)) + ((Mapdata) e.getCustomData()).fee() * (isPurchase ? -1 : 1); final Inventory inv; if (isPurchase) { inv = Bukkit.createInventory(null, 27, e.getIcon().displayName().append(Component.text(" を買取")).color(NamedTextColor.BLACK));