mirror of
https://github.com/MassiveCraft/Factions.git
synced 2025-02-22 06:41:23 +01:00
Modify MaterialDb.load()
This commit is contained in:
parent
3f5fbd7882
commit
cbe0f3a55d
@ -83,7 +83,7 @@ public class P extends MPlugin {
|
||||
saveDefaultConfig();
|
||||
|
||||
// Load Material database
|
||||
new MaterialDb();
|
||||
MaterialDb.load();
|
||||
// Load Conf from disk
|
||||
Conf.load();
|
||||
MaterialDb.getInstance().testMaterials();
|
||||
|
@ -2,8 +2,6 @@ package com.massivecraft.factions.util.material;
|
||||
|
||||
import org.bukkit.Material;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class FactionMaterial {
|
||||
|
||||
private String name;
|
||||
@ -13,7 +11,12 @@ public class FactionMaterial {
|
||||
}
|
||||
|
||||
public FactionMaterial(Material material) {
|
||||
this.name = material.name();
|
||||
// If we are using Legacy we need to change the name to the 1.13 equivalent
|
||||
if (MaterialDb.getInstance().legacy) {
|
||||
this.name = MaterialDb.getInstance().provider.fromLegacy(material.name());
|
||||
} else {
|
||||
this.name = material.name();
|
||||
}
|
||||
}
|
||||
|
||||
public Material get() {
|
||||
@ -34,12 +37,13 @@ public class FactionMaterial {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
FactionMaterial that = (FactionMaterial) o;
|
||||
return Objects.equals(name, that.name);
|
||||
// Compare provided Materials instead of the name as different names might provide same materials
|
||||
return get() == that.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(name);
|
||||
// Use material hashCode instead of name
|
||||
return get().hashCode();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -29,36 +29,34 @@ public class MaterialDb {
|
||||
private static MaterialDb instance;
|
||||
|
||||
public boolean legacy = true;
|
||||
private MaterialProvider provider;
|
||||
public MaterialProvider provider;
|
||||
|
||||
public MaterialDb() {
|
||||
instance = this;
|
||||
load();
|
||||
}
|
||||
private MaterialDb() {}
|
||||
|
||||
public Material get(String name) {
|
||||
return provider.resolve(name);
|
||||
}
|
||||
|
||||
public void load() {
|
||||
public static void load() {
|
||||
instance = new MaterialDb();
|
||||
try {
|
||||
String versionString = Bukkit.getVersion();
|
||||
String version = versionString.substring(versionString.indexOf('.') + 1, versionString.lastIndexOf('.'));
|
||||
legacy = Integer.parseInt(version) < 13;
|
||||
instance.legacy = Integer.parseInt(version) < 13;
|
||||
} catch (NumberFormatException e) {
|
||||
// Issue formatting major version integer... uhm
|
||||
legacy = true;
|
||||
instance.legacy = true;
|
||||
}
|
||||
|
||||
|
||||
InputStreamReader reader = new InputStreamReader(P.p.getResource("materials.json"));
|
||||
Type typeToken = new TypeToken<HashMap<String, MaterialProvider.MaterialData>>(){}.getType();
|
||||
HashMap<String, MaterialProvider.MaterialData> materialData = P.p.gson.fromJson(reader, typeToken);
|
||||
provider = new MaterialProvider(materialData);
|
||||
instance.provider = new MaterialProvider(materialData);
|
||||
}
|
||||
|
||||
public void testMaterials() {
|
||||
P.p.log(Conf.territoryProtectedMaterials);
|
||||
// TODO: Do some Material tests
|
||||
}
|
||||
|
||||
public static MaterialDb getInstance() {
|
||||
|
@ -9,9 +9,9 @@ import java.util.logging.Level;
|
||||
|
||||
public class MaterialProvider {
|
||||
|
||||
protected HashMap<String, MaterialData> materialData;
|
||||
private HashMap<String, MaterialData> materialData;
|
||||
|
||||
public MaterialProvider(HashMap<String, MaterialData> materialData) {
|
||||
MaterialProvider(HashMap<String, MaterialData> materialData) {
|
||||
this.materialData = materialData;
|
||||
}
|
||||
|
||||
@ -24,6 +24,15 @@ public class MaterialProvider {
|
||||
return material;
|
||||
}
|
||||
|
||||
public String fromLegacy(String legacy) {
|
||||
for (MaterialData data : materialData.values()) {
|
||||
if (data.legacy.equalsIgnoreCase(legacy)) {
|
||||
return data.name;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public class MaterialData {
|
||||
|
||||
@SerializedName("material")
|
||||
|
Loading…
Reference in New Issue
Block a user