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

[Pytanie] Pytania dotyczące początkującego pisania pluginów


Rekomendowane odpowiedzi

Opublikowano

najwygodniej jest robić osobne klasy dla każdej komendy.


public class ACmd implements CommandExecutor 
public class BCmd implements CommandExecutor 
public class CCmd implements CommandExecutor 

 I potem rejestrować w onEnable

this.getCommand("a").setExecutor(new ACmd());
this.getCommand("b").setExecutor(new BCmd());
this.getCommand("c").setExecutor(new CCmd());

Jak z jakiegoś powodu potrzebujesz jednak kilku komend do jednego executora to: (pamiętaj by nie robić tego po to by 2 komendy robiły to samo, od tego są aliasy)

ACmd executor = new ACmd();
this.getCommand("a").setExecutor(executor);
this.getCommand("b").setExecutor(executor);
this.getCommand("c").setExecutor(executor); 

Możesz też dla każdego tworzyć nowy, wszystko zależy od wygody/zastosowania, jak dajesz jeden executor to oczywiście wszelkie globalne (ale nie statyczne) zmienne w tej ACmd.class będą wspólne, bo to jedna i ta sama instacja klasy, ale jak zrobisz:


this.getCommand("a").setExecutor(new ACmd());
this.getCommand("b").setExecutor(new ACmd());
this.getCommand("c").setExecutor(new ACmd()); 

to kazdy ma osobne.

 

 

Tak w uproszczeniu.
­

1438614356923701010629.png

 

Opublikowano


public boolean onCommand(CommandSender sender, Command cmd, String l, String[] args){

if(l.equalsIgnoreCase("komenda1")){

}

else if(l.equalsIgnoreCase("komenda2")){

}

return false;

}

Opublikowano
	public boolean onCommand(CommandSender sender, Command cmd, String l, String[] args){
		if(l.equalsIgnoreCase("komenda1")){
}
		else if(l.equalsIgnoreCase("komenda2")){
}
	return false;
}

od kiedy do nazwy komendy sie uzywa labela ...?

Dlaczego blezur broni non premium ? 

bo sam nim jest

Opublikowano

@GotoFinal

 

jak zrobić tak aby jakieś bloki postawily sie wokół gracza w takiej formacji a potem zniknęły?:

 

0b0

bgb

0b0

 

b - blok

g - pozycja gracza

0 - nic nie oznacza

Jestem wesoły romek

Opublikowano

@GotoFinal

 

jak zrobić tak aby jakieś bloki postawily sie wokół gracza w takiej formacji a potem zniknęły?:

 

0b0

bgb

0b0

 

b - blok

g - pozycja gracza

po pobraniu lokacji gracza, robisz .getBlock()

i masz teraz blok na jakim jest gracz

Block block = player.getLocation().getBlock(); 

i masz tam takie fajne metody, jak block.getRelative(1,0,0) i pobierasz blok 1 kratkę na osi X dalej ;) wtedy już block.setType(Material.STONE) czy jakiś inny material i gotowe. I tak samo z resztą bloków.

A by znikało... to musisz poczytać o tym:

http://wiki.bukkit.org/Scheduler_Programming/pl

Mi się nie chce tłumaczyć :P

 

­

1438614356923701010629.png

 

Opublikowano

@Dark.Craft

 

O to chodzi?

 

location - instancja klasy Location, pobrana przy użyciu metody getLocation() z klasy Player.

 

Firework firework = (Firework) location.getWorld().spawnEntity(location, Firework.class);

FireworkMeta meta = firework.getFireworkMeta();

meta.addEffect(FireworkEffect.builder().with(Type.BALL).withColor(...).build());

meta.setPower(1);

firework.setFireworkMeta(meta);

 

Pisane z pamięci, na telefonie więc może nie być w 100% poprawne, i nie jest w code. ;p

Opublikowano

Mam nadzieję, że z czasem poogarniam to wszystko :)

Kolejne pytanie:
Jak ustawić "int a" na randomową liczbę od 1 do 3?

Jestem wesoły romek

Opublikowano

tworzysz gdzieś w klasie:

private static final Random rand = new Random();

(Ważne jest tylko to by nie tworzyć tych randomów za każdym razem jak czegoś potrzebujesz, tylko mieć ich np kilka lub tylko 1)

i masz tam metodę

rand.nextInt(n)

i to losuje liczbę od 0 do n (ale bez n)

np:

rand.nextInt(4)

Może wylosować

0,1,2,3

Więc jak chcemy od 1 do 3, to musimy dodać tę 1 do całości, ale jednocześnie odjąć z "puli"

rand.nextInt(4 - 1) + 1

int i = rand.nextInt(3) + 1

i mamy możliwość wylosowania: 0, 1, 2, i zawsze dodajemy 1, więc mamy 1,2,3.

1438614356923701010629.png

 

Opublikowano

Odpowiadajcie, mam do rozdania jeszcze 6 lajków :)
Kolejne pytanie:

jak zrobić event "po wykopaniu kamienia" (po wykopaniu nie po zniszczeniu)

Jestem wesoły romek

Opublikowano

Odpowiadajcie, mam do rozdania jeszcze 6 lajków :)

Kolejne pytanie:

jak zrobić event "po wykopaniu kamienia" (po wykopaniu nie po zniszczeniu)

to co masz na myśli pisząć że po wykopaniu a nie zniszczeniu? czym się różni wykopanie od zniszczenia?

­

1438614356923701010629.png

 

Opublikowano

znisczyć możesz na gamemode 1 a wykopać na gamemode 0

no to i tak uzywasz BlockBreakEvent, i co najwyzej sprawdzasz, event.getPlayer().getGameMode() == GameMode.SURVIVAL czy ci pasuje ;)

­

1438614356923701010629.png

 

Opublikowano

@Dark.Craft

 

O to chodzi?

 

location - instancja klasy Location, pobrana przy użyciu metody getLocation() z klasy Player.

 

Firework firework = (Firework) location.getWorld().spawnEntity(location, Firework.class);

FireworkMeta meta = firework.getFireworkMeta();

meta.addEffect(FireworkEffect.builder().with(Type.BALL).withColor(...).build());

meta.setPower(1);

firework.setFireworkMeta(meta);

 

Pisane z pamięci, na telefonie więc może nie być w 100% poprawne, i nie jest w code. ;p

Nie działa mi pierwsza linijka kodu

 

­

Jestem wesoły romek

Opublikowano

...

po 1:

tam było location.getWorld()

nie getPlayer()

 

po 2...

Ty masz te Location sobie stworzyć w tym kodzie, i ustawić je na takie kordy, na jakich chcesz zrespić te Entity, myśl.

­

1438614356923701010629.png

 

Opublikowano

Teraz mam tak:

Player p = (Player) sender;
Firework firework = (Firework) p.getWorld().spawn(p.getLocation(), Firework.class);
FireworkMeta meta = firework.getFireworkMeta();
meta.addEffect(FireworkEffect.builder().trail(false).flicker(false).with(Type.BALL).withColor(Color.BLACK).build());
meta.setPower(0);
firework.setFireworkMeta(meta);

Po wpisaniu komendy fajerwerka wybucha czasem niżej, czasem wyżej, da się to zmienić?

 

­

Jestem wesoły romek

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...