• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Entity - Custom Name setzen

Felix.

Redstoneengineer
Registriert
10 April 2020
Beiträge
40
Diamanten
253
Moin, ich möchte ein Entity ein custom Name setzen.
Leider möchte er das mit dem folgenden Code nicht:
Java:
package de.devfelix.listeners;

import java.io.File;
import java.io.IOException;

import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntitySpawnEvent;

import de.devfelix.utils.WorldFiles;

public class MobSpawnListener implements Listener {
    
    @EventHandler
    public void onSpawn(EntitySpawnEvent event) {
        
        Entity entity = event.getEntity();

        File worldconfig = new File("plugins/MobSpawner", event.getLocation().getWorld().getName());
        FileConfiguration  world = YamlConfiguration.loadConfiguration(worldconfig);
        
        if(world.getBoolean("Mobs.Normal")) {
       }else {
           if(event instanceof LivingEntity) {
                  
               int fulllive = world.getInt("Mobs." + event.getEntityType().getName() + ".Level") * 10;
              
               String custommobname = world.getString("Mobs.NameLayout").replace("%mobname%", entity.getName().replace("%moblevel%", world.getInt("Mobs.") + event.getEntityType().getName() + ".Level").replace("%mobhearts%", "§c" + ((LivingEntity) event).getHealth() + "/" + fulllive));
              
               ((LivingEntity) event).setCustomName(custommobname);
               ((LivingEntity) event).setCustomNameVisible(true);
              
               Bukkit.broadcastMessage(custommobname);
              
           }
       }
            
        
        
        
    }
    
    
}
Ich denke es liegt daran, da er nicht durch die LivingEntity abfrage kommt, aber warum? Wenn ich z.b. einen Creeper Spawne, ist das ja ein Lebendes Entity.
Vielen dank für eure Hilfe!
 

Felix.

Redstoneengineer
Registriert
10 April 2020
Beiträge
40
Diamanten
253
Hab es gesehen.
event.getEntity()
wars gewesen.
Nun habe ich aber eine andere Fehlermeldung:
Java:
org.bukkit.event.EventException: null
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:319) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:589) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:576) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at org.bukkit.craftbukkit.v1_16_R1.event.CraftEventFactory.callCreatureSpawnEvent(CraftEventFactory.java:617) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at org.bukkit.craftbukkit.v1_16_R1.event.CraftEventFactory.doEntityAddEventCalling(CraftEventFactory.java:554) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.WorldServer.addEntity0(WorldServer.java:911) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.WorldServer.addEntity(WorldServer.java:841) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.EntityTypes.spawnCreature(EntityTypes.java:179) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.EntityTypes.spawnCreature(EntityTypes.java:172) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.EntityTypes.spawnCreature(EntityTypes.java:166) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.ItemMonsterEgg.a(ItemMonsterEgg.java:62) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.ItemStack.placeItem(ItemStack.java:174) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.PlayerInteractManager.a(PlayerInteractManager.java:488) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.PlayerConnection.a(PlayerConnection.java:1284) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:27) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:1) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.TickTask.run(SourceFile:18) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.IAsyncTaskHandler.executeTask(SourceFile:144) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.IAsyncTaskHandler.executeNext(SourceFile:118) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.MinecraftServer.aZ(MinecraftServer.java:943) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.MinecraftServer.executeNext(MinecraftServer.java:936) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.IAsyncTaskHandler.awaitTasks(SourceFile:127) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.MinecraftServer.sleepForTick(MinecraftServer.java:920) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.MinecraftServer.v(MinecraftServer.java:852) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at net.minecraft.server.v1_16_R1.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_261]
Caused by: java.lang.ClassCastException: org.bukkit.event.entity.CreatureSpawnEvent cannot be cast to org.bukkit.entity.LivingEntity
        at de.devfelix.listeners.MobSpawnListener.onSpawn(MobSpawnListener.java:34) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_261]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_261]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_261]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_261]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:315) ~[spigot.jar:git-Spigot-0287a20-7560f5f]
        ... 28 more
Kenne dieses CreatureSpawnEvent nicht. Kannst du mir da auch helfen?

bzw. ihr
 

Malfrador

Threadripper
Registriert
16 Juni 2013
Beiträge
1.473
Diamanten
396
Minecraft
Malfrador
Statt § solltest du ChatColor nutzen.

Was meinst du mit "die rote Zahl bekommen"? Möchtest du das Leben aus dem Namen auslesen? Ich halte das eher für eine schlechte Idee, zumindest wenn mit dieser Information signifikante Dinge passieren sollen. Wenn es nur ist, um z.B. einen Effekt zu zeigen ist es wahrscheinlich okay.
Wenn alle Mob-Namen dieses Format mit den | haben, kannst du den String doch einfach bei | splitten. Dann hast du ein Array mit insgesamt drei Strings, und Array[2] wäre dann dein "§c10".
 

Felix.

Redstoneengineer
Registriert
10 April 2020
Beiträge
40
Diamanten
253
Und wie kann ich diesen String splitten?
Meine Grundvorstellung war, das man in einer Config Level für das Monster einstellen kann.
Die Level werden *10 genommen und als "Leben" im Namen angezeigt. Wobei die eigentlichen Leben des Monsters immernoch nur die standardgemäßen Leben sind, und sie immer wieder bei jedem schlag zurückgesetzt werden. Beim DamageEvent wird der Name geupdated, sprich wenn ein Spieler auf das Monster schlägt, wollte ich mir die Leben holen, und sie mit dem Schaden, den der Spieler gemacht hat minus rechnen. Wenn die Leben kleiner als 0 sind, stirbt das Monster.
Das war meine gesammte Vorstellung.
Also wie ich den String splitten kann würde reichen
 
Zuletzt bearbeitet von einem Moderator:

Felix.

Redstoneengineer
Registriert
10 April 2020
Beiträge
40
Diamanten
253
Damit kann ich schon eher was anfangen. Ich recherchiere mal.
Also, ich sehe leider keinen Besseren Weg, da ich dafür jetzt z.b. nicht unbedingt eine Config erstellen möchte, wo ich die Daten reinspeicher. Gibt es wirklich keinen Weg, die Zahl zu bekommen, außer mit dem Splitten. Habe mit dem Splitten gegoogelt und bin nicht weiter gekommen.
 
Zuletzt bearbeitet von einem Moderator:
Oben