Coding mit Java | Java-basierten APIs

  • Ersteller Ersteller ij9F_i0FaF-d9lrDSDDpDbfo
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
Hey gleich nochmal in der Console wird immer angezeigt Invaild plugin.yml?!
Mein Plugin.yml ist so aufgebaut....
Name: BowShot
Version: 1.0
Author: Timmi

Main: Bowshot


Mache ich bei Main was falsch da in der Console auch noch steht plugin.yml can not find
MfG Timmi
Alles vor dem Doppelpunkt in lowercase. Bei main: muss der komplette Klassenpfad (case-sensitive,packagepfad.Klassenname) stehen.
 
@Datenstau Bei mir gibt es noch einen Fahler mit dem .foreach Befehl (siehe Screenshot).
Bukkit hat ab 1.7.9 eingebaut, dass es 2 getOnlinePlayers() Methoden gibt, die gleich benannt sind. Da aber die eine Methode ein Array des Typs Player, die andre aber eine Collection mit dem Typ Player zurückgibt, kann kein forEach Call darauf ausgeübt werden, da der forEach Call nur auf die Collection eine Funktion hat. Das nennt sich "ambigous" (mehrdeutig). Deshalb musst du eine normale ForEach-Schleife benutzen (for(Player player : Bukkit.getOnlinePlayers()))
 
  • Like
Reaktionen: Datenstau
Bukkit hat ab 1.7.9 eingebaut, dass es 2 getOnlinePlayers() Methoden gibt, die gleich benannt sind. Da aber die eine Methode ein Array des Typs Player, die andre aber eine Collection mit dem Typ Player zurückgibt, kann kein forEach Call darauf ausgeübt werden, da der forEach Call nur auf die Collection eine Funktion hat. Das nennt sich "ambigous" (mehrdeutig). Deshalb musst du eine normale ForEach-Schleife benutzen (for(Player player : Bukkit.getOnlinePlayers()))

Muss ich auch eine normale for() Schleife bei Java 8 benutzen?
 
Bukkit hat ab 1.7.9 eingebaut, dass es 2 getOnlinePlayers() Methoden gibt, die gleich benannt sind. Da aber die eine Methode ein Array des Typs Player, die andre aber eine Collection mit dem Typ Player zurückgibt, kann kein forEach Call darauf ausgeübt werden, da der forEach Call nur auf die Collection eine Funktion hat. Das nennt sich "ambigous" (mehrdeutig). Deshalb musst du eine normale ForEach-Schleife benutzen (for(Player player : Bukkit.getOnlinePlayers()))
Deswegen lieber die Spigot-API nehmen. Dort geht es. Entweder per Maven-Integration zur pom.xml adden:
Code:
    <repositories>
        <repository>
            <id>spigot-repo</id>
            <url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
        </repository>
     </repositories>


    <dependencies>
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot-api</artifactId>
            <version>1.8-R0.1-SNAPSHOT</version>
            <type>jar</type>
            <scope>provided</scope>
        </dependency>
    </dependencies>

Oder aus deinem Spigot-BuildTools ordner nehmen und zum BuildPath adden.
 
Muss ich auch eine normale for() Schleife bei Java 8 benutzen?
Wie meinst du das?
For-schleifen gehören zu den Java Basics, sie werden nie entfernt werden. ForEach calls gehören seit Java 8 zum Iterable interface. Dies wird von allen Maps,Sets etc implementiert. Man kann es statt einer foreach-schleife verwenden. In manchen fällen ist dies hilfreich, in manchen wiederum nicht.
 
Deswegen lieber die Spigot-API nehmen. Dort geht es. Entweder per Maven-Integration zur pom.xml adden:
Code:
    <repositories>
        <repository>
            <id>spigot-repo</id>
            <url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
        </repository>
     </repositories>


    <dependencies>
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot-api</artifactId>
            <version>1.8-R0.1-SNAPSHOT</version>
            <type>jar</type>
            <scope>provided</scope>
        </dependency>
    </dependencies>

Oder aus deinem Spigot-BuildTools ordner nehmen und zum BuildPath adden.


Ich benutze Spigot! Den Build 1657.

Ach so ne vergiss es bitte. :) Hatte einen Denkfehler. :)
 
Hey gleich nochmal in der Console wird immer angezeigt Invaild plugin.yml?!
Mein Plugin.yml ist so aufgebaut....
Name: BowShot
Version: 1.0
Author: Timmi

Main: Bowshot


