Irgendwo in der Welt  - in der Region, in der du beim joinen spawnst - befindet sich ein Entity (Ein Monster, ein Tier, ein Spieler usw.) welches einen zu langen Namen besitzt (21 Zeichen, Minecraft erlaubt aber nur 16). Welches Entity genau das ist, geht aus der Fehlermeldung leider nicht hervor. Eventuell einmal alle Mobs auf der Map killen. Oder überprüfen ob dein Spielername zu lang ist.

...zur Antwort

Wenn du es Objektorientiert machen möchtest, solltest du zunächst ein Objekt von deiner ersten Klasse in der zweiten Klasse erzeugen und dann vom Objekt auf das Array zugreifen. Vielleicht hilft dieses Beispiel dir weiter:

Ganz wichtig ist das Schlüsselwort public beim Array! Sonst bekommst du leicht Probleme beim direkten Zugriff. Natürlich kann das ganze auch über Getter und Setter gelöst werden, ist aber aus meiner Sicht hier zu umständlich.

class BeispielKlasse2 {
void meineMethode(){
BeispielKlasse1 meinObjekt = new BeispielKlasse1();
irgendwas = meinObjekt.array[0]; // Lesender Zugriff auf das Array
}
}
class BeispielKlasse1{
public BeispielKlasse1(){} // Ein trauriger, leerer Konstruktor
public int[] array = new int[10]; // Ein Zahlen-Array mit 10 Feldern
}
...zur Antwort

