mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 03:35:51 +00:00
Restructured a bit of the API (for future versions)
This commit is contained in:
parent
823a1622b8
commit
95e5da325b
@ -1,4 +1,4 @@
|
|||||||
package me.mrCookieSlime.Slimefun.api;
|
package io.github.thebusybiscuit.slimefun4.api;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
@ -20,6 +20,10 @@ import org.bukkit.plugin.Plugin;
|
|||||||
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
|
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.TickerTask;
|
||||||
|
|
||||||
public class ErrorReport {
|
public class ErrorReport {
|
||||||
|
|
@ -0,0 +1,157 @@
|
|||||||
|
package io.github.thebusybiscuit.slimefun4.api;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.function.IntFunction;
|
||||||
|
|
||||||
|
import com.google.gson.JsonArray;
|
||||||
|
import com.google.gson.JsonElement;
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.google.gson.JsonPrimitive;
|
||||||
|
|
||||||
|
public abstract class JsonDataHolder {
|
||||||
|
|
||||||
|
protected JsonObject data;
|
||||||
|
private boolean dirty;
|
||||||
|
|
||||||
|
public JsonDataHolder(JsonObject data) {
|
||||||
|
this.data = data;
|
||||||
|
this.dirty = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void markDirty() {
|
||||||
|
dirty = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDirty() {
|
||||||
|
return dirty;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void markClean() {
|
||||||
|
dirty = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setters
|
||||||
|
public void setString(String key, String value) {
|
||||||
|
data.addProperty(key, value);
|
||||||
|
markDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInt(String key, int value) {
|
||||||
|
data.addProperty(key, value);
|
||||||
|
markDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBoolean(String key, boolean value) {
|
||||||
|
data.addProperty(key, value);
|
||||||
|
markDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFloat(String key, float value) {
|
||||||
|
data.addProperty(key, value);
|
||||||
|
markDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStringArray(String key, String[] array) {
|
||||||
|
JsonArray json = new JsonArray();
|
||||||
|
for (String value: array) json.add(value);
|
||||||
|
data.add(key, json);
|
||||||
|
markDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIntArray(String key, int[] array) {
|
||||||
|
JsonArray json = new JsonArray();
|
||||||
|
for (int value: array) json.add(value);
|
||||||
|
data.add(key, json);
|
||||||
|
markDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBooleanArray(String key, boolean[] array) {
|
||||||
|
JsonArray json = new JsonArray();
|
||||||
|
for (boolean value: array) json.add(value);
|
||||||
|
data.add(key, json);
|
||||||
|
markDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFloatArray(String key, float[] array) {
|
||||||
|
JsonArray json = new JsonArray();
|
||||||
|
for (float value: array) json.add(value);
|
||||||
|
data.add(key, json);
|
||||||
|
markDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getters
|
||||||
|
public Optional<String> getString(String key) {
|
||||||
|
return getPrimitive(key, JsonElement::getAsString);
|
||||||
|
}
|
||||||
|
public String getString(String key, String defaultValue) {
|
||||||
|
return getString(key).orElse(defaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<Integer> getInt(String key) {
|
||||||
|
return getPrimitive(key, JsonElement::getAsInt);
|
||||||
|
}
|
||||||
|
public int getInt(String key, int defaultValue) {
|
||||||
|
return getInt(key).orElse(defaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<Boolean> getBoolean(String key) {
|
||||||
|
return getPrimitive(key, JsonElement::getAsBoolean);
|
||||||
|
}
|
||||||
|
public boolean getBoolean(String key, boolean defaultValue) {
|
||||||
|
return getBoolean(key).orElse(defaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<Float> getFloat(String key) {
|
||||||
|
return getPrimitive(key, JsonElement::getAsFloat);
|
||||||
|
}
|
||||||
|
public float getFloat(String key, float defaultValue) {
|
||||||
|
return getFloat(key).orElse(defaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<String[]> getStringArray(String key) {
|
||||||
|
return getArray(key, String[]::new, JsonElement::getAsString);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<Integer[]> getIntArray(String key) {
|
||||||
|
return getArray(key, Integer[]::new, JsonElement::getAsInt);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<Boolean[]> getBooleanArray(String key) {
|
||||||
|
return getArray(key, Boolean[]::new, JsonElement::getAsBoolean);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<Float[]> getFloatArray(String key) {
|
||||||
|
return getArray(key, Float[]::new, JsonElement::getAsFloat);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected <T> Optional<T[]> getArray(String key, IntFunction<T[]> constructor, Function<JsonElement, T> getter) {
|
||||||
|
JsonElement element = data.get(key);
|
||||||
|
|
||||||
|
if (element == null || !(element instanceof JsonArray)) {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
JsonArray json = (JsonArray) element;
|
||||||
|
T[] array = constructor.apply(json.size());
|
||||||
|
|
||||||
|
for (int i = 0; i < array.length; i++) {
|
||||||
|
array[i] = getter.apply(json.get(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
return Optional.of(array);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected <T> Optional<T> getPrimitive(String key, Function<JsonElement, T> getter) {
|
||||||
|
JsonElement element = data.get(key);
|
||||||
|
|
||||||
|
if (element == null || !(element instanceof JsonPrimitive)) {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return Optional.of(getter.apply(element));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package io.github.thebusybiscuit.slimefun4.api.recipes;
|
||||||
|
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public interface ContextualRecipe extends Predicate<ItemStack[]> {
|
||||||
|
|
||||||
|
boolean isShapeless();
|
||||||
|
|
||||||
|
ItemStack getOutput(ItemStack[] input);
|
||||||
|
|
||||||
|
}
|
@ -22,6 +22,7 @@ import org.bukkit.command.CommandSender;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import io.github.thebusybiscuit.cscorelib2.chat.ChatColors;
|
import io.github.thebusybiscuit.cscorelib2.chat.ChatColors;
|
||||||
|
import io.github.thebusybiscuit.slimefun4.api.ErrorReport;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage.HoverAction;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage.HoverAction;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
|
Loading…
Reference in New Issue
Block a user