mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-12-26 02:29:14 +00:00
Schema system
This commit is contained in:
@@ -7,25 +7,35 @@ import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Particle;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.World.Environment;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.generator.ChunkGenerator;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.volmit.iris.command.CommandIris;
|
||||
import com.volmit.iris.command.PermissionIris;
|
||||
import com.volmit.iris.gen.IrisChunkGenerator;
|
||||
import com.volmit.iris.gen.post.Post;
|
||||
import com.volmit.iris.gen.post.PostFloatingNibDeleter;
|
||||
import com.volmit.iris.gen.post.PostNibSmoother;
|
||||
import com.volmit.iris.gen.post.PostPotholeFiller;
|
||||
import com.volmit.iris.gen.post.PostSlabber;
|
||||
import com.volmit.iris.gen.post.PostWallPatcher;
|
||||
import com.volmit.iris.gen.post.PostWaterlogger;
|
||||
import com.volmit.iris.object.DecorationPart;
|
||||
import com.volmit.iris.object.Dispersion;
|
||||
import com.volmit.iris.object.Envelope;
|
||||
import com.volmit.iris.object.InterpolationMethod;
|
||||
import com.volmit.iris.object.IrisBiome;
|
||||
import com.volmit.iris.object.StructureTileCondition;
|
||||
import com.volmit.iris.util.BiomeResult;
|
||||
import com.volmit.iris.util.BoardManager;
|
||||
import com.volmit.iris.util.BoardProvider;
|
||||
@@ -40,6 +50,7 @@ import com.volmit.iris.util.IrisLock;
|
||||
import com.volmit.iris.util.IrisPostBlockFilter;
|
||||
import com.volmit.iris.util.IrisStructureResult;
|
||||
import com.volmit.iris.util.J;
|
||||
import com.volmit.iris.util.JSONArray;
|
||||
import com.volmit.iris.util.JSONException;
|
||||
import com.volmit.iris.util.JSONObject;
|
||||
import com.volmit.iris.util.JarScanner;
|
||||
@@ -47,6 +58,7 @@ import com.volmit.iris.util.KList;
|
||||
import com.volmit.iris.util.KMap;
|
||||
import com.volmit.iris.util.MortarPlugin;
|
||||
import com.volmit.iris.util.Permission;
|
||||
import com.volmit.iris.util.Required;
|
||||
import com.volmit.iris.util.RollingSequence;
|
||||
import com.volmit.iris.util.ScoreDirection;
|
||||
|
||||
@@ -230,9 +242,9 @@ public class Iris extends MortarPlugin implements BoardProvider
|
||||
|
||||
public void writeDocs() throws IOException, JSONException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException
|
||||
{
|
||||
JarScanner j = new JarScanner(getFile(), "ninja.bytecode.iris.object");
|
||||
JarScanner j = new JarScanner(getFile(), "com.volmit.iris.object");
|
||||
j.scan();
|
||||
File of = new File(getDataFolder(), "packs");
|
||||
File of = new File(getDataFolder(), "docs");
|
||||
of.mkdirs();
|
||||
KMap<String, String> files = new KMap<>();
|
||||
|
||||
@@ -240,7 +252,15 @@ public class Iris extends MortarPlugin implements BoardProvider
|
||||
{
|
||||
if(i.isAnnotationPresent(Desc.class))
|
||||
{
|
||||
JSONObject schema = new JSONObject();
|
||||
schema.put("$schema", "http://json-schema.org/draft-07/schema#");
|
||||
schema.put("$id", "http://volmit.com/iris-schema/" + i.getSimpleName().toLowerCase() + ".json");
|
||||
schema.put("title", i.getSimpleName().replaceAll("\\QIris\\E", ""));
|
||||
schema.put("type", "object");
|
||||
|
||||
Desc d = i.getAnnotation(Desc.class);
|
||||
schema.put("description", d.value());
|
||||
|
||||
KList<String> page = new KList<>();
|
||||
page.add("# " + i.getSimpleName());
|
||||
page.add("> " + d.value());
|
||||
@@ -250,24 +270,160 @@ public class Iris extends MortarPlugin implements BoardProvider
|
||||
page.add("```");
|
||||
|
||||
page.add("");
|
||||
|
||||
JSONObject properties = new JSONObject();
|
||||
JSONArray req = new JSONArray();
|
||||
|
||||
for(java.lang.reflect.Field k : i.getDeclaredFields())
|
||||
{
|
||||
JSONObject prop = new JSONObject();
|
||||
|
||||
if(k.isAnnotationPresent(Desc.class))
|
||||
{
|
||||
page.add("## " + k.getName());
|
||||
page.add("> " + k.getAnnotation(Desc.class).value());
|
||||
page.add("");
|
||||
|
||||
String tp = "object";
|
||||
|
||||
if(k.getType().equals(int.class) || k.getType().equals(long.class))
|
||||
{
|
||||
tp = "integer";
|
||||
}
|
||||
|
||||
if(k.getType().equals(double.class) || k.getType().equals(float.class))
|
||||
{
|
||||
tp = "number";
|
||||
}
|
||||
|
||||
if(k.getType().equals(boolean.class))
|
||||
{
|
||||
tp = "boolean";
|
||||
}
|
||||
|
||||
if(k.getType().equals(String.class))
|
||||
{
|
||||
tp = "string";
|
||||
}
|
||||
|
||||
if(k.getType().equals(String.class))
|
||||
{
|
||||
tp = "string";
|
||||
}
|
||||
|
||||
if(k.getType().isEnum())
|
||||
{
|
||||
tp = "string";
|
||||
}
|
||||
|
||||
if(k.getType().equals(KList.class))
|
||||
{
|
||||
tp = "array";
|
||||
}
|
||||
|
||||
if(k.isAnnotationPresent(Required.class))
|
||||
{
|
||||
req.put(k.getName());
|
||||
}
|
||||
|
||||
prop.put("description", k.getAnnotation(Desc.class).value());
|
||||
prop.put("type", tp);
|
||||
properties.put(k.getName(), prop);
|
||||
}
|
||||
}
|
||||
|
||||
schema.put("properties", properties);
|
||||
schema.put("required", req);
|
||||
String pge = page.toString("\n");
|
||||
files.put(i.getSimpleName(), pge);
|
||||
files.put(i.getSimpleName() + ".md", pge);
|
||||
files.put("schema/" + i.getSimpleName() + ".json", schema.toString(4));
|
||||
}
|
||||
}
|
||||
|
||||
KList<String> m = new KList<>();
|
||||
|
||||
for(Biome i : Biome.values())
|
||||
{
|
||||
m.add(i.name());
|
||||
}
|
||||
|
||||
IO.writeAll(new File(of, "types/biomes.txt"), m.toString("\n"));
|
||||
m = new KList<>();
|
||||
|
||||
for(Particle i : Particle.values())
|
||||
{
|
||||
m.add(i.name());
|
||||
}
|
||||
|
||||
IO.writeAll(new File(of, "types/particles.txt"), m.toString("\n"));
|
||||
m = new KList<>();
|
||||
|
||||
for(Dispersion i : Dispersion.values())
|
||||
{
|
||||
m.add(i.name());
|
||||
}
|
||||
|
||||
IO.writeAll(new File(of, "types/dispersion.txt"), m.toString("\n"));
|
||||
m = new KList<>();
|
||||
|
||||
for(DecorationPart i : DecorationPart.values())
|
||||
{
|
||||
m.add(i.name());
|
||||
}
|
||||
|
||||
IO.writeAll(new File(of, "types/decoration-part.txt"), m.toString("\n"));
|
||||
m = new KList<>();
|
||||
|
||||
for(Envelope i : Envelope.values())
|
||||
{
|
||||
m.add(i.name());
|
||||
}
|
||||
|
||||
IO.writeAll(new File(of, "types/envelope.txt"), m.toString("\n"));
|
||||
m = new KList<>();
|
||||
|
||||
for(Environment i : Environment.values())
|
||||
{
|
||||
m.add(i.name());
|
||||
}
|
||||
|
||||
IO.writeAll(new File(of, "types/environment.txt"), m.toString("\n"));
|
||||
m = new KList<>();
|
||||
|
||||
for(StructureTileCondition i : StructureTileCondition.values())
|
||||
{
|
||||
m.add(i.name());
|
||||
}
|
||||
|
||||
IO.writeAll(new File(of, "types/structure-tile-condition.txt"), m.toString("\n"));
|
||||
m = new KList<>();
|
||||
|
||||
for(InterpolationMethod i : InterpolationMethod.values())
|
||||
{
|
||||
m.add(i.name());
|
||||
}
|
||||
|
||||
IO.writeAll(new File(of, "types/interpolation-method.txt"), m.toString("\n"));
|
||||
m = new KList<>();
|
||||
|
||||
for(Class<? extends IrisPostBlockFilter> i : Iris.postProcessors)
|
||||
{
|
||||
m.add(i.getDeclaredAnnotation(Post.class).value());
|
||||
}
|
||||
|
||||
IO.writeAll(new File(of, "types/post-processors.txt"), m.toString("\n"));
|
||||
m = new KList<>();
|
||||
|
||||
for(PotionEffectType i : PotionEffectType.values())
|
||||
{
|
||||
m.add(i.getName().toUpperCase().replaceAll("\\Q \\E", "_"));
|
||||
}
|
||||
|
||||
IO.writeAll(new File(of, "types/potion-effect.txt"), m.toString("\n"));
|
||||
|
||||
for(String i : files.k())
|
||||
{
|
||||
IO.writeAll(new File(of, i + ".md"), files.get(i));
|
||||
IO.writeAll(new File(of, i), files.get(i));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user