Notch hat die Entwicklung von Minecraft sowohl in der Alpha als auch in der Beta Phase geleitet. Jeb ist erst seit 2011 der leitende Entwickler von Minecraft (http://minecraft-de.gamepedia.com/Markus_Persson)

Deswegen hat Notch definitiv mehr getan als "nur" die Mobs - so ziemlich der gesamte Kern des Spiels dürfte auch heute noch von ihm sein.

...zur Antwort

"Mehr Kerne zuweisen". Ungefähr so, als würdest du deinem PC befehlen, mehr Bananen zu essen.

Was du möchtest, ist Multithreading. Dein Betriebssystem kann Threads auf unterschiedliche Kerne legen um eine parallele Verarbeitung zu ermöglichen. Minecraft selbst unterstützt leider kaum Multithreading. OptiFine versucht dies zu optimieren, von daher würde ich sagen, du hast bereits alles getan um Multithreading zu ermöglichen. Wie diese Möglichkeiten jetzt genutzt werden, hängt von den Anwendungen ab.

Zudem muss Multithreading eine Anwendung auch nicht unbedingt beschleunigen. Wenn zum Beispiel Threads ständig aufeinander warten müssen, kann sich dies sogar negativ auf die Performance auswirken.

Bei der Hardware die du daruntergeschrieben hast, wundert mich allerdings, dass die Performance so einbricht. Mit meiner 780 kriegt die Grafikkarte auch bei SEUS Ultra keinerlei Probleme. Ich denke du solltest den Fehler an anderer Stelle suchen, z.B: Energiespareinstellungen? OptiFine Einstellungen?

Ich schreibe zurzeit auch an einem Blog-Post über dieses - gut bekannte - Thema. Der Post ist noch nicht ganz fertig, aber eventuell hilft er ja trotzdem:

http://aknm-craft.de/blog/?p=19

...zur Antwort
JAVA RMI Anwendung AccessControlException Exception. Finde den Fehler nicht.

Hallo Leute,

hab um RMI kennen zu lernen eine kleine Anwendung geschrieben.

Der Server startet auch noch, aber beim Starten des Clients kommt ein Fehler. Finde einfach nicht den Fehler vielleicht kann jemand Helfen?! Wenns geht auch mit Erklärung.

Hier die Server Klasse:

public static void main(String[] args) {

    try {
        String name = "TestRMI";

        if (System.getSecurityManager() == null) {
            System.setSecurityManager(new SecurityManager());
        }

        RemoteImpl remoteImplementation = new RemoteImpl();

        Registry registry = LocateRegistry.createRegistry(1199);

        registry.bind(name, remoteImplementation);

        System.out.println("Server started");
    }
    catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

Hier der Client :

  public static void main(String[] args) {
    try {
        if (System.getSecurityManager() == null) {
            System.setSecurityManager(new SecurityManager());
        }
        Registry registry = LocateRegistry.getRegistry("192.168.98.128", 1199);
        RemoteInterface testRemote = (RemoteInterface)registry.lookup("TestRMI");
        System.out.println(testRemote.isUsernameValid("Blub"));
        System.out.println(testRemote.isUsernameValid("test"));
        System.out.println(testRemote.isUsernameValid("hans"));
    }
    catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

Hier das Interface:

public interface RemoteInterface extends Remote {
public boolean isUsernameValid(String username) throws RemoteException;}

Hier die Interface Implementierung :

public class RemoteImpl extends UnicastRemoteObject implements RemoteInterface {

/**
 * 
 */
private static final long serialVersionUID = 1L;

protected RemoteImpl() throws RemoteException {

    super();
}

@Override
public boolean isUsernameValid(String username) throws RemoteException {

    if (username.equals("test")) {
        return true;
    }
    return false;
}}

Hier die Fehlermeldung die beim Öffnen des Clients kommt:

java.security.AccessControlException: access denied ("java.net.SocketPermission" "192.168.98.128:1199" "connect,resolve")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372)
at java.security.AccessController.checkPermission(AccessController.java:559)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkConnect(SecurityManager.java:1051)
at java.net.Socket.connect(Socket.java:574)
at java.net.Socket.connect(Socket.java:528)
at java.net.Socket.<init>(Socket.java:425)
at java.net.Socket.<init>(Socket.java:208)
...zum Beitrag

Ich kenne mich zwar nicht mit RMI aus, aber die Fehlermeldung besagt eindeutig, dass der SecurityManager des Clients die Verbindung ablehnt. Eventuell mal den SecurityManager zwingend überschreiben und nicht nur, wenn er null ist?

...zur Antwort

Eine Error Message. Ja, und welche?

...zur Antwort

Den gleichen Fehler erst letze Woche auf einem Firmenrechner gehabt :)

In den Umgebungsvariablen ist JAVA_HOME nicht gesetzt, bzw es fehlt der Pfad zu Java in der Path Umgebungsvariable. Kleines Youtube Video dazu:

https://www.youtube.com/watch?v=us6ChVrXQf0

...zur Antwort

Da Java keine Skriptsprache ist, gibt es auch keinen Minecraft/Java "Scripter". Abgesehen davon, gibt es keine (wirklich) guten Programmierer, die kostenlos für Kiddies arbeiten.

...zur Antwort

Aus meiner Sicht (Bin selber kein Minecraft-Client-Modder, nur Server) könnte das etwas schwierig werden. Minecraft verwendet http://www.lwjgl.org/ zum rendern. Um das Problem besser zu verstehen, habe ich mich ganz kurz in LWGL/OpenGL eingelesen. Ich habe das ganze so verstanden:

LWJGL unterstützt verschiedene OpenGL Versionen. Die Endanwendung (Minecraft) kann entscheiden, welche OpenGL Version von LWJGL verwendet werden soll. Minecraft verwendet offensichtlich bisher eine sehr alte OpenGL Version mit wenig Features. Die Entwickler wollen dies, laut deiner Meldung, wohl bald ändern - sie möchten mehr Funktionen nutzen, daher erhöhen sie die Mindestversion von OpenGL.

Im Prinzip musst du also diese Änderung, wenn Mojang sie gemacht hat, rückgängig machen. Die Version von OpenGL definiert sich durch die Imports im Quellcode

Beispiel: Wenn eine Anwendung OpenGL 11 verwenden will, nutzt sie den folgenden Import:

import static org.lwjgl.opengl.GL11.*;

Wenn du jetzt aber eine andere Version von OpenGL haben willst, muss nur dieser Import (auf eine ältere Version) geändert werden. Das Problem was dabei aber sicher auftritt, ist dass dann verschiedene Techniken die Minecraft zum rendern verwendet nicht mehr funktionieren werden, denn diese Techniken sind schließlich auf die importierte OpenGL Version ausgerichtet. Einfach mal die OpenGL Version ändern, kann das natürlich zerstören. Eventuell funktionieren manche Methoden nicht mehr (Minecraft kompiliert nicht oder crasht), oder es treten Bildfehler auf, usw.... Das müsstest du dann natürlich alles per Hand fixen. Und dafür muss man sich mit der Renderengine von Minecraft schon verdammt gut auskennen.

So habe ich das ganze Problem verstanden. Ich bin jedoch kein Experte für OpenGL oder LWJGL und daher sind alle Angaben ohne Gewähr :)

