Coding mit Java | Java-basierten APIs

  • Ersteller Ersteller ij9F_i0FaF-d9lrDSDDpDbfo
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
hey :D wie füge ich neue dinge hinzu die geangelt werden können oder entferne beispielsweise den Fisch? also jetzt nicht das neue item einfach in das inventar packen, sondern richtig angeln.
im PlayerFishEvent gibt es keine liste mit dingen die gefischt werden können abzurufen.

danke!! :) :)
 
hey :D wie füge ich neue dinge hinzu die geangelt werden können oder entferne beispielsweise den Fisch? also jetzt nicht das neue item einfach in das inventar packen, sondern richtig angeln.
im PlayerFishEvent gibt es keine liste mit dingen die gefischt werden können abzurufen.

danke!! :) :)
hallu ? wäre echt mega nett wenn mir jemand helfen kann!! :D
 
hallu ? wäre echt mega nett wenn mir jemand helfen kann!! :D
Ich habe dir mal nen Quellcode gemacht.

@EventHandler
public void onPlayerFish(PlayerFishEvent event) {
if (event.getState() == PlayerFishEvent.State.CAUGHT_FISH) {
Player player = event.getPlayer();
player.getInventory().addItem(new ItemStack(Material.COOKED_FISH));
event.setCancelled(true);
}
} Eigendlich so. Allerdings kommt fas Item direkt ims Inventar. Und nicht geflogen.
 
Wie es oben ist sollte es gehen. Ist aber nicht getestet.
Hier mal Code, weil es doch manche gibt, die immer Code als Erklärung sehen wollen [Alles nur so, wie ich es machen würde :P]:
Code:
@EventHandler
public void onPlayerFishEvent( PlayerFishEvent event ) {
  if( event.getState() == PlayerFishEvent.State.CAUGHT_FISH ) { // Mit dem State kann man herausfinden ob der Angelhaken gerade ausgeworfen, oder aber ein Fisch eingefangen wird. (uvm.)
    ((Item) event.getCaught()).getItemStack(); // Das hier ist das Item.
    event.getHook(); // Das ist der Angelhaken.
  }
}
 
  • Like
Reaktionen: Sheigutn
Hier mal Code, weil es doch manche gibt, die immer Code als Erklärung sehen wollen [Alles nur so, wie ich es machen würde :p]:
Code:
@EventHandler
public void onPlayerFishEvent( PlayerFishEvent event ) {
  if( event.getState() == PlayerFishEvent.State.CAUGHT_FISH ) { // Mit dem State kann man herausfinden ob der Angelhaken gerade ausgeworfen, oder aber ein Fisch eingefangen wird. (uvm.)
    ((Item) event.getCaught()).getItemStack(); // Das hier ist das Item.
    event.getHook(); // Das ist der Angelhaken.
  }
}
ja :D aber wenn ich getCaught() zum item caste und daraus den itemstack ziehe bearbeite ich aber den gefangenen, will aber neue Dinge hinzufügen.
 
Funktioniert! :D

nun aber zu einer anderen sache. ich habe einen text, der mir wenn ich den mit dem commandblock ausführe ein beschriebenes buch ins inventar packt. in diesem buch ist der text bunt, man kan auf die wörter klicken etc. wie gebe ich ingame jemanden so ein buch? der json text enthält ja Kommata, Strings etc.

vielen Dank! :rolleyes:
 
Funktioniert! :D

nun aber zu einer anderen sache. ich habe einen text, der mir wenn ich den mit dem commandblock ausführe ein beschriebenes buch ins inventar packt. in diesem buch ist der text bunt, man kan auf die wörter klicken etc. wie gebe ich ingame jemanden so ein buch? der json text enthält ja Kommata, Strings etc.

vielen Dank! :rolleyes:
Du könntest das Buch speichern. (Wenn man das Item in der Hand hat /bookcopy oder so Ausführen) Und wenn der Spieler dann Joined bekommt er eben dieses Gespeicherte Buch. Ich habe man angenommen, das du dem Spieler das Buch beim Joinen gibst.
 
