Coding mit Java | Java-basierten APIs

  • Ersteller Ersteller ij9F_i0FaF-d9lrDSDDpDbfo
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
Wenn du den Random auf maximal +1 und minimal auf -1 begrenzt nicht. Oder?
 
So viel ich weiss nicht, bei naturally wird auch ein random dazugerechnet, den kann man aber einfach nicht bestimmen, deshalb muss man den manuell mit dropitem machen, wenn man genau sagen will wie viel spielraum gegeben ist ;)

Hoffe man versteht das einigermaßen...

Mfg
 
Guter Ansatz, aber das funktioniert leider nicht immer, da die Spawner nicht immer am Boden sind.

Ich bilde mir ein, es gibt dafür eine Einstellung in der spigot.yml oder in der bukkit.yml

Aber ich weiß nicht, wie die heißt.
 
Guter Ansatz, aber das funktioniert leider nicht immer, da die Spawner nicht immer am Boden sind.

Ich bilde mir ein, es gibt dafür eine Einstellung in der spigot.yml oder in der bukkit.yml

Aber ich weiß nicht, wie die heißt.
Wo ist das Problem, wenn die Spawner nicht am Boden sind?
 
Das Problem ist dann, dass die Spawnlocation dann in Blöcken sein kann da wir x und z ändern.
 
Achso du meinst das so... Du hast recht, dann muss man entweder mehrere „Spawnarten” einführen z.B eine für am Boden und eine für in der Luft oder man macht noch eine Methode die prüft, ob der Spawn geeignet ist für meine Konstruierten oder nicht, oder man macht die Spawns einfach immer am Boden ;)

mfg
 
Hey Leute,

nach längerer Zeit melde ich mich mal wieder, da ich einfach nicht weiter weiß. Ich möchte einem Item einen eigenen NBT-Tag setzten und dann in einem Event (z.B. InteractEvent) diesen Tag abfragen. So weit so gut. Ich habe mich zu NBT-Tags informiert und eine Klasse nach einem Tutorial von JanHektor programmiert und für meine Bedürfnisse abgeändert. Doch habe ich das Problem, dass der NBT-Tag nicht auf das Item gesetzte wird. Ich habe mit dem NBTExplorer nachgeschaut. Leider ist nichts zu finden.
Das nächste Problem ist das bei dem besagten Event ein NullPointer kommt, was aber nicht verwunderlich ist, da er den Tag ja nicht finden kann.

Jetzt ist meine Frage: Wodran liegt das, dass der Tag nicht gesetzt wird?


PHP:
package de.blockbreaker.lobby.api.nbt;

import net.minecraft.server.v1_8_R3.NBTTagCompound;
import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftItemStack;
import org.bukkit.inventory.ItemStack;


public class NBTUtil {

    public static ItemStack setName(ItemStack bukkititem, String invname) {
        net.minecraft.server.v1_8_R3.ItemStack item = CraftItemStack.asNMSCopy(bukkititem);
        NBTTagCompound tag = item.hasTag() ? item.getTag() : new NBTTagCompound();
        tag.setString("name-id", invname);
        item.setTag(tag);
        return CraftItemStack.asBukkitCopy(item);
    }

    public static boolean isItem(ItemStack bukkititem) {
        net.minecraft.server.v1_8_R3.ItemStack item = CraftItemStack.asNMSCopy(bukkititem);
        if(item.hasTag()) {
            NBTTagCompound tag = item.getTag();
            return tag.hasKey("name-id");
        }
        return false;
    }

    public static String getName(ItemStack bukkititem) {
        net.minecraft.server.v1_8_R3.ItemStack item = CraftItemStack.asNMSCopy(bukkititem);
        if(item.hasTag()) {
            NBTTagCompound tag = item.getTag();
            return tag.getString("name-id");
        }
        return null;
    }
}
PHP:
package de.blockbreaker.lobby.system.events;

import de.blockbreaker.lobby.api.nbt.NBTUtil;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;

public class InventoryEvents implements Listener {

    @EventHandler
    public void onClick(InventoryClickEvent e) {
        ItemStack item = e.getCurrentItem();

        if(NBTUtil.isItem(item)) {
           if(NBTUtil.getName(item).equals("nav")) {
               e.setCancelled(true);
           }
        }

        e.setCancelled(false);
    }
}

Ich hoffe ihr könnt mir helfen. Sonst frage ich wieder den Displayname des Items ab,

Gruß,
-lusu007
 
HeyHou Leute!

Ich würde gerne eine Abfrage machen ob ein Quartz Block dort ist, wenn ja spawnt dort auf dem Quartz Block ne Truhe, habt ihr irgendeine Idee wie ich sowas machen soll?

Würde mich über eine Antwort freuen. : )

MfG Pecho
 
Du frägst mit getBlockAt() ab, ob dort der Quarzblock ist und wenn ja, setzt du dort den Block mit getBlockAt().setType() Ich weiß nicht ob es richtig ist, da ich am Handy bin! Müsste aber so oder so ähnlich funktionieren.
 
  • Like
Reaktionen: Aaronmacaron
Das ist schwierig, da müsste man nämlich die ganze Welt auf Quarz Blöcke prüfen, und die kann ganz schön gross sein ... :/
 
@EventHandler
public void join(PlayerJoinEvent event) {

Player player = event.getPlayer();

if(player.getWorld.getBlockAt(loc).equals(Material.QUARZ_BLOCK) {

player.getWorld().getBlockAt(loc).setType(Material.CHEST);

}
}
 
  • Like
Reaktionen: Aaronmacaron
@EventHandler
public void join(PlayerJoinEvent event) {

Player player = event.getPlayer();

if(player.getWorld.getBlockAt(loc).equals(Material.QUARZ_BLOCK) {

player.getWorld().getBlockAt(loc).setType(Material.CHEST);

}
}
Stimmt, ich habe einen Denkfehler gemacht xD
 
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