MFG Nummer378

...zur Antwort

Ich kenne zwar weder so ein Plugin noch Varo 2, aber ich kann mir durchaus vorstellen wie das ganze funktioniert.

Zuallererst gibt es ein Plugin auf dem Minecraft Server. Dieses horcht über einen Event-Listener, wann ein Spieler den Server betritt. Nachdem dies passiert ist, gibt das Plugin die Information an einen Skype-Bot weiter (Der auf irgendeinem Server läuft, eventuell sogar ein in direkt ins Bukkit Plugin integrierter Skype Bot). Der Bot schreibt daraufhin eine Nachricht in eine Gruppe. Simples Prinzip. Das einzig komplizierte daran ist wohl der Skype Bot selbst, denn so ein Bot ist nicht ganz leicht zu programmieren (Eine Grundvorraussetzung ist zum Beispiel eine exakte Kenntnis des Skype-Datentransferprotokolls).

Kurzes googeln ergibt aber, dass es ganz offensichtlich schon eine Menge Skype Bots (z..B der hier http://sourceforge.net/projects/skype-bot/) in verschiedenen Programmiersprachen gibt. Von daher kann man sich die Arbeit sparen und einfach so einen Bot in sein Plugin reinkopieren.

MFG Nummer378

...zur Antwort
Minecraft Programmieren : Kiste öffnen richtig cancelln

Hallo Leute, ich programmiere gerade ein Minispiel. Wie in vielen Spielen blockt man auch das Kisten öffnen. (Außer natürlich bei Minispielen, wo Kisten etc... benötigt werden)... Ich habe mit dem InventoryOpenEvent probiert das Kisten öffnen zu verhindern:

@EventHandler
public void onInventoryOpen(InventoryOpenEvent e) {
    
    if(e.getView().getType() != null) {
            
            
        if(e.getView().getType() == InventoryType.CHEST) {
            
            e.setCancelled(true);
            
        }

        if(e.getView().getType() == InventoryType.BEACON) {
                
            e.setCancelled(true);
                
        }
        
        if(e.getView().getType() == InventoryType.BREWING) {
                
            e.setCancelled(true);
                
        }
        
        if(e.getView().getType() == InventoryType.ANVIL) {
            
            e.setCancelled(true);
            
        }
        
        if(e.getView().getType() == InventoryType.CRAFTING) {
            
            e.setCancelled(true);
            
        }
        
        if(e.getView().getType() == InventoryType.DISPENSER) {
        
            e.setCancelled(true);
            
        }
        
        if(e.getView().getType() == InventoryType.DROPPER) {
            
            e.setCancelled(true);
            
        }
        
        if(e.getView().getType() == InventoryType.ENCHANTING) {
            
            e.setCancelled(true);
        
        }
        
        if(e.getView().getType() == InventoryType.ENDER_CHEST) {
            
            e.setCancelled(true);
            
        }
        
        if(e.getView().getType() == InventoryType.FURNACE) {
            
            e.setCancelled(true);
            
        }
        
        if(e.getView().getType() == InventoryType.HOPPER) {
            
        e.setCancelled(true);
            
        }
            
        if(e.getView().getType() == InventoryType.WORKBENCH) {
                
            e.setCancelled(true);
                
        }
            
        if(e.getView().getType() == InventoryType.MERCHANT) {
            
            e.setCancelled(true);
            
        }
            
    }
    
}
    

Das ganze funnktioniert relativ gut. Das Inventar wird geschlossen. Aber die Kiste bleibt offen... Zeit schließt sie sich wieder. Es sieht also so aus als würde ein Unsichtbarer die Kiste noch geöffnet haben.

Wie kann ich das unterbinden? Sodass die Kiste wie bei Gommehd.net auch zu bleibt?

...zum Beitrag

Du könntest versuchen, das öffnen der Truhe bereits bei einem früheren Event abzufangen - Hier wäre das zum Beispiel das PlayerInteractEvent. Das PlayerInteractEvent wird aufgerufen, wenn ein Spieler Links- oder Rechtsklickt. Hier müsstest du überprüfen, ob der entsprechende Block eine Truhe (oder ein anderer Block mit Inventar) ist und dann einfach das Event canceln.

MFG Nummer378

...zur Antwort

Könntest du den Client-Crash mal senden? Der könnte Aufschluss über das Problem geben.

...zur Antwort

Welche Java Version ist installiert?

Welche Fehlermeldung taucht auf?

...zur Antwort

Zu 100% kann dir das niemand sagen, da immer etwas schiefgehen kann. In wirklich fast allen Fällen (Sagen wir, ungefähr 99,9%) funktioniert es aber. Minecraft besitzt einen internen Konvertierer, der auch Serverwelten übersetzt - für die 1.8 ist dies aber, nach meinem Wissen, nicht nötig. Ich habe meine Server-Welt ebenfalls nach 1.8 geportet und es läuft alles wunderbar. In neuen Chunks, die in der 1.8 generiert werden, werden ebenfalls die neuen Biome sowie die neuen Strukturen generiert.

Also lautet meine Antwort auf beide Fragen Ja :)

