[Problema] Programmazione minecraft plugin problema!

Ciao a tutti sono Matt3o188 e sono il founder di un server,
di questi giorni volevo fare un nuovo plugin esclusivo per il mio
server e quindi o iniziato a farlo (premetto che so compilare in java 
ma non sono eccezionalmente bravo) ad un certo punto mi trovo questo problema:


Vorrei fare in modo che cliccando col destro su un cartello mi givvi un 
item che a per nome quello che sta scritto sulla seconda riga del cartello!

Ora, so fare tutto tranne far in modo che per nome abbia il testo scritto sulla riga del cartello
il codice che uso per l'oggetto è:



ItemStack spada = new ItemStack(Material.DIAMOND_SWORD,1 );
ItemMeta spadameta = spada.getItemMeta();
spadameta.setDisplayName("nome che voglio dare");
spada.setItemMeta(spadameta);
spada.addUnsafeEnchantment(org.bukkit.enchantments.Enchantment.DURABILITY, 1);


come posso fare per far in modo che invece di starci scritto "nome che oglio dare" ci sia 
il testo scritto sulla seconda linea del cartello?


In Cambio Qualunque cosa pur di aver una risposta buona e rapida!
Se non mi precedono ad aiutarti, ti aiuto io appena arrivo a casa.

Messaggio inviato col telefono!
_____________________________________________________________________________________________________________
GitHub: https://github.com/EduProArd/
Come contattarmi: Skype("EduProArd") oppure per MP("Messaggio privato sul forum")
Hosting: https://www.easyware-hosting.ch/
EasyWay: https://www.minecraft-italia.it/forum/t-easyway-servizi-di-sviluppo-plugin-ed-amministrazione-di-sistema
_____________________________________________________________________________________________________________
ciao, puoi dare item cliccando il cartello con questi eventi di bukkit:

Codice:
@EventHandler
public void onSignsScrivo(SignChangeEvent e){
if(e.getPlayer().hasPermission("CartelloAdmin.admin")){
if(e.getLine(0).equalsIgnoreCase("[spada]")){
e.setLine(0, "[spada]");
e.setLine(1, "Cliccami per");
e.setLine(2, "la spada!");
    }
  }
}


poi:

Codice:
@EventHandler
public void onPlayerToccaCartello(PlayerInteractEvent e){

if(!(e.getAction() == Action.RIGHT_CLICK_BLOCK))
return;
if(e.getClickedBlock().getState() instanceof Sign){
Sign s = (Sign) e.getClickedBlock().getState();
ItemStack spada = new ItemStack(Material.DIAMOND_SWORD,1 );
ItemMeta spadameta = spada.getItemMeta();
spadameta.setDisplayName("nome che voglio dare");
spada.setItemMeta(spadameta);
spada.addUnsafeEnchantment(org.bukkit.enchantments.Enchantment.DURABILITY, 1);

if(s.getLine(0).equalsIgnoreCase("[spada]")){

 e.getPlayer().getInventory().addItem(spada);

   }
 }
}


dimmelo se non capisci qualcosa Smile


EDIT:
scusami edo se ti ho preceduto Patpat (Modificato 13/11/2014, 19:59 da gamerover98.)
[Immagine: just_cause_3_sfondo_1.jpg]
Dovresti anche fare una lista di cartelli in modo che i giocatori non si piazzino il cartello da soli.
14/11/2014, 13:40stokdam ha scritto: Dovresti anche fare una lista di cartelli in modo che i giocatori non si piazzino il cartello da soli.

mi sono dimenticato l' else che dice che se non ha il permesso deve cancellare l' evento e dirgli che non ha il permesso!

Codice:
@EventHandler
public void onSignsScrivo(SignChangeEvent e){
  if(e.getPlayer().hasPermission("CartelloAdmin.admin")){
    if(e.getLine(0).equalsIgnoreCase("[spada]")){
      e.setLine(0, "[spada]");
      e.setLine(1, "Cliccami per");
      e.setLine(2, "la spada!");
    }
  }
}else{
e.setCancelled(true);
e.getPlayer().sendMessage("§cNon hai il permesso!");
}
(Modificato 14/11/2014, 15:15 da gamerover98.)
[Immagine: just_cause_3_sfondo_1.jpg]
13/11/2014, 19:56gamerover98 ha scritto: ciao, puoi dare item cliccando il cartello con questi eventi di bukkit:

Codice:
@EventHandler
public void onSignsScrivo(SignChangeEvent e){
if(e.getPlayer().hasPermission("CartelloAdmin.admin")){
if(e.getLine(0).equalsIgnoreCase("[spada]")){
e.setLine(0, "[spada]");
e.setLine(1, "Cliccami per");
e.setLine(2, "la spada!");
    }
  }
}


