현재 내 서버 네트워크 용 GUI 샵을 코딩하고 있는데 두 가지 이상한 문제가 있습니다. 나는 항목 ID (161) 및 두 개의 서로 다른 메타 ID의 (0과 1) 난 그냥 여기에 2Bukkit/Spigot : Plugin - Custom GUI Shop error
의 메타 ID를 반환받을과 2 개 잎을 취득 할 때마다
첫 번째 문제는, 것은 내가 무엇을 얻을 내 디버그 할 때이 항목의 데이터 가져 오려고 시도 : Problem 1
을 그리고 이것은 내가 내 인벤토리에서 무엇을 얻을 수 있습니다 : Problem 1
하지만 (예를 들어)이 있어야한다 : 161/0 또는 161/1
Spigot/Bukkit 자체에서이 항목 메타를 얻으므로 어쨌든 혼자서받지 않습니다.
내가 가진 다음 문제는 양모를 구입할 때마다 9 번째 바이트까지만 완벽하게 작동한다는 것입니다. 그러면 위의 모든 항목이 오렌지 울이나 클레이 또는 유리를 매회 반환합니다.
나는 항목을 표시하고 어떻게 그게 전부 : 그 표시가 GUI에 올바른 표시됩니다
if(t == ShopType.SHOP_DECORATION){
inv = Bukkit.createInventory(null, 54, "Shop: Decoration");
createDisplay(Material.WOOL, (byte)0, inv, 0, null, getShopLore("wool"));
createDisplay(Material.WOOL, (byte)1, inv, 1, null, getShopLore("wool2"));
createDisplay(Material.WOOL, (byte)2, inv, 2, null, getShopLore("wool3"));
createDisplay(Material.WOOL, (byte)3, inv, 3, null, getShopLore("wool4"));
createDisplay(Material.WOOL, (byte)4, inv, 4, null, getShopLore("wool5"));
createDisplay(Material.WOOL, (byte)5, inv, 5, null, getShopLore("wool6"));
createDisplay(Material.WOOL, (byte)6, inv, 6, null, getShopLore("wool7"));
createDisplay(Material.WOOL, (byte)7, inv, 7, null, getShopLore("wool8"));
createDisplay(Material.WOOL, (byte)8, inv, 8, null, getShopLore("wool9"));
createDisplay(Material.WOOL, (byte)9, inv, 9, null, getShopLore("woola"));
createDisplay(Material.WOOL, (byte)10, inv, 10, null, getShopLore("woolb"));
createDisplay(Material.WOOL, (byte)11, inv, 11, null, getShopLore("woolc"));
createDisplay(Material.WOOL, (byte)12, inv, 12, null, getShopLore("woold"));
createDisplay(Material.WOOL, (byte)13, inv, 13, null, getShopLore("woole"));
createDisplay(Material.WOOL, (byte)14, inv, 14, null, getShopLore("woolf"));
createDisplay(Material.WOOL, (byte)15, inv, 15, null, getShopLore("woolg"));
createDisplay(Material.STAINED_GLASS, (byte)0, inv, 16, null, getShopLore("glass"));
createDisplay(Material.STAINED_GLASS, (byte)1, inv, 17, null, getShopLore("glass2"));
createDisplay(Material.STAINED_GLASS, (byte)2, inv, 18, null, getShopLore("glass3"));
createDisplay(Material.STAINED_GLASS, (byte)3, inv, 19, null, getShopLore("glass4"));
createDisplay(Material.STAINED_GLASS, (byte)4, inv, 20, null, getShopLore("glass5"));
createDisplay(Material.STAINED_GLASS, (byte)5, inv, 21, null, getShopLore("glass6"));
createDisplay(Material.STAINED_GLASS, (byte)6, inv, 22, null, getShopLore("glass7"));
createDisplay(Material.STAINED_GLASS, (byte)7, inv, 23, null, getShopLore("glass8"));
createDisplay(Material.STAINED_GLASS, (byte)8, inv, 24, null, getShopLore("glass9"));
createDisplay(Material.STAINED_GLASS, (byte)9, inv, 25, null, getShopLore("glassa"));
createDisplay(Material.STAINED_GLASS, (byte)10, inv, 26, null, getShopLore("glassb"));
createDisplay(Material.STAINED_GLASS, (byte)11, inv, 27, null, getShopLore("glassc"));
createDisplay(Material.STAINED_GLASS, (byte)12, inv, 28, null, getShopLore("glassd"));
createDisplay(Material.STAINED_GLASS, (byte)13, inv, 29, null, getShopLore("glasse"));
createDisplay(Material.STAINED_GLASS, (byte)14, inv, 30, null, getShopLore("glassf"));
createDisplay(Material.STAINED_GLASS, (byte)15, inv, 31, null, getShopLore("glassg"));
createDisplay(Material.STAINED_CLAY, (byte)0, inv, 32, null, getShopLore("clay"));
createDisplay(Material.STAINED_CLAY, (byte)1, inv, 33, null, getShopLore("clay2"));
createDisplay(Material.STAINED_CLAY, (byte)2, inv, 34, null, getShopLore("clay3"));
createDisplay(Material.STAINED_CLAY, (byte)3, inv, 35, null, getShopLore("clay4"));
createDisplay(Material.STAINED_CLAY, (byte)4, inv, 36, null, getShopLore("clay5"));
createDisplay(Material.STAINED_CLAY, (byte)5, inv, 37, null, getShopLore("clay6"));
createDisplay(Material.STAINED_CLAY, (byte)6, inv, 38, null, getShopLore("clay7"));
createDisplay(Material.STAINED_CLAY, (byte)7, inv, 39, null, getShopLore("clay8"));
createDisplay(Material.STAINED_CLAY, (byte)8, inv, 40, null, getShopLore("clay9"));
createDisplay(Material.STAINED_CLAY, (byte)9, inv, 41, null, getShopLore("claya"));
createDisplay(Material.STAINED_CLAY, (byte)10, inv, 42, null, getShopLore("clayb"));
createDisplay(Material.STAINED_CLAY, (byte)11, inv, 43, null, getShopLore("clayc"));
createDisplay(Material.STAINED_CLAY, (byte)12, inv, 44, null, getShopLore("clayd"));
createDisplay(Material.STAINED_CLAY, (byte)13, inv, 45, null, getShopLore("claye"));
createDisplay(Material.STAINED_CLAY, (byte)14, inv, 46, null, getShopLore("clayf"));
createDisplay(Material.STAINED_CLAY, (byte)15, inv, 47, null, getShopLore("clayg"));
createButtons(inv);
p.openInventory(inv);
}
을하지만, 내가 그들을 구입하고자 할 때 난 항상 후 오렌지 양모 또는 점토 또는 유리를 얻을 시안 울/점토/유리.
이
내가 그들에게 그것을 제공하는 방법입니다 누군가가 항목을 클릭 할 때이 실행되는 코드입니다private static void addItem(String item, int price, ShopType type){
priceList.put(item, price);
slotList.put(item, type);
JSONObject temp = new JSONObject();
switch(type){
case SHOP_REDSTONE:
temp.put("slot", a);
temp.put("type", type.toString());
temp.put("name", item);
temp.put("price", price);
a++;
break;
case SHOP_ORES:
temp.put("slot", b);
temp.put("type", type.toString());
temp.put("name", item);
temp.put("price", price);
b++;
break;
case SHOP_SEEDS:
temp.put("slot", c);
temp.put("type", type.toString());
temp.put("name", item);
temp.put("price", price);
c++;
break;
case SHOP_FOOD:
temp.put("slot", d);
temp.put("type", type.toString());
temp.put("name", item);
temp.put("price", price);
d++;
break;
case SHOP_DROPS:
temp.put("slot", e);
temp.put("type", type.toString());
temp.put("name", item);
temp.put("price", price);
e++;
break;
case SHOP_MISC:
temp.put("slot", f);
temp.put("type", type.toString());
temp.put("name", item);
temp.put("price", price);
f++;
break;
case SHOP_DECORATION:
temp.put("slot", g);
temp.put("type", type.toString());
temp.put("name", item);
temp.put("price", price);
g++;
break;
}
System.out.println("A: " +a);
System.out.println("B: " +b);
System.out.println("C: " +c);
System.out.println("D: " +d);
System.out.println("E: " +e);
System.out.println("F: " +f);
System.out.println("G: " +g);
debug.add(temp);
}
:
public static boolean withdrawPlayer(Player player, double amount, int am){
double money = econ.getBalance(player);
if(money < amount){
return false;
}
econ.withdrawPlayer(player, amount);
JSONObject json = Shop.getItemData(player);
int itemID = json.getInt("item_id");
byte itemMeta = (byte)json.getInt("item_data");
ItemStack item = new ItemStack(itemID, 1, itemMeta);
item.setAmount(am);
player.sendMessage("Debug: " + item.getAmount() + " " + item.getType() + " -- Data: " + Shop.getData(item.getData()) + " ||| " + item.getData());
player.getInventory().addItem(item);
player.updateInventory();
return true;
}
이 내가 된 JSONObject 추가하는 방법입니다
@EventHandler
public void onInventoryClick(InventoryClickEvent e){
Player p = (Player) e.getWhoClicked();
int slot = e.getSlot();
if (e.getSlotType().equals(SlotType.OUTSIDE)) {
return;
}
if(e.getClickedInventory().getName().equalsIgnoreCase("Menu")){
if (e.getSlotType().equals(SlotType.OUTSIDE)) {
return;
}
for(ClickType type : ClickType.values()){
if(e.getClick() == type){
e.setCancelled(true);
}
}
for(InventoryAction action : InventoryAction.values()){
if(e.getAction() == action){
e.setCancelled(true);
}
}
if(e.isRightClick() || e.isLeftClick()){
e.setCancelled(true);
switch(slot){
case 0:
p.closeInventory();
new Shop(ShopType.SHOP_REDSTONE, p);
break;
case 1:
p.closeInventory();
new Shop(ShopType.SHOP_ORES, p);
break;
case 2:
p.closeInventory();
new Shop(ShopType.SHOP_SEEDS, p);
break;
case 3:
p.closeInventory();
new Shop(ShopType.SHOP_FOOD, p);
break;
case 4:
p.closeInventory();
new Shop(ShopType.SHOP_DROPS, p);
break;
case 5:
p.closeInventory();
new Shop(ShopType.SHOP_MISC, p);
break;
case 6:
p.closeInventory();
new Shop(ShopType.SHOP_DECORATION, p);
break;
}
}
}
if(e.getClickedInventory().getName().contains("Shop: ")){
if (e.getSlotType().equals(SlotType.OUTSIDE)) {
return;
}
for(ClickType type : ClickType.values()){
if(e.getClick() == type){
e.setCancelled(true);
}
}
for(InventoryAction action : InventoryAction.values()){
if(e.getAction() == action){
e.setCancelled(true);
}
}
if(e.isRightClick() || e.isLeftClick()){
e.setCancelled(true);
ItemStack it = e.getCurrentItem();
if(it == null){
return;
}
int paperID = 339;
if(it.getTypeId() == paperID){
Shop.goBack(p);
}
}
}
switch(e.getClickedInventory().getName()){
case "Shop: Redstone":
e.setCancelled(true);
if(e.isLeftClick() && e.getCurrentItem().getTypeId() != 0){
ItemStack item = e.getCurrentItem();
Material mat = item.getType();
Shop.prepareBuy(p, slot, ShopType.SHOP_REDSTONE, mat.name());
Shop.addItemData(p, e.getCurrentItem().getTypeId(), Shop.getData(e.getCurrentItem().getData()));
}
if(e.isRightClick() && e.getCurrentItem().getTypeId() != 0){
ItemStack item = e.getCurrentItem();
Material mat = item.getType();
Shop.prepareSell(p, slot, ShopType.SHOP_REDSTONE, mat.name());
Shop.addItemData(p, e.getCurrentItem().getTypeId(), Shop.getData(e.getCurrentItem().getData()));
}
break;
case "Shop: Ores":
e.setCancelled(true);
if(e.isLeftClick() && e.getCurrentItem().getTypeId() != 0){
ItemStack item = e.getCurrentItem();
Material mat = item.getType();
Shop.prepareBuy(p, slot, ShopType.SHOP_ORES, mat.name());
Shop.addItemData(p, e.getCurrentItem().getTypeId(), Shop.getData(e.getCurrentItem().getData()));
}
if(e.isRightClick() && e.getCurrentItem().getTypeId() != 0){
ItemStack item = e.getCurrentItem();
Material mat = item.getType();
Shop.prepareSell(p, slot, ShopType.SHOP_ORES, mat.name());
Shop.addItemData(p, e.getCurrentItem().getTypeId(), Shop.getData(e.getCurrentItem().getData()));
}
break;
case "Shop: Seeds":
e.setCancelled(true);
if(e.isLeftClick() && e.getCurrentItem().getTypeId() != 0){
ItemStack item = e.getCurrentItem();
Material mat = item.getType();
Shop.prepareBuy(p, slot, ShopType.SHOP_SEEDS, mat.name());
Shop.addItemData(p, e.getCurrentItem().getTypeId(), Shop.getData(e.getCurrentItem().getData()));
}
if(e.isRightClick() && e.getCurrentItem().getTypeId() != 0){
ItemStack item = e.getCurrentItem();
Material mat = item.getType();
Shop.prepareSell(p, slot, ShopType.SHOP_SEEDS, mat.name());
Shop.addItemData(p, e.getCurrentItem().getTypeId(), Shop.getData(e.getCurrentItem().getData()));
}
break;
case "Shop: Food":
e.setCancelled(true);
if(e.isLeftClick() && e.getCurrentItem().getTypeId() != 0){
ItemStack item = e.getCurrentItem();
Material mat = item.getType();
Shop.prepareBuy(p, slot, ShopType.SHOP_FOOD, mat.name());
Shop.addItemData(p, e.getCurrentItem().getTypeId(), Shop.getData(e.getCurrentItem().getData()));
}
if(e.isRightClick() && e.getCurrentItem().getTypeId() != 0){
ItemStack item = e.getCurrentItem();
Material mat = item.getType();
Shop.prepareSell(p, slot, ShopType.SHOP_FOOD, mat.name());
Shop.addItemData(p, e.getCurrentItem().getTypeId(), Shop.getData(e.getCurrentItem().getData()));
}
break;
case "Shop: Drops":
e.setCancelled(true);
if(e.isLeftClick() && e.getCurrentItem().getTypeId() != 0){
ItemStack item = e.getCurrentItem();
Material mat = item.getType();
Shop.prepareBuy(p, slot, ShopType.SHOP_DROPS, mat.name());
Shop.addItemData(p, e.getCurrentItem().getTypeId(), Shop.getData(e.getCurrentItem().getData()));
}
if(e.isRightClick() && e.getCurrentItem().getTypeId() != 0){
ItemStack item = e.getCurrentItem();
Material mat = item.getType();
Shop.prepareSell(p, slot, ShopType.SHOP_DROPS, mat.name());
Shop.addItemData(p, e.getCurrentItem().getTypeId(), Shop.getData(e.getCurrentItem().getData()));
}
break;
case "Shop: Misc.":
e.setCancelled(true);
if(e.isLeftClick() && e.getCurrentItem().getTypeId() != 0){
ItemStack item = e.getCurrentItem();
Material mat = item.getType();
Shop.prepareBuy(p, slot, ShopType.SHOP_MISC, mat.name());
Shop.addItemData(p, e.getCurrentItem().getTypeId(), Shop.getData(e.getCurrentItem().getData()));
}
if(e.isRightClick() && e.getCurrentItem().getTypeId() != 0){
ItemStack item = e.getCurrentItem();
Material mat = item.getType();
Shop.prepareSell(p, slot, ShopType.SHOP_MISC, mat.name());
Shop.addItemData(p, e.getCurrentItem().getTypeId(), Shop.getData(e.getCurrentItem().getData()));
}
break;
case "Shop: Decoration":
e.setCancelled(true);
if(e.getClick() == ClickType.DROP){
return;
}
if(e.isLeftClick() && e.getCurrentItem().getTypeId() != 0){
ItemStack item = e.getCurrentItem();
Material mat = item.getType();
Shop.prepareBuy(p, slot, ShopType.SHOP_DECORATION, mat.name());
Shop.addItemData(p, e.getCurrentItem().getTypeId(), Shop.getData(e.getCurrentItem().getData()));
}
if(e.isRightClick() && e.getCurrentItem().getTypeId() != 0){
ItemStack item = e.getCurrentItem();
Material mat = item.getType();
Shop.prepareSell(p, slot, ShopType.SHOP_DECORATION, mat.name());
Shop.addItemData(p, e.getCurrentItem().getTypeId(), Shop.getData(e.getCurrentItem().getData()));
}
break;
}
}
제발, 제가 뭔가를 놓치고 있습니까, 아니면 제가 잘못하고 있습니까?
잎 만들기에 사용하는 코드를 표시 할 수 있습니까? – Kerooker