Ein vorheriges Backup der Welt ist trotzdem immer eine gute Idee.

PS: Die Formulierung "in die minecraft_server.exe" einfügen, ist irreführend. In die .exe wird nix eingefügt :) Du ersetzt lediglich die alte server.exe/jar durch eine neue :) Der Rest bleibt wie es ist.

MFG Nummer378

...zur Antwort

Wie wäre es mit einem vollständigen Launcher Log?

...zur Antwort

Jop kann man. In der spigot.yml

sample-count: 12

auf 0 setzen.

Kleiner Auszug aus dem Spigot Wiki:

Description: Controls the amount of (randomly chosen) sample players shown when     hovering over the player count in the client's server list.
...zur Antwort

Wenn Heap und Stack wirklich mit der angegeben Größe von 2 GB erzeugt wurden, kann Java nicht mehr verbrauchen - Zumindest ist das bei allen mir bekannten Implementationen so. Eventuell ein Problem mit der Umrechnung von Bytes in Gigabytes? Ansonsten fällt mir auch nicht mehr viel dazu sein...

...zur Antwort

Das kommt mit den neuen Java Versionen (Java 8, denke ich). Viele Flags, also Kommandozeilenparameter die in Java 7 oft verwendet wurden, um die JVM ein bisschen zu optimieren, sind jetzt veraltet und sollten in Java 8 nicht mehr verwendet werden. Nimm einfach die entsprechenden Parameter weg, oder lass es, denn wie PerfectMuffin schon sagte: Das ist keine Fehlermeldung, nur eine Warnung.

...zur Antwort