Coding mit Java | Java-basierten APIs

  • Ersteller Ersteller ij9F_i0FaF-d9lrDSDDpDbfo
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
Ich kann die Action.TITLE nicht importieren. Mein Code ist im Anhang.

Was ist daran falsch?
Du kannst den JSON-String auch dynamisch machen und sogar auf Fehler verzichten. Das geht einfach mit:

PHP:
CraftChatMessage.fromString(String string, boolean keepNewLine);

Beim String kannst du deinen Text angeben, den boolean setze ich eigentlich immer auf true, da der dafür sorgt, dass (bin mir nicht ganz sicher) ein Zeilenumbruch gemacht wird (\n).

Du kannst deinen Text dann so angleichen:
PHP:
PacketAPI.getInstance().setTitle(p, PacketPlayOutTitle.Action.TITLE, CraftChatMessage.fromString("Herzlich Willkommen", true);

Farbcodes können dann dennoch ganz einfach weiterhin verwendet werden.
 
  • Like
Reaktionen: lusu007
Du kannst den JSON-String auch dynamisch machen und sogar auf Fehler verzichten. Das geht einfach mit:

PHP:
CraftChatMessage.fromString(String string, boolean keepNewLine);

Beim String kannst du deinen Text angeben, den boolean setze ich eigentlich immer auf true, da der dafür sorgt, dass (bin mir nicht ganz sicher) ein Zeilenumbruch gemacht wird (\n).

Du kannst deinen Text dann so angleichen:
PHP:
PacketAPI.getInstance().setTitle(p, PacketPlayOutTitle.Action.TITLE, CraftChatMessage.fromString("Herzlich Willkommen", true);

Farbcodes können dann dennoch ganz einfach weiterhin verwendet werden.

Ok das Gut. Danke :)

Dann brauch ich diese 'blöde' JSON Format nicht immer schreiben. :)
 
Ja JSON ist auch nicht blöd. Ich finde nur das das immer aufwendig ist die ganzen Klammern und so zu setzten. :)

"In computer science, in the context of data storage, serialization is the process of translating data structures or object state into a format that can be stored (for example, in a file or memory buffer, or transmitted across a network connection link) and reconstructed later in the same or another computer environment." - http://en.wikipedia.org/wiki/Serialization
D.h.: Server serialized Objekt -> Anderer Server deserialized Objekt später und kann es so weiter verwenden. In der Zwischenzeit wurde das Objekt z.B. in einer Datenbank gespeichert.
 
Code wäre recht angebracht.
Ok: Hier bekommst du einen Teil des Codes:

Map.java im Package de.Nico.timegames.voting

Code:
package de.Nico.timegames.voting;

import java.util.ArrayList;
import java.util.List;

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.omg.CORBA.portable.ValueOutputStream;

import de.Nico.timegames.Global;

public class Map {

    List<Location> loclist = new ArrayList<Location>();
    String name;
    public int vote;
   
    public Map(String name, List<Location> loclist){
        this.loclist = loclist;
        this.name = name;
        vote = 0;
    }
    public String getName(){
        return name;
    }
    public void addVote(){
        vote++;
    }
    public void spawnPlayers(){
        int i = 0;
        for(Player all : Bukkit.getOnlinePlayers()){
            all.teleport(loclist.get(i));                                                 //Zeile 34
            Global.locs.put(all.getName(), loclist.get(i));
            i++;
        }
    }
   
}

Hier ist der Fehler in Zeile 34

und Lobby.Jave in de.Nico.timegames.countdown

Code:
package de.Nico.timegames.countdown;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

import de.Nico.timegames.Global;
import de.Nico.timegames.Main;
import de.Nico.timegames.game.GameState;
import de.Nico.timegames.stats.Stats_Reader.Stats_Data;
import de.Nico.timegames.stats.Stats_Reader.Stats_Writer;
import de.Nico.timegames.utils.BossHealth;
import de.Nico.timegames.voting.Voting_Settings;