Hallo Gommunity :D
Ich habe ein Problem mit ein Code.
Ich habe ein gutes Bedwars Plugin, allerdings kann TNT auch die Map zerstören.
Deswegen habe ich ein Code gesucht wo nur bestimmte Blöcke von TNT zerstört werden.
Ich bin zu einen etwas älteren Thread hier im Forum gestoßen: https://www.gommehd.net/threads/plugin-programmieren-tnt-soll-nur-ein-bed-zerstoeren-koennen.30549/
Ich habe das im meinen Code eingebaut und hier ist mein Code:
Code:
package com.github.superyoshi1000.choosetnt;


import java.util.Iterator;

import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Entity;
import org.bukkit.entity.TNTPrimed;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class ChooseTNT extends JavaPlugin {

    @EventHandler
    public void onTntExplode( EntityExplodeEvent event ) {
        Entity entity = event.getEntity();
        if ( entity instanceof TNTPrimed ) {
            Iterator<Block> blockIterator = event.blockList().iterator();
            while ( blockIterator.hasNext() ) {
                if ( !blockIterator.next().getType().equals( Material.BED_BLOCK ) ) {
                    blockIterator.remove();
                }
            }
        }
    }

}
Allerdings funktioniert das iwie nicht.
Habe jetzt nicht so viel Ahnung von Java, aber kann mir jmd. helfen was ich falsch gemacht habe?

//Edit Natürlich wenn es funktioniert trage ich statt BED_BLOCK die Blöcke die es in BW gibt ein, da weiß ich wie das geht :)
 
Hallo Gommunity :D
Ich habe ein Problem mit ein Code.
Ich habe ein gutes Bedwars Plugin, allerdings kann TNT auch die Map zerstören.
Deswegen habe ich ein Code gesucht wo nur bestimmte Blöcke von TNT zerstört werden.
Ich bin zu einen etwas älteren Thread hier im Forum gestoßen: https://www.gommehd.net/threads/plugin-programmieren-tnt-soll-nur-ein-bed-zerstoeren-koennen.30549/
Ich habe das im meinen Code eingebaut und hier ist mein Code:
Code:
package com.github.superyoshi1000.choosetnt;


import java.util.Iterator;

import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Entity;
import org.bukkit.entity.TNTPrimed;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class ChooseTNT extends JavaPlugin {

    @EventHandler
    public void onTntExplode( EntityExplodeEvent event ) {
        Entity entity = event.getEntity();
        if ( entity instanceof TNTPrimed ) {
            Iterator<Block> blockIterator = event.blockList().iterator();
            while ( blockIterator.hasNext() ) {
                if ( !blockIterator.next().getType().equals( Material.BED_BLOCK ) ) {
                    blockIterator.remove();
                }
            }
        }
    }

}
Allerdings funktioniert das iwie nicht.
Habe jetzt nicht so viel Ahnung von Java, aber kann mir jmd. helfen was ich falsch gemacht habe?

//Edit Natürlich wenn es funktioniert trage ich statt BED_BLOCK die Blöcke die es in BW gibt ein, da weiß ich wie das geht :)

Code:
    @EventHandler
    public void onTntExplode( EntityExplodeEvent event ) {
        Entity entity = event.getEntity();
        if ( entity instanceof TNTPrimed) {

            for(Block b : event.blockList()) {

                if(b.getType() == Material.BED_BLOCK) {

                    event.blockList().remove(b);
                }
            }
        }
    }


Müsste gehen...aber nicht getestet.
 
Status
Für weitere Antworten geschlossen.

Soziale Medien

  • X
  • TikTok

Über uns

  • GommeHD.net ist einer der größten Minecraft-Server der Welt. Dir gefällt unser Server? Dann unterstütze uns durch einen Kauf im Shop!
  • Shop