Hey,

die Exception "java.net.connectexception connection timed out no further information" bedeutet im Grunde nur, dass die Verbindung in einer bestimmten Zeit nicht hergestellt werden konnte und es sozusagen aufgegeben wurde. Folgende Probleme können das sein:

  • Der Server von Hypixel sperrt dich in irgendeiner Art, so dass er dir nicht antwortet.
  • Irgendwer zwischen dir und dem Server von Hypixel blockiert die Verbindung (Router, Internetanbieter, etc)
  • Und zu guter Letzt deine Firewall blockiert die ausgehende Verbindung.

welcher dieser drei Möglichkeiten nun bei dir der Fall ist lässt sich herausfinden indem du bestimmte Tests ausführst.

Am einfachstem ist es einmal eine Konsole zu öffnen und "ping <die ip von hypixel>" einzugeben und anschliessend zu schauen was passiert und uns ggf. teil haben lässt.

Um zu testen ob es an deinem Minecraft-Account liegt würde ich dir empfehlen mal zu versuchen dich von irgendwo anders anzumelden, wenn dies möglich ist.

Zudem, auch wenn ich es nicht empfehle, könntest du mal versuchen die Firewall zu deaktivieren. Aber nur kurz!

MfG

...zur Antwort
Pluginsystem in Java?

Hey,

ich habe angefangen, ein Pluginsystem in Java zu schreiben. Es soll ähnlich fungieren wie das von Bukkit.
So habe ich mir ein paar Internetseiten gesucht, die mir erklären wie das geht. Doch wenn ich es versuche gibt es folgendes Problem.

Hier der Loader

public class AddonLoader implements KObject
{
    
    /**
     * Scans for addons, which are stored in the directory given.
     *
     * @param directory given, where to search for the apis.
     */
    public void scan(File directory)
    {
        if (!directory.getJavaFile().isDirectory())
        {
            if (!directory.getJavaFile().delete() || !directory.getJavaFile().mkdir())
            {
                log("An error occurred when creating the directory of the apis. Try creating it manually (" + directory.getJavaFile().getAbsolutePath() + ")", null);
                return;
            }
            
        }
        
        Stream.of(Objects.requireNonNull(directory.getJavaFile().listFiles((dir, name) -> name.toLowerCase().endsWith("jar")))).forEach(this::load);
    }
    
    /**
     * Loads a file and adds them to the system class loader.
     *
     * @param file The file to add.
     */
    @SneakyThrows private void load(java.io.File file)
    {
        JarFile jarFile = new JarFile(file);
        Manifest manifest = jarFile.getManifest();

        AddonDescription addonDescription = new AddonDescription() {
            @Override public String getName()
            {
                return manifest.getMainAttributes().getValue("Plugin-Name");
            }
    
            @Override public String getAuthor()
            {
                return manifest.getMainAttributes().getValue("Built-By");
            }
    
            @Override public String getDescription()
            {
                return  manifest.getMainAttributes().getValue("Plugin-Description");
            }
    
            @Override public String getVersion()
            {
                return manifest.getMainAttributes().getValue("Plugin-Version");
            }
        };
        
        if(addonDescription.getName() == null || addonDescription.getVersion() == null)
        {
            log("Not readable API detected. (" + file.getAbsolutePath() + ")", null);
        }
    
        Package jarPackage = new PackageCore("", jarFile);
    
        AddonClassLoader addonClassLoader = new AddonClassLoader(file, addonDescription);
        jarPackage.getUnsafeClasses().forEach(clazz ->
        {
            try
            {
                addonClassLoader.loadClass(clazz);
            }
            catch (ClassNotFoundException e)
            {
                e.printStackTrace();
            }
        });
    }
}

Wenn ich nun die Klasse lade, kommt

ClassNotFoundException

bei Klassen die aus dem Host stammen.

Hoffe ich habe es verständlich erklärt und jemand hat eine Ahnung, wie das zu beheben ist.

MfG MübenRübe

...zum Beitrag

Hey,

ich habe das Problem nun selbst lösen können.
Wie ich beschrieben hatte, konnte ich keine Klassen verwenden, die vom Projekt stammten, die die Datei geladen hat, doch durch einen kleinen Workaround kann ich nun die Klasse nutzen, wie ich es will.

Hierzu habe ich einfach meinen eigenen ClassLoader erstellt, welcher auch andere ClassLoader überprüft.

Geholfen dabei hat mit BungeeCord.
https://github.com/SpigotMC/BungeeCord/blob/34d416a4e8d6f6d73c8fd6ff8df3ffcefc2b34f2/api/src/main/java/net/md_5/bungee/api/plugin/PluginClassloader.java

Wer sich meinen Code ansehen möchte, kann dies hier tun:

AddonClassLoader: https://gist.github.com/da83d34cee4e75a065822200e397ac1c
AddonLoader: https://gist.github.com/Plugrol/49458328ce13a1ccf238364b0ee2de56

Schönen Tag euch!

MfG MübenRübe

...zur Antwort

Hey, du musst ein Artifakt erstellen, was in der Projektstruktur machbar ist.

Hier mehr Info

https://www.jetbrains.com/help/idea/working-with-artifacts.html

Wenn du natürlich maven oder ähnliches benutzt, kannst du dir Befehle nutzen.

MfG MübenRübe

...zur Antwort