Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Problem z kodem JAVA do pluginu Bukkit.


Rekomendowane odpowiedzi

Opublikowano

Witam,

Usiłuję napisać plugin na disco zbroję, tak aby po wpisaniu komendy /discoarmor-enable (nick gracza) zbroja podanego gracza była disco zbroją.

O to kod:

import java.util.Random;

import org.bukkit.Bukkit;
import org.bukkit.Color;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import org.bukkit.plugin.java.JavaPlugin;
 
public class main extends JavaPlugin {
	public static String discoenable = "false";
	public static Player nickgracza = null;
	
	public boolean onCommand(CommandSender sender, Command cmd, String label, Player[] args) {
		if(cmd.getName().equalsIgnoreCase("discoarmor-enable")){
			Player p = (Player) sender;
			discoenable = "true";
			p.sendMessage(discoenable);
			nickgracza = args[0];
    	}
		if(cmd.getName().equalsIgnoreCase("discoarmor-disable")){
			Player p = (Player) sender;
			discoenable = "false";
			p.sendMessage(discoenable);
			nickgracza = null;
    	}
		return false;
	}
        public void onEnable() {
        	
                Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
                        private Random r = new Random();
                       
                       
						public void run() {
                        	if(discoenable == "true"){
                                Color c = Color.fromRGB(r.nextInt(255), r.nextInt(255), r.nextInt(255));
                               
                                 
                                        if (nickgracza.getInventory().getHelmet() != null && nickgracza.getInventory().getHelmet().getType() == Material.LEATHER_HELMET) {
                                                nickgracza.getInventory().setHelmet(getColorArmor(Material.LEATHER_HELMET, c));
                                        }
                                       
                                        if (nickgracza.getInventory().getChestplate() != null && nickgracza.getInventory().getChestplate().getType() == Material.LEATHER_CHESTPLATE) {
                                        	nickgracza.getInventory().setChestplate(getColorArmor(Material.LEATHER_CHESTPLATE, c));
                                        }
                                       
                                        if (nickgracza.getInventory().getLeggings() != null && nickgracza.getInventory().getLeggings().getType() == Material.LEATHER_LEGGINGS) {
                                        	nickgracza.getInventory().setLeggings(getColorArmor(Material.LEATHER_LEGGINGS, c));
                                        }
                                       
                                        if (nickgracza.getInventory().getBoots() != null && nickgracza.getInventory().getBoots().getType() == Material.LEATHER_BOOTS) {
                                        	nickgracza.getInventory().setBoots(getColorArmor(Material.LEATHER_BOOTS, c));
                                        }
                                
                        	}
                        }
                }, 0, 2);
        	
        }

        
       
        private ItemStack getColorArmor(Material m, Color c) {
                ItemStack i = new ItemStack(m, 1);
                LeatherArmorMeta meta = (LeatherArmorMeta) i.getItemMeta();
                meta.setColor(c);
                i.setItemMeta(meta);
                return i;
        }
	
}

A więc ten kod nie działa, próbowałem różnych rzeczy, ale niestety nie wiem jak to naprawić, do puki nie zrobiłem zmiennych "nickgracza", ponieważ chciałem aby nie każdy gracz miał disco zbroję, tylko ten co ma ją włączoną, a wcześniej każdy miał disco zbroję.

Za pomoc będę bardzo wdzięczny.
 

Wstawił bym sobie sygnaturkę, ale nie pozwala mi na to forum, ponieważ gdy próbuję to zrobić, dostaję słynny komunikat od cloudflare "Getway timed out". :/

Opublikowano
discoenable = "true";

 589785efe9a78.png

 

Musisz stworzyc jakis plik ktory przechowa wszystkie nicki postaci ktorzy wpisali enable, dopiero potem w "runie" jesli danych nick jest w tym pliku to mozna uruchomić. I boolean nie string = "true"...

Osobiście pomagam tylko na PW lub e-mail