public class Lobby {
   
    public static int LobbyCounter = 120;
   
    public static void startLobby(){
       
        Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.getInstance(), new Runnable() {
           
            @SuppressWarnings("deprecation")
            public void run() {
               
            if(Main.status == GameState.LOBBY){   
               
                if(Bukkit.getOnlinePlayers().length >= 2){
                   
                    if(LobbyCounter == 120 || LobbyCounter == 90 || LobbyCounter == 60 || LobbyCounter == 30 || LobbyCounter == 15 || LobbyCounter == 10
                            || LobbyCounter == 5 || LobbyCounter == 4 || LobbyCounter == 3 || LobbyCounter == 2 || LobbyCounter == 1){
                        Bukkit.broadcastMessage(Main.pr+"§aDas Spiel Startet in §c"+LobbyCounter+" §aSekunden.");
                    }
                   
                    for(Player all : Bukkit.getOnlinePlayers()){
                        all.setLevel(LobbyCounter);
                        all.setExp(0);
                        double b = LobbyCounter;
                        BossHealth.displayText(all, "§3TimeGames §e| §aLobby §b"+LobbyCounter, b/120);
                    }
                    if(LobbyCounter == 12){
                        Global.voting = false;
                        Voting_Settings.endVote();
                        Bukkit.broadcastMessage(Main.pr+"Die Map "+Global.winMap.getName()+" hat das Voting mit "+Global.winMap.vote+" Stimmen gewonnen.");
                    }
                    if(LobbyCounter == 0){
                        Main.status = GameState.WARMUP;
                        Bukkit.broadcastMessage(Main.pr+"§6Das Spiel hat begonnen.");
                        WarmUp.startWarmUp();
                        Global.winMap.spawnPlayers();
                        for(Player all : Bukkit.getOnlinePlayers()){
                            all.getInventory().clear();
                            all.getInventory().setHelmet(null);
                            all.getInventory().setChestplate(null);
                            all.getInventory().setLeggings(null);
                            all.getInventory().setBoots(null);
                            all.setFoodLevel(20);
                            all.setHealth(20D);
                            all.setLevel(0);
                            all.setExp(0);
                            Global.alive.add(all.getName());
                            if(Main.sql == true){
                            Stats_Writer.addStats(Stats_Data.SpieleGespielt, all.getName(), 1);
                            }
                        }
                    }

                    LobbyCounter--;
                   
                }else{
                    for(Player all : Bukkit.getOnlinePlayers()){
                        all.setLevel(LobbyCounter);
                        all.setExp(0);
                        BossHealth.displayText(all, "§3TimeGames §e| §aLobby §cWarte...", 1);
                    }
                    LobbyCounter = 120;
                }
            }
            }
        }, 0L, 20L);
       
    }

}

Solltest du mehr brauchen schreib einfach. ;)
 
aber deswegen smiert doch nicht mein Server ab, aber danke
hat jemand noch eine Idee? Denn es ist total blöd, wenn Lobby und alle Maps auf einer Welt sein müssen?

//EDIT Ich hätte noch eine Frage, weiß jemand wie ich in Chest Heilungsppitions legen kann, also die genaue ID. Hier ist eine Beispielzeile:
items.add(new ItemStack(Material.ARROW,6))
 
Zuletzt bearbeitet:
hat jemand noch eine Idee? Denn es ist total blöd, wenn Lobby und alle Maps auf einer Welt sein müssen?

//EDIT Ich hätte noch eine Frage, weiß jemand wie ich in Chest Heilungsppitions legen kann, also die genaue ID. Hier ist eine Beispielzeile:
items.add(new ItemStack(Material.ARROW,6))

Bytes. Schau auf ner Id List nach um dann nach dem Material mit Komma getrennt und als short gecasted den Byte einzuspeichern.

Also

new ItemStack(Material.BANANE, (short | byte) 2)

Hierbei steht die 2 dafür dass die Banane schwarz und schrumpelig ist
 
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