1
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:
TheBusyBiscuit 2019-11-28 19:34:43 +01:00
parent 823a1622b8
commit 95e5da325b
4 changed files with 176 additions and 1 deletions

View File

@ -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 {

View File

@ -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));
}
}
}

View File

@ -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);
}

View File

@ -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;