Jump to content

Recommended Posts

Posted

Also durch ein bestimmtes Item wird ein Inventar geöffnet in dem man dann auf "Annehmen" klicken muss. Also das Item muss man mit rechtklick auf den Boden klicken. Habe ich alles bereit gemacht!   Jedoch weiss ich nicht wie ich die Location, also den Block auf den man draufgeklickt hat abspeichern soll? e.getClickedBlock kann man ja nicht in einem String oder so speichern :/ Ich den Block eben in einer anderen klasse.. Dort ist der InventoryClickEvent und nach dem Klicken auf "Annehmen" soll eben über dem geklickten block ein block spawnen.. (weiss auch nicht wie das gehen soll :D) Also wie man ein block spawnt weiss ich aber das es eins über der Location sein soll.. Man weiss ja nicht die genauen Koordinaten..

Kann mir jemand helfen?

 

Danke für eure antworten :)

Posted

Guten Tag,

 

also durch dein Wirrwar blicke ich garnicht durch. Was genau willst du machen? Bitte formuliere das nocheinmal besser ganz frei nach dem Zitat:

Zitat

Ein Problem ist halb gelöst, wenn es klar formuliert ist.

John Dewey

 

Freundliche Grüße

BloodSKreaper

Posted

Ok :D Also wenn man eine "spezielle" Goldschaufen an den Boden drückt soll der Block auf den man geklickt hat gespeichert werden, weil ich das ganze in einer anderen klasse benötige.. Über dem geklickten Block soll dan ein Block spawnen. Wie man ein Block spawnt weis ich aber nicht wie man es machen soll, sodass das der Block eins über der Location gespawnt wird (Also die Location vom e.getClickedBlock) Ich meine man weis ja nicht die genauen Koordinaten :D

Also ich benötige den Block in einer anderen Klasse, da es zwei verschiedene Events sind. Also der einte Event ist der PlayerInteractEvent und der Andere der InventoryClickEvent. Weil also in einem virtuellen Inventar muss man auf "annehmen" klicken damit der Block gesetzt wird. Und das Inventar öffnet sich halt durch die "spezielle" Goldschaufel.

 

Ich hoffe das war jetzt besser :D

Posted

Da brauchst du den Block doch gar nicht. Hol dir mit getLocation() die Position des Blockes und übergib sie als Parameter in die Funktion. Du kannst ja die Location direkt weiter verwenden.

 

 

Mfg,

Joey

Posted
vor 35 Minuten schrieb ServerHilfe:

sodass das der Block eins über der Location gespawnt wird (Also die Location vom e.getClickedBlock) Ich meine man weis ja nicht die genauen Koordinaten :D

Diese Koordinaten kannst du dir doch einfach selber zusammenholen.

 

Beispiel:

Block block = e.getClickedBlock();
Location loc = new Location(block.getLocation().getWorld(), block.getLocation().getBlockX(), block.getLocation().getBlockY() + 1, block.getLocation().getBlockZ());

Bei der Y-Koordinate findest du ein +1, das die Höhe um 1 erhöht.

 

Freundliche Grüße

BloodSKreaper

Posted

Meinst du das?

if(e.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§2§lAnnehmen")) {
            
            World world = p.getWorld();
            

        
    
            
                world.getBlockAt(0,0,0).setType(Material.GOLD_BLOCK);

Posted

Ah okay du willst das also so machen:
Spieler macht rechtsklick mit der Schaufel -> Inventar mit annehmen öffnet sich -> bei Klick auf Annehmen soll der Block gesetzt werden

 

Hierbei würde ich mit einer HashMap arbeiten.

Bei dem ClickEvent kannst du die Daten ja in die Hashmap speichern und mit dem InventoryClickEvent die Daten aus der Hashmap aufrufen.

Bsp: Hashmap mit Spieler-UUID und Location

 

Freundliche Grüße

BloodSKreaper

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...
B
B