poi:

Codice:
@EventHandler
public void onPlayerToccaCartello(PlayerInteractEvent e){

if(!(e.getAction() == Action.RIGHT_CLICK_BLOCK))
return;
if(e.getClickedBlock().getState() instanceof Sign){
Sign s = (Sign) e.getClickedBlock().getState();
ItemStack spada = new ItemStack(Material.DIAMOND_SWORD,1 );
ItemMeta spadameta = spada.getItemMeta();
spadameta.setDisplayName("nome che voglio dare");
spada.setItemMeta(spadameta);
spada.addUnsafeEnchantment(org.bukkit.enchantments.Enchantment.DURABILITY, 1);

if(s.getLine(0).equalsIgnoreCase("[spada]")){

 e.getPlayer().getInventory().addItem(spada);

   }
 }
}


dimmelo se non capisci qualcosa Smile


EDIT:
scusami edo se ti ho preceduto Patpat

@gamerover98 I nomi dei metodi... Inoltre lui ti ha chiesto di dare il nome alla spada in base a quello scritto nel cartello, ma nel SignChangeEvent cambi la riga 1 e 2 non permettendo di fare cio' e nell'interact hai messo "nome che voglio dare"

PS: Col tuo codice nessuno potrà piu' piazzare cartelli asd
~ RoboticStaff 2.0 è arrivato! ~
Proteggi il tuo server dallo spam e rispondi automaticamente ai tuoi player!
15/11/2014, 16:18l24yN ha scritto:
13/11/2014, 19:56gamerover98 ha scritto: ciao, puoi dare item cliccando il cartello con questi eventi di bukkit:

Codice:
@EventHandler
public void onSignsScrivo(SignChangeEvent e){
if(e.getPlayer().hasPermission("CartelloAdmin.admin")){
if(e.getLine(0).equalsIgnoreCase("[spada]")){
e.setLine(0, "[spada]");
e.setLine(1, "Cliccami per");
e.setLine(2, "la spada!");
    }
  }
}


poi:

Codice:
@EventHandler
public void onPlayerToccaCartello(PlayerInteractEvent e){

if(!(e.getAction() == Action.RIGHT_CLICK_BLOCK))
return;
if(e.getClickedBlock().getState() instanceof Sign){
Sign s = (Sign) e.getClickedBlock().getState();
ItemStack spada = new ItemStack(Material.DIAMOND_SWORD,1 );
ItemMeta spadameta = spada.getItemMeta();
spadameta.setDisplayName("nome che voglio dare");
spada.setItemMeta(spadameta);
spada.addUnsafeEnchantment(org.bukkit.enchantments.Enchantment.DURABILITY, 1);

if(s.getLine(0).equalsIgnoreCase("[spada]")){

 e.getPlayer().getInventory().addItem(spada);

   }
 }
}


dimmelo se non capisci qualcosa Smile


EDIT:
scusami edo se ti ho preceduto Patpat

@gamerover98 I nomi dei metodi... Inoltre lui ti ha chiesto di dare il nome alla spada in base a quello scritto nel cartello, ma nel SignChangeEvent cambi la riga 1 e 2 non permettendo di fare cio' e nell'interact hai messo "nome che voglio dare"

PS: Col tuo codice nessuno potrà piu' piazzare cartelli asd

intendi che il cartello si puo piazzare solo una volta?
[Immagine: just_cause_3_sfondo_1.jpg]
15/11/2014, 16:41gamerover98 ha scritto:
15/11/2014, 16:18l24yN ha scritto:
13/11/2014, 19:56gamerover98 ha scritto: ciao, puoi dare item cliccando il cartello con questi eventi di bukkit:

Codice:
@EventHandler
public void onSignsScrivo(SignChangeEvent e){
if(e.getPlayer().hasPermission("CartelloAdmin.admin")){
if(e.getLine(0).equalsIgnoreCase("[spada]")){
e.setLine(0, "[spada]");
e.setLine(1, "Cliccami per");
e.setLine(2, "la spada!");
    }
  }
}


poi:

Codice:
@EventHandler
public void onPlayerToccaCartello(PlayerInteractEvent e){

if(!(e.getAction() == Action.RIGHT_CLICK_BLOCK))
return;
if(e.getClickedBlock().getState() instanceof Sign){
Sign s = (Sign) e.getClickedBlock().getState();
ItemStack spada = new ItemStack(Material.DIAMOND_SWORD,1 );
ItemMeta spadameta = spada.getItemMeta();
spadameta.setDisplayName("nome che voglio dare");
spada.setItemMeta(spadameta);
spada.addUnsafeEnchantment(org.bukkit.enchantments.Enchantment.DURABILITY, 1);

if(s.getLine(0).equalsIgnoreCase("[spada]")){

 e.getPlayer().getInventory().addItem(spada);

   }
 }
}


