눈샘
대표칭호 없음
Nun_saem 1a94a50033f242cea79056282d346f86
이해도 | 입문자 |
---|---|
게임버전 (JE) | 관련없음 |
게임버전 (BE) | 관련없음 |
계속 명령어를 쓸 때마다 오류가 나더라고요 ㅠㅠ 챗지피티한테 물어보니 Integer
타입 변수를 Long
타입으로 강제 변환하려 했으나 실패한 것이 원인입니다. 라고 나오는데, 아무리봐도 그럴만한 오류가 날 위치가 안보여서 질문드립니다.
만들던 코드도 올릴게요.
package org.nu.nustock; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Villager; import org.bukkit.plugin.java.JavaPlugin; import org.yaml.snakeyaml.Yaml; import java.io.*; import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; public final class NuStock extends JavaPlugin { static List<Map<String,Long>> golem; static List<Map<String,Long>> pigman; static List<Map<String,Long>> ender; static List<Map<String,Long>> villager; static List<Map<String,Long>> witch; static List<Map<String,Long>> parrot; static List<Map<String,Long>> allay; static List<Map<String,Long>> saedam; static List<Map<String,Long>> pig; static List<Map<String,Long>> creeper; @Override public void onEnable() { Map<String,List<Map<String,Long>>> Mapstock; File config = new File(getDataFolder(),"config.yml"); File StockFile = new File(getDataFolder(), "Stock.yml"); // Plugin startup logic if (!StockFile.exists()) { saveResource("Stock.yml", false); } try (FileInputStream fis = new FileInputStream(StockFile)) { Yaml yaml = new Yaml(); Mapstock = yaml.load(fis); golem = Mapstock.get("golem"); pigman = Mapstock.get("pigman"); ender = Mapstock.get("ender"); villager = Mapstock.get("villager"); witch = Mapstock.get("witch"); parrot = Mapstock.get("parrot"); allay = Mapstock.get("allay"); saedam = Mapstock.get("saedam"); pig = Mapstock.get("pig"); creeper = Mapstock.get("creeper"); } catch (IOException e) { e.printStackTrace(); } config = new File(getDataFolder(), "config.yml"); if (!StockFile.exists()) { saveResource("config.yml", false); } getCommand("테스트").setExecutor(new commandim()); } @Override public void onDisable() { // Plugin shutdown logic Map<String,List<Map<String,Long>>> Mapstock = new HashMap<>(); Mapstock.put("golem",golem); Mapstock.put("pigman",pigman); Mapstock.put("ender",ender); Mapstock.put("villager",villager); Mapstock.put("witch",witch); Mapstock.put("parrot",parrot); Mapstock.put("allay",allay); Mapstock.put("saedam",saedam); Mapstock.put("pig",pig); Mapstock.put("creeper",creeper); File StockFile = new File(getDataFolder(), "Stock.yml"); try (FileOutputStream fos = new FileOutputStream(StockFile); OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8)) { Yaml yaml = new Yaml(); yaml.dump(Mapstock, osw); } catch (IOException e) { e.printStackTrace(); } } }
package org.nu.nustock; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; public class commandim extends StockGui implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { Player player = (Player) sender; MakeGui(player); return true; } }
package org.nu.nustock; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import java.util.List; import java.util.Map; public class StockGui { private Inventory inv; public void MakeGui(Player player) { inv = Bukkit.createInventory(null, 36, "주식 리스트"); String uuid = player.getUniqueId().toString(); Golem(player); pigman(player); ender(player); villager(player); witch(player); parrot(player); allay(player); saedam(player); pig(player); creeper(player); player.openInventory(inv); } private void Golem(Player player) { Long price = 0L; Long have = 0L; Long amount = 0L; for (Map<String, Long> map : NuStock.golem) { if (map.containsKey("price")) { price = Long.parseLong(map.get("price").toString()); } } for (Map<String, Long> map : NuStock.golem) { if (map.containsKey("amount")) { amount = Long.parseLong(map.get("amount").toString()); } } for (Map<String, Long> map : NuStock.golem) { if (map.containsKey(player.getName())) { have = Long.parseLong(map.get(player.getName()).toString()); } } ItemStack item = Util.buildItem(Material.IRON_BARS, 1, ChatColor.WHITE + "골렘 제철","남은 수량 : " + amount,"현재 주가 : " + price, "소유중인 주 : " + have + " 주", "해당 주식을 구매 하려면 좌클릭하세요." , "해당 주식을 판매 하려면 우클릭하세요.", "판매 수수료 : 10%"); inv.setItem(11,item); } private void pigman(Player player) { Long price = 0L; Long have = 0L; Long amount = 0L; for (Map<String, Long> map : NuStock.pigman) { if (map.containsKey("price")) { price = Long.parseLong(map.get("price").toString()); } } for (Map<String, Long> map : NuStock.pigman) { if (map.containsKey("amount")) { amount = Long.parseLong(map.get("amount").toString()); } } for (Map<String, Long> map : NuStock.pigman) { if (map.containsKey(player.getName())) { have = Long.parseLong(map.get(player.getName()).toString()); } } ItemStack item = Util.buildItem(Material.ROTTEN_FLESH, 1, ChatColor.WHITE + "피그맨 전자","남은 수량 : " + amount,"현재 주가 : " + price, "소유중인 주 : " + have + " 주", "해당 주식을 구매 하려면 좌클릭하세요." , "해당 주식을 판매 하려면 우클릭하세요.", "판매 수수료 : 10%"); inv.setItem(12,item); } private void ender(Player player) { Long price = 0L; Long have = 0L; Long amount = 0L; for (Map<String, Long> map : NuStock.ender) { if (map.containsKey("price")) { price = Long.parseLong(map.get("price").toString()); } } for (Map<String, Long> map : NuStock.ender) { if (map.containsKey("amount")) { amount = Long.parseLong(map.get("amount").toString()); } } for (Map<String, Long> map : NuStock.ender) { if (map.containsKey(player.getName())) { have = Long.parseLong(map.get(player.getName()).toString()); } } ItemStack item = Util.buildItem(Material.ENDER_EYE, 1, ChatColor.WHITE + "엔더 건설","남은 수량 : " + amount,"현재 주가 : " + price, "소유중인 주 : " + have + " 주", "해당 주식을 구매 하려면 좌클릭하세요." , "해당 주식을 판매 하려면 우클릭하세요.", "판매 수수료 : 10%"); inv.setItem(13,item); } private void villager(Player player) { Long price = 0L; Long have = 0L; Long amount = 0L; for (Map<String, Long> map : NuStock.villager) { if (map.containsKey("price")) { price = Long.parseLong(map.get("price").toString()); } } for (Map<String, Long> map : NuStock.villager) { if (map.containsKey("amount")) { amount = Long.parseLong(map.get("amount").toString()); } } for (Map<String, Long> map : NuStock.villager) { if (map.containsKey(player.getName())) { have = Long.parseLong(map.get(player.getName()).toString()); } } ItemStack item = Util.buildItem(Material.EMERALD, 1, ChatColor.WHITE + "주민 유통","남은 수량 : " + amount,"현재 주가 : " + price, "소유중인 주 : " + have + " 주", "해당 주식을 구매 하려면 좌클릭하세요." , "해당 주식을 판매 하려면 우클릭하세요.", "판매 수수료 : 10%"); inv.setItem(14,item); } private void witch(Player player) { Long price = 0L; Long have = 0L; Long amount = 0L; for (Map<String, Long> map : NuStock.witch) { if (map.containsKey("price")) { price = Long.parseLong(map.get("price").toString()); } } for (Map<String, Long> map : NuStock.witch) { if (map.containsKey("amount")) { amount = Long.parseLong(map.get("amount").toString()); } } for (Map<String, Long> map : NuStock.witch) { if (map.containsKey(player.getName())) { have = Long.parseLong(map.get(player.getName()).toString()); } } ItemStack item = Util.buildItem(Material.EXPERIENCE_BOTTLE, 1, ChatColor.WHITE + "마녀 제약","남은 수량 : " + amount,"현재 주가 : " + price, "소유중인 주 : " + have + " 주", "해당 주식을 구매 하려면 좌클릭하세요." , "해당 주식을 판매 하려면 우클릭하세요.", "판매 수수료 : 10%"); inv.setItem(15,item); } private void parrot(Player player) { Long price = 0L; Long have = 0L; Long amount = 0L; for (Map<String, Long> map : NuStock.parrot) { if (map.containsKey("price")) { price = Long.parseLong(map.get("price").toString()); } } for (Map<String, Long> map : NuStock.parrot) { if (map.containsKey("amount")) { amount = Long.parseLong(map.get("amount").toString()); } } for (Map<String, Long> map : NuStock.parrot) { if (map.containsKey(player.getName())) { have = Long.parseLong(map.get(player.getName()).toString()); } } ItemStack item = Util.buildItem(Material.FEATHER, 1, ChatColor.WHITE + "앵무 엔터","남은 수량 : " + amount,"현재 주가 : " + price, "소유중인 주 : " + have + " 주", "해당 주식을 구매 하려면 좌클릭하세요." , "해당 주식을 판매 하려면 우클릭하세요.", "판매 수수료 : 10%"); inv.setItem(20,item); } private void allay(Player player) { Long price = 0L; Long have = 0L; Long amount = 0L; for (Map<String, Long> map : NuStock.allay) { if (map.containsKey("price")) { price = Long.parseLong(map.get("price").toString()); } } for (Map<String, Long> map : NuStock.allay) { if (map.containsKey("amount")) { amount = Long.parseLong(map.get("amount").toString()); } } for (Map<String, Long> map : NuStock.allay) { if (map.containsKey(player.getName())) { have = Long.parseLong(map.get(player.getName()).toString()); } } ItemStack item = Util.buildItem(Material.CHEST_MINECART, 1, ChatColor.WHITE + "알레이 택배","남은 수량 : " + amount,"현재 주가 : " + price, "소유중인 주 : " + have + " 주", "해당 주식을 구매 하려면 좌클릭하세요." , "해당 주식을 판매 하려면 우클릭하세요.", "판매 수수료 : 10%"); inv.setItem(21,item); } private void saedam(Player player) { Long price = 0L; Long have = 0L; Long amount = 0L; for (Map<String, Long> map : NuStock.saedam) { if (map.containsKey("price")) { price = Long.parseLong(map.get("price").toString()); } } for (Map<String, Long> map : NuStock.saedam) { if (map.containsKey("amount")) { amount = Long.parseLong(map.get("amount").toString()); } } for (Map<String, Long> map : NuStock.saedam) { if (map.containsKey(player.getName())) { have = Long.parseLong(map.get(player.getName()).toString()); } } ItemStack item = Util.buildItem(Material.COOKIE, 1, ChatColor.WHITE + "새담 게임즈","남은 수량 : " + amount,"현재 주가 : " + price, "소유중인 주 : " + have + " 주", "해당 주식을 구매 하려면 좌클릭하세요." , "해당 주식을 판매 하려면 우클릭하세요.", "판매 수수료 : 10%"); inv.setItem(22,item); } private void pig(Player player) { Long price = 0L; Long have = 0L; Long amount = 0L; for (Map<String, Long> map : NuStock.pig) { if (map.containsKey("price")) { price = Long.parseLong(map.get("price").toString()); } } for (Map<String, Long> map : NuStock.pig) { if (map.containsKey("amount")) { amount = Long.parseLong(map.get("amount").toString()); } } for (Map<String, Long> map : NuStock.pig) { if (map.containsKey(player.getName())) { have = Long.parseLong(map.get(player.getName()).toString()); } } ItemStack item = Util.buildItem(Material.COOKED_PORKCHOP, 1, ChatColor.WHITE + "돼지 식품","남은 수량 : " + amount,"현재 주가 : " + price, "소유중인 주 : " + have + " 주", "해당 주식을 구매 하려면 좌클릭하세요." , "해당 주식을 판매 하려면 우클릭하세요.", "판매 수수료 : 10%"); inv.setItem(23,item); } private void creeper(Player player) { Long price = 0L; Long have = 0L; Long amount = 0L; for (Map<String, Long> map : NuStock.creeper) { if (map.containsKey("price")) { price = Long.parseLong(map.get("price").toString()); } } for (Map<String, Long> map : NuStock.creeper) { if (map.containsKey("amount")) { amount = Long.parseLong(map.get("amount").toString()); } } for (Map<String, Long> map : NuStock.creeper) { if (map.containsKey(player.getName())) { have = Long.parseLong(map.get(player.getName()).toString()); } } ItemStack item = Util.buildItem(Material.GUNPOWDER, 1, ChatColor.WHITE + "크리퍼 병기","남은 수량 : " + amount,"현재 주가 : " + price, "소유중인 주 : " + have + " 주", "해당 주식을 구매 하려면 좌클릭하세요." , "해당 주식을 판매 하려면 우클릭하세요.", "판매 수수료 : 10%"); inv.setItem(24,item); } }
package org.nu.nustock; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import java.text.NumberFormat; import java.util.Arrays; public class Util { public static ItemStack buildItem(Material type, int amount, String displayName, String... lore) { ItemStack stack = new ItemStack(type, amount); ItemMeta meta = stack.getItemMeta(); meta.setDisplayName(displayName); meta.setLore(Arrays.asList(lore)); stack.setItemMeta(meta); return stack; } public static String Numberset(long num) { NumberFormat numberFormat = NumberFormat.getInstance(); String formattedNumber = numberFormat.format(num); return formattedNumber; } }
qsef1256
2024.06.10빌드가 완료된 후에 서버를 켜셨나요? 한번 재시도 해보세요.
눈샘
2024.06.10저 코드 대로 빌드한 다음에 서버 켰을때 저 오류 나왔습니다 ㅠㅠㅠㅠㅠ
노을넴
2024.06.10로그 첨부를 제대로 한 게 맞나욘?
눈샘
2024.06.10네 맞아요. 근데 해결 했습니다! 귀찮게 해서 죄송합니다 ㅠㅠ yml을 불러올 때 숫자를 Integer로 불러오는게 문제였더라고요. 다른 변수로 불러오면 Long로 변환하는 내용 추가해서 해결했어요!