Mache ich bei Main was falsch da in der Console auch noch steht plugin.yml can not find
MfG Timmi
Bei deiner main musst du den PackageName und den Classnamen eintragen also z.B dein Package heißt de.Leterr und deine Klasse Bowshot dann muss deine main so aus sehen:

main: de.Leterr.Bowshot :D
 
Schick mal den Code von deiner Global Klasse. Da der Fehler in Zeile 34 ist und dort in eine HashMap geputtet wird, gehe ich davon aus, dass die HashMap null ist. Desweiteren empfehle ich dir, die Attribute einer Klasse privat zu machen und Getter bzw. Setter zu generieren. ;) Hat was mit Datenkapselung zu tun. Am besten geht das mit Lombok ( http://projectlombok.org/ ). Crasht dein Server wirklich oder wird nur eine Exception geworfen?

Was mir noch auffällt: Variablen werden in lowerCamelCase geschrieben, Klassen in UpperCamelCase und ohne Unterstriche, Sonderzeichen oder Zahlen.
Außerdem benutzt du für deine Map-Klasse ein Objekt. Warum tust du das nicht auch für die Lobbyklasse? Das wäre dann schönerer Code.
http://www.file-upload.net/download-10069842/timegames4.rar.html
Hier den Link des kompletten Plugins.
 
Nach langem durchschauen deines Codes sind mir einige grundlegende Probleme aufgefallen, auf die ich etwas näher eingehen will. Anscheinend versuchst du, Objektorientierte Programmierung anzuwenden, dies gelingt dir aber nur teilweise.
Vielleicht solltest du dir das hier mal durch lesen. http://www.inf.fu-berlin.de/lehre/SS08/PI01/Folien4.pdf
Dann lösen sich viele Fehler schon von alleine. Ich will nur mal kurz auf deine SQL und Global klasse hinweisen...
Desweiteren resettet das Welt-Unloaden mit save auf false Maps nicht. Diese werden auch zwischendurch gespeichert. Dieser boolean beschreibt lediglich, ob sie beim Unloaden noch einmal gespeichert werden sollen.
Ich würde dir empfehlen dir noch ein paar mehr Kenntnisse anzulegen, bevor du mit so einem großen Projekt anfängst. Und damit meine ich nicht Youtube-Tutorials sondern Dokumente wie http://openbook.galileo-press.de/javainsel/ .
Ich denke mal, dass sich so deine Probleme ganz von selbst lösen werden, denn ein sauberer Code allein hilft beim schnellen finden von Fehlern und vermeidet sogar teilweise Fehler. Denn so wie es im Moment aussieht, ist es ziemlich schwierig, irgendwelche Fehler aus dem Code zu finden. Das ist keineswegs böse gemeint, eher als Ratschlag/Tipp :)
Desweiteren solltest du dich mehr an die naming conventions halten. Zum Beispiel sollte man keine Sonderzeichen wie ä ö oder ü im Code verwenden. Ein meiner Meinung nach gut formulierter Style-Guide ist der von Google. https://google-styleguide.googlecode.com/svn/trunk/javaguide.html Dort stehen sowohl Basics als auch Google eigene Regeln. Dies wird deinen Code übersichtlicher und für andere verständlicher machen.

Ich hoffe du verstehst was ich dir sagen will und wünsche dir noch viel Spaß beim Coden :)
 
Wisst ihr wie ich einen Villager dazu bringe sich nicht mehr zu bewegen, wie auf dem GommeServer bei Aura, die Villager für die Schuhe?

Man könnte ihn immer wieder zurück zu seiner Position porten, aber ich denke das zieht zu viel Rechenleistung. :/

Habt ihr eine Idee?

Gruß,
lusu007

//EDIT: Ich glaube ich spamme diesen Thread wirklich zu. XD
 
Wisst ihr wie ich einen Villager dazu bringe sich nicht mehr zu bewegen, wie auf dem GommeServer bei Aura, die Villager für die Schuhe?

Man könnte ihn immer wieder zurück zu seiner Position porten, aber ich denke das zieht zu viel Rechenleistung. :/

Habt ihr eine Idee?

Gruß,
lusu007

//EDIT: Ich glaube ich spamme diesen Thread wirklich zu. XD
Gib ihn Langsamkeit 255 und für immer
 
Ok, wenn sich eine Spieler sich einem Villager nährt wird er zurück tpt.

Ich denke mal das das ziemlich viel Rechenleistung ziehen würde.

Am besten wäre es, wenn man irgendwie das Gehen des Villagers cancel könnte.

Gibt es denn ein Event das ausgeführt wird wenn ein Spieler den Villager schlägt? Der sollte nämlich auch unsterblich sein.
 
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