-----------------------------------------------------------------


https://github.com/smietanka

Opublikowano

@goukan

Dzięki, leci like :)

Wstawił bym sobie sygnaturkę, ale nie pozwala mi na to forum, ponieważ gdy próbuję to zrobić, dostaję słynny komunikat od cloudflare "Getway timed out". :/

  • 4 tygodnie później...
Opublikowano

Jak robisz coś takiego to lepiej w 2 warunku daj else przed if'a 

 

 

 

 
        if(cmd.getName().equalsIgnoreCase("discoarmor-enable")){
            Player p = (Player) sender;
            discoenable = "true";
            p.sendMessage(discoenable);
            nickgracza = args[0];
    }
        if(cmd.getName().equalsIgnoreCase("discoarmor-disable")){
            Player p = (Player) sender;
            discoenable = "false";
            p.sendMessage(discoenable);
            nickgracza = null;
    }

na

        if(cmd.getName().equalsIgnoreCase("discoarmor-enable")){
            Player p = (Player) sender;
            discoenable = "true";
            p.sendMessage(discoenable);
            nickgracza = args[0];
    }
        else if(cmd.getName().equalsIgnoreCase("discoarmor-disable")){
            Player p = (Player) sender;
            discoenable = "false";
            p.sendMessage(discoenable);
            nickgracza = null;
    }

 

 

 

Z tym robisz to samo 

 

 

 

if (nickgracza.getInventory().getHelmet() != null && nickgracza.getInventory().getHelmet().getType() == Material.LEATHER_HELMET) {
nickgracza.getInventory().setHelmet(getColorArmor(Material.LEATHER_HELMET, c));
}

if (nickgracza.getInventory().getChestplate() != null && nickgracza.getInventory().getChestplate().getType() == Material.LEATHER_CHESTPLATE) {
    nickgracza.getInventory().setChestplate(getColorArmor(Material.LEATHER_CHESTPLATE, c));
}

if (nickgracza.getInventory().getLeggings() != null && nickgracza.getInventory().getLeggings().getType() == Material.LEATHER_LEGGINGS) {
    nickgracza.getInventory().setLeggings(getColorArmor(Material.LEATHER_LEGGINGS, c));
}

if (nickgracza.getInventory().getBoots() != null && nickgracza.getInventory().getBoots().getType() == Material.LEATHER_BOOTS) {
    nickgracza.getInventory().setBoots(getColorArmor(Material.LEATHER_BOOTS, c));
}

na

if (nickgracza.getInventory().getHelmet() != null && nickgracza.getInventory().getHelmet().getType() == Material.LEATHER_HELMET) {
nickgracza.getInventory().setHelmet(getColorArmor(Material.LEATHER_HELMET, c));
}

else if (nickgracza.getInventory().getChestplate() != null && nickgracza.getInventory().getChestplate().getType() == Material.LEATHER_CHESTPLATE) {
    nickgracza.getInventory().setChestplate(getColorArmor(Material.LEATHER_CHESTPLATE, c));
}

else if (nickgracza.getInventory().getLeggings() != null && nickgracza.getInventory().getLeggings().getType() == Material.LEATHER_LEGGINGS) {
    nickgracza.getInventory().setLeggings(getColorArmor(Material.LEATHER_LEGGINGS, c));
}

else if (nickgracza.getInventory().getBoots() != null && nickgracza.getInventory().getBoots().getType() == Material.LEATHER_BOOTS) {
    nickgracza.getInventory().setBoots(getColorArmor(Material.LEATHER_BOOTS, c));
}

 

 

 

Ty zamieniasz zbroje graczowi, wiec jak bedzie mial diamentowy set wpisze komende to juz nie bedzie miał, nie zapisujesz nigdzie poprzedniego eq.

Lepiej na pakietach to zrobić, gdzies w internetach napewno masz poradnik .

 

A i jak robisz zmienna z true/false 

to uzyj boolean a nie String.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...