Und wo bleibt da die Persistenz? Wie willst du das serialisieren?speicherst diese zusammen mit dem entsprechenden Spieler in einer Map
Durch die Einträge der Map iterieren und in ne YML oder XML Datei Schreiben..oder vielleicht an ne Datenbank übergebenWie willst du das serialisieren?
Du implementierst deine Lizenz(en) als eigene Klasse (Optional mit einer abstrakten Superklasse) und speicherst diese zusammen mit dem entsprechenden Spieler in einer Map. Das hat Vorteil dass du zu jeder ausgestellten Lizenz weitere Daten speicher kannst (wie z.B. Gültigkeitszeitraum, Aussteller, Einschränkungen etc).
Du hast eine Oberklasse z.B. namens License. Und von dieser Klasse kannst du dir beliebig viele Spezialisierungen erstellen, versicherst aber stets, dass zum beispiel eine CarLicense mindestens alle Fähigkeiten einer License hat. Ich weiß nicht inwiefern du schon etwas mit abstrakten Klassen zu tun gehabt hast. Falls nichts hier eine kurze Anmerkung. Eine Klasse ist unter anderem auch abstrakt, da sie in der Vorstellung einer objektorientieren Programmstruktur nicht instanziert werden kann. Das heißt, du kannst keine normale Lizenz erstellen... warum auch? Was ist denn in der Realität eine reine Lizenz?Gut da gibt es ein ProblemIch weis nicht wie man das ganze macht bin kein Profi sry
![]()
package de.verschraubt.license;
import com.google.common.base.Preconditions;
import org.bukkit.OfflinePlayer;
/**
* Created by Verschraubt on 05.03.2017 for Tests.
*/
public abstract class License {
private final OfflinePlayer player;
private final OfflinePlayer exhibitor;
private final Long validity;
public License(OfflinePlayer player, OfflinePlayer exhibitor, Long validity) {
Preconditions.checkNotNull(player, "The player cannot be null");
Preconditions.checkNotNull(exhibitor, "The exhibitor cannot be null");
Preconditions.checkNotNull(validity, "The validity cannot be null");
this.player = player;
this.exhibitor = exhibitor;
this.validity = validity;
}
public Long getValidity() {
return this.validity;
}
public OfflinePlayer getExhibitor() {
return this.exhibitor;
}
public OfflinePlayer getPlayer() {
return this.player;
}
abstract String getLicenseName();
abstract void removeLicense();
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
License license = (License) o;
if (!player.equals(license.player)) return false;
if (!exhibitor.equals(license.exhibitor)) return false;
return validity.equals(license.validity);
}
@Override
public int hashCode() {
int result = player.hashCode();
result = 31 * result + exhibitor.hashCode();
result = 31 * result + validity.hashCode();
return result;
}
}
package de.verschraubt.license;
import com.google.common.base.Preconditions;
import org.bukkit.OfflinePlayer;
/**
* Created by Verschraubt on 05.03.2017 for Tests.
*/
public class CarLicense extends License {
private final Integer maxSpeed;
public CarLicense(OfflinePlayer player, OfflinePlayer exhibitor, Long validity, Integer maxSpeed) {
super(player, exhibitor, validity);
Preconditions.checkNotNull(maxSpeed, "The maxSpeed cannot be null");
this.maxSpeed = maxSpeed;
}
@Override
String getLicenseName() {
return "Autoführerschein";
}
@Override
void removeLicense() {
//TODO remove from persistence
}
public Integer getMaxSpeed() {
return this.maxSpeed;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CarLicense that = (CarLicense) o;
return maxSpeed.equals(that.maxSpeed);
}
@Override
public int hashCode() {
return maxSpeed.hashCode();
}
}
package de.verschraubt.license;
import com.google.common.base.Preconditions;
import org.bukkit.OfflinePlayer;
/**
* Created by Verschraubt on 05.03.2017 for Tests.
*/
public class WeaponLicense extends License {
private final Integer caliber;
public WeaponLicense(OfflinePlayer player, OfflinePlayer exhibitor, Long validity, Integer caliber) {
super(player, exhibitor, validity);
Preconditions.checkNotNull(caliber, "The caliber cannot be null");
this.caliber = caliber;
}
@Override
String getLicenseName() {
return "Waffenschein";
}
@Override
void removeLicense() {
//TODO remove from persistence
}
public Integer getCaliber() {
return this.caliber;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
WeaponLicense that = (WeaponLicense) o;
return caliber.equals(that.caliber);
}
@Override
public int hashCode() {
return caliber.hashCode();
}
}