dimmelo se non capisci qualcosa Smile


EDIT:
scusami edo se ti ho preceduto Patpat

@gamerover98 I nomi dei metodi... Inoltre lui ti ha chiesto di dare il nome alla spada in base a quello scritto nel cartello, ma nel SignChangeEvent cambi la riga 1 e 2 non permettendo di fare cio' e nell'interact hai messo "nome che voglio dare"

PS: Col tuo codice nessuno potrà piu' piazzare cartelli asd

intendi che il cartello si puo piazzare solo una volta?

No, che nessun player può piazzare cartelli (se non quelli con il permesso)
My Config:
    MotherBoard: GigaByte 990 FX A-UD3 Ultra Durable
    CPU: AMD FX-8350 (8 core, 4.00GHz)
    Dissipatore: ThermalRight Macho HR-02 Rev.a
    RAM: Corsair Vengeance 8GB 4GBx2
    GPU: nVidia GTX 780 Asus OC
    PSU: Corsair CX 750M
    Case: Cooler Master 690 III Midi
    SSD 256GB
    HHD 1TB
    Masterizzatore
1 utente apprezza questo post
15/11/2014, 16:42SkiFire13 ha scritto:
15/11/2014, 16:41gamerover98 ha scritto:
15/11/2014, 16:18l24yN ha scritto:
13/11/2014, 19:56gamerover98 ha scritto: ciao, puoi dare item cliccando il cartello con questi eventi di bukkit:

Codice:
@EventHandler
public void onSignsScrivo(SignChangeEvent e){
if(e.getPlayer().hasPermission("CartelloAdmin.admin")){
if(e.getLine(0).equalsIgnoreCase("[spada]")){
e.setLine(0, "[spada]");
e.setLine(1, "Cliccami per");
e.setLine(2, "la spada!");
    }
  }
}


poi:

Codice:
@EventHandler
public void onPlayerToccaCartello(PlayerInteractEvent e){

if(!(e.getAction() == Action.RIGHT_CLICK_BLOCK))
return;
if(e.getClickedBlock().getState() instanceof Sign){
Sign s = (Sign) e.getClickedBlock().getState();
ItemStack spada = new ItemStack(Material.DIAMOND_SWORD,1 );
ItemMeta spadameta = spada.getItemMeta();
spadameta.setDisplayName("nome che voglio dare");
spada.setItemMeta(spadameta);
spada.addUnsafeEnchantment(org.bukkit.enchantments.Enchantment.DURABILITY, 1);

if(s.getLine(0).equalsIgnoreCase("[spada]")){

 e.getPlayer().getInventory().addItem(spada);

   }
 }
}


dimmelo se non capisci qualcosa Smile


EDIT:
scusami edo se ti ho preceduto Patpat

@gamerover98 I nomi dei metodi... Inoltre lui ti ha chiesto di dare il nome alla spada in base a quello scritto nel cartello, ma nel SignChangeEvent cambi la riga 1 e 2 non permettendo di fare cio' e nell'interact hai messo "nome che voglio dare"

PS: Col tuo codice nessuno potrà piu' piazzare cartelli asd

intendi che il cartello si puo piazzare solo una volta?

No, che nessun player può piazzare cartelli (se non quelli con il permesso)

cavolo è vero
provvedo al fix!

Scusate il doppio post ma vado di fretta!

ecco la soluzione! basta spostare il permesso all' interno:

Codice:
@EventHandler
public void onSignsScrivo(SignChangeEvent e){
if(e.getLine(0).equalsIgnoreCase("[spada]")){
if(e.getPlayer().hasPermission("CartelloAdmin.admin")){
e.setLine(0, "[spada]");
e.setLine(1, "Cliccami per");
e.setLine(2, "la spada!");
    }
  }
}
(Modificato 15/11/2014, 18:42 da gamerover98.)
[Immagine: just_cause_3_sfondo_1.jpg]
Discussioni simili
 
[Domanda] Plugin Help
Ultima risposta: zBoringDrop
10/12/2017, 23:58
Ultima risposta: xNightmaree
10/12/2017, 20:58
Ultima risposta: BEANNIEBOY
08/12/2017, 11:45
Ultima risposta: S4lvious
07/12/2017, 00:29

Utente(i) che stanno guardando questa discussione: 1 Ospite(i)