Java Plugin Block auf Block registrieren?!

02/03/2014 14:52 nawiat100#1
Na Moin :p

habe diesen event code:

möchte das das Plugin erkennt wenn ein Wolleblock auf einen Wolleblock gesetzt wurde. Das Problem ist das er immer, egal was ich setze, sag das ich den ersten gesetzt hätte.

ich denke mal das man die Location des gesetzten blocks iwi speichern müsste und diese dann abfragen und schauen ob der zweite block eins über dem anderen gesetzt wurde. Wie man das aber macht weiß ich als Noob nicht :p
Bin also noch Anfänger und versuche mich noch, also nicht schlagen XD

Danke,
02/03/2014 16:14 lordsill#2
Das hier sollte denke funktionieren:

Code:
@EventHandler
    public void onBlockPlace(org.bukkit.event.block.BlockPlaceEvent placeEv1)
    {	
        Material material = placeEv1.getBlock().getType();
        Location loc = placeEv1.getBlock().getLocation();
        int y = loc.getBlockY();
        Material material2 = Bukkit.getWorld(loc.getWorld().getName()).getBlockAt(loc.getBlockX(), y-1, loc.getBlockZ()).getType();

        if (material == Material.WOOL && material2 != Material.WOOL)
        {
                placeEv1.getPlayer().sendMessage(ChatColor.LIGHT_PURPLE + "[BlockPlacer]" + ChatColor.GREEN + "erster Wolleblock gesetzt!");
                placeEv1.getPlayer().sendMessage(ChatColor.LIGHT_PURPLE + "[BlockPlacer]" + ChatColor.GREEN + "Y: " + y);
        }
        else if(material == Material.WOOL && material2 == Material.WOOL)
        {
                placeEv1.getPlayer().sendMessage(ChatColor.LIGHT_PURPLE + "[BlockPlacer]" + ChatColor.GREEN + "zweiter Wolleblock gesetzt !");
        }
        else
        {
                placeEv1.getPlayer().sendMessage(ChatColor.LIGHT_PURPLE + "[BlockPlacer]" + ChatColor.GREEN + "DUMM!");
        }
    }
Edit:
In java schreibt man für den Fall:
Fall1 und Fall2 sollen den selben boolean haben => Fall1 && Fall2 (halt 2x das &)
true && true => true
true && false => false
false && true => false
false && false => true
02/03/2014 16:15 Freak2011#3
Das ist jetzt nicht abwertend gemeint, aber lerne bitte erst einmal Java, bevor du wild für Bukkit drauf losprogrammierst. Es wird dir nichts bringen und denjenigen die deine (überwiegend sehr einfach zu beantwortenden) Fragen beantworten müssen auch nicht. Nur durch irgendwelche Tutorials (vor allem wenn es rein ums programmieren für Bukkit geht), werden dir in keinster Weise helfen können. Such dir am besten Ein gutes Buch/ einen Mentor und lerne es auf die richtige Art. Dann kannst du anfangen mit API's wie zB. der Bukkit-API zu arbeiten.


Aber ich möchte ja nicht meckern, deshalb hier die Lösung:
Bukkit ruft jedesmal wenn ein Block gesetzt wird dieses BlockPlaceEvent auf und damit auch deine Methode 'onBlockPlace...'. Dadurch wird jedesmal deine lokale Abfrage-Variable 'Wolle' auf '0' zurückgesetzt. Um das zu verhindern, muss deine Variable Global sein. Was das ist und wie man das macht, kannst du sehr einfach mit Hilfe des Internet / eines guten Java-Buches herausfinden.
02/03/2014 16:50 nawiat100#4
erstmal danke an LordSill, wirklich sehr hilfreich und ich sehe auch was ich vergessen habe :p danke ^^

und dann zu Freak2011, nichts gegen deinen Beitrag, aber wenn du hier im Forum bist um Leute zu bekehren, Java erstmal zu lernen, anstatt ihnen einfach zu helfen, hättest du mir das lesen eines unützen Beitrages erspart und dem Forum eine weitere blö** Antwort. Aber da ich mit sowas schon gerechnet habe lasse ich mich von dir nicht rausbringen, es gibt vielleicht auch Menschen die mit Beispielen besser/schneller lernen als mit iwelchen Büchern :D das habe ich schon durch! (P.S: ich bin so jemand, der nur durch Beispiele C++ und Visual Basic gelernt hat und das ziemlich gut. Aber sag keinen das ich ne Ausbildung zum Fachinformatiker mache ge...?! :p)

kann geschlossen werden ^^

MFG
Nawiat