Skocz do zawartości

Zrobienie waluty na serwerze


Polecane posty

Chce zrobić walute serwerową z słonecznika i nie wiem jak to zrobić aby ten słonecznik był np. enchantowany na protection X lub na inny żeby nikt tego słonecznika nie podrobił.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jak chcesz napisać własny plugin to enchant, ew. jakiś dodatkowy nbt tag do itemu.

Plugin na enchanty:

	
	public static ItemStack moneyItem(int amount) {
        final var is = new ItemStack(Material.SUNFLOWER, amount);
        is.addUnsafeEnchantment(Enchantment.DURABILITY, 10);
        final var im = is.getItemMeta();
        im.setDisplayName(ChatColor.GREEN + "$");
        im.addItemFlags(ItemFlag.HIDE_ENCHANTS);
        is.setItemMeta(im);
        return is;
    }

    /**
     * Sprawdza czy gracz ma wystarczajaco pieniedzy i odejmuje je, jesli tak.
     */
    public static boolean trySubtractMoney(Inventory inv, int toSub) {
        int foundSoFar = 0;
        final var counted = new ArrayList<ItemStack>();
        for(final var content : inv) {
            if(content.getType() == Material.SUNFLOWER
                    && content.containsEnchantment(Enchantment.DURABILITY)
                    && content.getEnchantmentLevel(Enchantment.DURABILITY) == 10) {
                counted.add(content);
                foundSoFar += content.getAmount();
                if(foundSoFar >= toSub) { //gracz ma wystarczajaco pieniedzy
                    for(final var money : counted) {
                        final var oldAmount = money.getAmount();
                        money.setAmount(Math.max(0, money.getAmount() - toSub)); //odejmujemy odpowiednie ilosci
                        toSub -= (oldAmount - money.getAmount());
                    }
                    return true;
                }
            }
        }
        //gracz nie ma wystarczajaco pieniedzy
        return false;
    }

    @EventHandler
    public void sample(PlayerJoinEvent event) {
        event.getPlayer().getInventory().addItem(moneyItem(1));
        event.getPlayer().sendMessage("Dostajesz $1!");
        if(trySubtractMoney(event.getPlayer().getInventory(), 10)) {
            event.getPlayer().sendMessage("Gratulacje miales $10! Teraz masz $0.");
        }
    }

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się
  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×
Okienko zamknie się za 5 sekund...