9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-25 01:59:15 +00:00

Update docs

This commit is contained in:
Daniel Mills
2020-08-08 19:07:08 -04:00
parent 185d0d8817
commit e777566339
6 changed files with 100 additions and 241 deletions

View File

@@ -1,64 +1,43 @@
package com.volmit.iris;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
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;
import com.volmit.iris.util.BoardSettings;
import com.volmit.iris.util.CNG;
import com.volmit.iris.util.ChronoLatch;
import com.volmit.iris.util.Desc;
import com.volmit.iris.util.Form;
import com.volmit.iris.util.GroupedExecutor;
import com.volmit.iris.util.IO;
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;
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;
@@ -121,18 +100,6 @@ public class Iris extends MortarPlugin implements BoardProvider
proj = new ProjectManager();
manager = new BoardManager(this, BoardSettings.builder().boardProvider(this).scoreDirection(ScoreDirection.UP).build());
J.a(() ->
{
try
{
writeDocs();
}
catch(JSONException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException | IOException e)
{
e.printStackTrace();
}
});
super.onEnable();
}
@@ -240,193 +207,6 @@ public class Iris extends MortarPlugin implements BoardProvider
return g;
}
public void writeDocs() throws IOException, JSONException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException
{
JarScanner j = new JarScanner(getFile(), "com.volmit.iris.object");
j.scan();
File of = new File(getDataFolder(), "docs");
of.mkdirs();
KMap<String, String> files = new KMap<>();
for(Class<?> i : j.getClasses())
{
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());
page.add("```json");
page.add(new JSONObject(new Gson().toJson(i.getConstructor().newInstance())).toString(4));
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() + ".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), files.get(i));
}
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{