Cleanup sources

This commit is contained in:
cyberpwn 2021-08-16 18:53:01 -04:00
parent af602a414a
commit a462ab98e9
73 changed files with 1235 additions and 1508 deletions

View File

@ -1,3 +1,21 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2021 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.command.object; package com.volmit.iris.core.command.object;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;

View File

@ -1,3 +1,21 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2021 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.command.pregen; package com.volmit.iris.core.command.pregen;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;

View File

@ -1,3 +1,21 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2021 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.command.pregen; package com.volmit.iris.core.command.pregen;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;

View File

@ -1,3 +1,21 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2021 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.command.pregen; package com.volmit.iris.core.command.pregen;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;

View File

@ -74,6 +74,7 @@ public class CommandIrisStudioBeautify extends MortarCommand {
return true; return true;
} }
private int clean(VolmitSender s, File clean) { private int clean(VolmitSender s, File clean) {
int c = 0; int c = 0;
if (clean.isDirectory()) { if (clean.isDirectory()) {
@ -131,7 +132,6 @@ public class CommandIrisStudioBeautify extends MortarCommand {
} }
@Override @Override
protected String getArgsUsage() { protected String getArgsUsage() {
return "[project]"; return "[project]";

View File

@ -21,7 +21,6 @@ package com.volmit.iris.core.command.what;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.core.tools.IrisToolbelt; import com.volmit.iris.core.tools.IrisToolbelt;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.object.feature.IrisFeaturePositional; import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.json.JSONObject; import com.volmit.iris.util.json.JSONObject;

View File

@ -20,25 +20,16 @@ package com.volmit.iris.core.command.world;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.nms.INMS;
import com.volmit.iris.core.tools.IrisToolbelt; import com.volmit.iris.core.tools.IrisToolbelt;
import com.volmit.iris.core.tools.IrisWorldCreator;
import com.volmit.iris.engine.object.dimensional.IrisDimension; import com.volmit.iris.engine.object.dimensional.IrisDimension;
import com.volmit.iris.engine.platform.PlatformChunkGenerator;
import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.exceptions.IrisException; import com.volmit.iris.util.exceptions.IrisException;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.plugin.MortarCommand; import com.volmit.iris.util.plugin.MortarCommand;
import com.volmit.iris.util.plugin.VolmitSender; import com.volmit.iris.util.plugin.VolmitSender;
import com.volmit.iris.util.scheduling.J; import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.O;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.WorldCreator;
import java.io.File; import java.io.File;
import java.util.Random; import java.util.Random;
import java.util.concurrent.atomic.AtomicReference;
public class CommandIrisCreate extends MortarCommand { public class CommandIrisCreate extends MortarCommand {
public CommandIrisCreate() { public CommandIrisCreate() {
@ -128,7 +119,6 @@ public class CommandIrisCreate extends MortarCommand {
String finalDimensionName = dimensionName; String finalDimensionName = dimensionName;
long finalSeed = seed; long finalSeed = seed;
J.a(() -> { J.a(() -> {
try { try {

View File

@ -32,8 +32,7 @@ import com.volmit.iris.util.format.C;
import java.io.File; import java.io.File;
@Decree(name = "irisd", aliases = {"ird"}, description = "Basic Command") @Decree(name = "irisd", aliases = {"ird"}, description = "Basic Command")
public class DecIris implements DecreeExecutor public class DecIris implements DecreeExecutor {
{
private DecStudio studio; private DecStudio studio;
private DecPregen pregen; private DecPregen pregen;
@ -114,7 +113,7 @@ public class DecIris implements DecreeExecutor
case "%" -> v = value1 % value2; case "%" -> v = value1 % value2;
case ">>" -> v = value1 >> value2; case ">>" -> v = value1 >> value2;
case "<<" -> v = value1 << value2; case "<<" -> v = value1 << value2;
}; }
if (v == null) { if (v == null) {
sender().sendMessage(C.RED + "The operator you entered: (" + operator + ") is invalid!"); sender().sendMessage(C.RED + "The operator you entered: (" + operator + ") is invalid!");
return; return;

View File

@ -1,3 +1,21 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2021 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.decrees; package com.volmit.iris.core.decrees;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
@ -9,7 +27,6 @@ import com.volmit.iris.util.decree.annotations.Decree;
import com.volmit.iris.util.decree.annotations.Param; import com.volmit.iris.util.decree.annotations.Param;
import com.volmit.iris.util.format.C; import com.volmit.iris.util.format.C;
import com.volmit.iris.util.math.Position2; import com.volmit.iris.util.math.Position2;
import org.bukkit.Location;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;

View File

@ -20,7 +20,6 @@ package com.volmit.iris.core.decrees;
import com.volmit.iris.util.decree.DecreeExecutor; import com.volmit.iris.util.decree.DecreeExecutor;
public class DecSettings implements DecreeExecutor public class DecSettings implements DecreeExecutor {
{
} }

View File

@ -110,8 +110,7 @@ public class DecStudio implements DecreeExecutor {
@Param(description = "The name of this new Iris Project.") @Param(description = "The name of this new Iris Project.")
String name, String name,
@Param(description = "Copy the contents of an existing project in your packs folder and use it as a template in this new project.", contextual = true) @Param(description = "Copy the contents of an existing project in your packs folder and use it as a template in this new project.", contextual = true)
IrisDimension template) IrisDimension template) {
{
if (template != null) { if (template != null) {
Iris.service(StudioSVC.class).create(sender(), name, template.getLoadKey()); Iris.service(StudioSVC.class).create(sender(), name, template.getLoadKey());
} else { } else {
@ -147,8 +146,7 @@ public class DecStudio implements DecreeExecutor {
sender().sendMessage("Files: " + files.size()); sender().sendMessage("Files: " + files.size());
if(fixIds) if (fixIds) {
{
QueueJob<File> r = new QueueJob<>() { QueueJob<File> r = new QueueJob<>() {
@Override @Override
public void execute(File f) { public void execute(File f) {
@ -173,8 +171,7 @@ public class DecStudio implements DecreeExecutor {
jobs.add(r); jobs.add(r);
} }
if(beautify) if (beautify) {
{
QueueJob<File> r = new QueueJob<>() { QueueJob<File> r = new QueueJob<>() {
@Override @Override
public void execute(File f) { public void execute(File f) {
@ -197,8 +194,7 @@ public class DecStudio implements DecreeExecutor {
jobs.add(r); jobs.add(r);
} }
if(rewriteObjects) if (rewriteObjects) {
{
QueueJob<Runnable> q = new QueueJob<>() { QueueJob<Runnable> q = new QueueJob<>() {
@Override @Override
public void execute(Runnable runnable) { public void execute(Runnable runnable) {
@ -414,8 +410,7 @@ public class DecStudio implements DecreeExecutor {
} }
@Decree(description = "Render a world map (External GUI)", aliases = "render") @Decree(description = "Render a world map (External GUI)", aliases = "render")
public void map() public void map() {
{
if (noStudio()) return; if (noStudio()) return;
if (noGUI()) return; if (noGUI()) return;
@ -787,9 +782,7 @@ public class DecStudio implements DecreeExecutor {
} }
public void files(File clean, KList<File> files) {
public void files(File clean, KList<File> files)
{
if (clean.isDirectory()) { if (clean.isDirectory()) {
for (File i : clean.listFiles()) { for (File i : clean.listFiles()) {
files(i, files); files(i, files);

View File

@ -1,3 +1,21 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2021 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.link; package com.volmit.iris.core.link;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;

View File

@ -18,8 +18,6 @@
package com.volmit.iris.core.project; package com.volmit.iris.core.project;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.object.dimensional.IrisDimension;
import lombok.Data; import lombok.Data;
import java.io.File; import java.io.File;
@ -28,13 +26,11 @@ import java.io.File;
public class IrisPack { public class IrisPack {
private final File folder; private final File folder;
public IrisPack(File folder) public IrisPack(File folder) {
{
this.folder = folder; this.folder = folder;
} }
public String getName() public String getName() {
{
return getFolder().getName(); return getFolder().getName();
} }
} }

View File

@ -21,11 +21,9 @@ package com.volmit.iris.core.project;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.nms.INMS;
import com.volmit.iris.core.project.loader.IrisData; import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.core.project.loader.ResourceLoader; import com.volmit.iris.core.project.loader.ResourceLoader;
import com.volmit.iris.core.tools.IrisToolbelt; import com.volmit.iris.core.tools.IrisToolbelt;
import com.volmit.iris.core.tools.IrisWorldCreator;
import com.volmit.iris.engine.object.biome.IrisBiome; import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.block.IrisBlockData; import com.volmit.iris.engine.object.block.IrisBlockData;
import com.volmit.iris.engine.object.dimensional.IrisDimension; import com.volmit.iris.engine.object.dimensional.IrisDimension;
@ -40,7 +38,6 @@ import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap; import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.collection.KSet; import com.volmit.iris.util.collection.KSet;
import com.volmit.iris.util.exceptions.IrisException; import com.volmit.iris.util.exceptions.IrisException;
import com.volmit.iris.util.format.C;
import com.volmit.iris.util.format.Form; import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.io.IO; import com.volmit.iris.util.io.IO;
import com.volmit.iris.util.json.JSONArray; import com.volmit.iris.util.json.JSONArray;
@ -52,9 +49,8 @@ import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.O; import com.volmit.iris.util.scheduling.O;
import com.volmit.iris.util.scheduling.PrecisionStopwatch; import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import lombok.Data; import lombok.Data;
import net.md_5.bungee.api.ChatMessageType; import org.bukkit.Bukkit;
import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.GameMode;
import org.bukkit.*;
import org.zeroturnaround.zip.ZipUtil; import org.zeroturnaround.zip.ZipUtil;
import java.awt.*; import java.awt.*;
@ -448,7 +444,6 @@ public class IrisProject {
} }
public static int clean(VolmitSender s, File clean) { public static int clean(VolmitSender s, File clean) {
int c = 0; int c = 0;
if (clean.isDirectory()) { if (clean.isDirectory()) {

View File

@ -35,7 +35,6 @@ import com.volmit.iris.util.json.JSONException;
import com.volmit.iris.util.json.JSONObject; import com.volmit.iris.util.json.JSONObject;
import com.volmit.iris.util.plugin.IrisService; import com.volmit.iris.util.plugin.IrisService;
import com.volmit.iris.util.plugin.VolmitSender; import com.volmit.iris.util.plugin.VolmitSender;
import com.volmit.iris.util.scheduling.GroupedExecutor;
import com.volmit.iris.util.scheduling.J; import com.volmit.iris.util.scheduling.J;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World; import org.bukkit.World;
@ -49,7 +48,7 @@ import java.util.UUID;
public class StudioSVC implements IrisService { public class StudioSVC implements IrisService {
public static final String LISTING = "https://raw.githubusercontent.com/IrisDimensions/_listing/main/listing-v2.json"; public static final String LISTING = "https://raw.githubusercontent.com/IrisDimensions/_listing/main/listing-v2.json";
public static final String WORKSPACE_NAME = "packs"; public static final String WORKSPACE_NAME = "packs";
private KMap<String, String> cacheListing = null; private final KMap<String, String> cacheListing = null;
private IrisProject activeProject; private IrisProject activeProject;
private static final AtomicCache<Integer> counter = new AtomicCache<>(); private static final AtomicCache<Integer> counter = new AtomicCache<>();
@ -323,7 +322,8 @@ public class StudioSVC implements IrisService {
public void open(VolmitSender sender, long seed, String dimm) { public void open(VolmitSender sender, long seed, String dimm) {
try { try {
open(sender,seed, dimm, () -> {}); open(sender, seed, dimm, () -> {
});
} catch (Exception e) { } catch (Exception e) {
Iris.reportError(e); Iris.reportError(e);
sender.sendMessage("Error when creating studio world:"); sender.sendMessage("Error when creating studio world:");
@ -448,8 +448,7 @@ public class StudioSVC implements IrisService {
create(sender, s, "example"); create(sender, s, "example");
} }
public IrisProject getActiveProject() public IrisProject getActiveProject() {
{
return activeProject; return activeProject;
} }

View File

@ -45,7 +45,6 @@ import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.util.BlockVector; import org.bukkit.util.BlockVector;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
import java.awt.*;
import java.awt.Color; import java.awt.Color;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Objects; import java.util.Objects;

View File

@ -23,13 +23,9 @@ import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.pregenerator.PregenTask; import com.volmit.iris.core.pregenerator.PregenTask;
import com.volmit.iris.core.service.StudioSVC; import com.volmit.iris.core.service.StudioSVC;
import com.volmit.iris.engine.data.cache.AtomicCache;
import com.volmit.iris.engine.object.common.HeadlessWorld;
import com.volmit.iris.engine.object.dimensional.IrisDimension; import com.volmit.iris.engine.object.dimensional.IrisDimension;
import com.volmit.iris.engine.platform.HeadlessGenerator;
import com.volmit.iris.engine.platform.PlatformChunkGenerator; import com.volmit.iris.engine.platform.PlatformChunkGenerator;
import com.volmit.iris.util.exceptions.IrisException; import com.volmit.iris.util.exceptions.IrisException;
import com.volmit.iris.util.exceptions.MissingDimensionException;
import com.volmit.iris.util.format.C; import com.volmit.iris.util.format.C;
import com.volmit.iris.util.format.Form; import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.math.RNG;
@ -38,15 +34,12 @@ import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.O; import com.volmit.iris.util.scheduling.O;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.*; import org.bukkit.*;
import java.io.File; import java.io.File;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
/** /**
* Makes it a lot easier to setup an engine, world, studio or whatever * Makes it a lot easier to setup an engine, world, studio or whatever
@ -94,20 +87,17 @@ public class IrisCreator {
* @throws IrisException shit happens * @throws IrisException shit happens
*/ */
public World create() throws IrisException { public World create() throws IrisException {
if(Bukkit.isPrimaryThread()) if (Bukkit.isPrimaryThread()) {
{
throw new IrisException("You cannot invoke create() on the main thread."); throw new IrisException("You cannot invoke create() on the main thread.");
} }
IrisDimension d = IrisToolbelt.getDimension(dimension()); IrisDimension d = IrisToolbelt.getDimension(dimension());
if(d == null) if (d == null) {
{
throw new IrisException("Dimension cannot be found null for id " + dimension()); throw new IrisException("Dimension cannot be found null for id " + dimension());
} }
if(!studio()) if (!studio()) {
{
Iris.service(StudioSVC.class).installIntoWorld(sender, d.getLoadKey(), new File(name())); Iris.service(StudioSVC.class).installIntoWorld(sender, d.getLoadKey(), new File(name()));
} }
@ -158,15 +148,13 @@ public class IrisCreator {
done.set(true); done.set(true);
if(sender.isPlayer()) if (sender.isPlayer()) {
{
J.s(() -> { J.s(() -> {
sender.player().teleport(new Location(world.get(), 0, world.get().getHighestBlockYAt(0, 0), 0)); sender.player().teleport(new Location(world.get(), 0, world.get().getHighestBlockYAt(0, 0), 0));
}); });
} }
if(studio) if (studio) {
{
J.s(() -> { J.s(() -> {
Iris.linkMultiverseCore.removeFromConfig(world.get()); Iris.linkMultiverseCore.removeFromConfig(world.get());
@ -189,8 +177,7 @@ public class IrisCreator {
AtomicBoolean dx = new AtomicBoolean(false); AtomicBoolean dx = new AtomicBoolean(false);
J.a(() -> { J.a(() -> {
while(!dx.get()) while (!dx.get()) {
{
if (sender.isPlayer()) { if (sender.isPlayer()) {
sender.sendProgress(pp.get(), "Pregenerating"); sender.sendProgress(pp.get(), "Pregenerating");
J.sleep(16); J.sleep(16);

View File

@ -25,7 +25,6 @@ import com.volmit.iris.core.pregenerator.PregenTask;
import com.volmit.iris.core.pregenerator.PregeneratorMethod; import com.volmit.iris.core.pregenerator.PregeneratorMethod;
import com.volmit.iris.core.pregenerator.methods.HeadlessPregenMethod; import com.volmit.iris.core.pregenerator.methods.HeadlessPregenMethod;
import com.volmit.iris.core.pregenerator.methods.HybridPregenMethod; import com.volmit.iris.core.pregenerator.methods.HybridPregenMethod;
import com.volmit.iris.core.project.IrisProject;
import com.volmit.iris.core.project.loader.IrisData; import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.core.service.StudioSVC; import com.volmit.iris.core.service.StudioSVC;
import com.volmit.iris.engine.object.dimensional.IrisDimension; import com.volmit.iris.engine.object.dimensional.IrisDimension;
@ -47,7 +46,6 @@ import org.zeroturnaround.zip.commons.FileUtils;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.net.MalformedURLException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.UUID; import java.util.UUID;
@ -184,6 +182,7 @@ public class IrisToolbelt {
/** /**
* Attempts to ensure that the pack is installed * Attempts to ensure that the pack is installed
*
* @param sender the sender * @param sender the sender
* @param url the dimension * @param url the dimension
* @throws Throwable shit happens * @throws Throwable shit happens
@ -191,8 +190,7 @@ public class IrisToolbelt {
public static void install(VolmitSender sender, String url) throws Throwable { public static void install(VolmitSender sender, String url) throws Throwable {
IrisProjectRepo r = IrisProjectRepo.from(url); IrisProjectRepo r = IrisProjectRepo.from(url);
if(r != null) if (r != null) {
{
url = r.getRepo(); url = r.getRepo();
} }
@ -218,6 +216,7 @@ public class IrisToolbelt {
/** /**
* Evacuate all players from the world * Evacuate all players from the world
*
* @param world the world to leave * @param world the world to leave
* @param m the message * @param m the message
* @return true if it was evacuated. * @return true if it was evacuated.

View File

@ -21,7 +21,6 @@ package com.volmit.iris.engine.object.spawners;
import com.volmit.iris.engine.object.annotations.Desc; import com.volmit.iris.engine.object.annotations.Desc;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.data.Waterlogged; import org.bukkit.block.data.Waterlogged;
@Desc("The type of surface entities should spawn on") @Desc("The type of surface entities should spawn on")

View File

@ -1,3 +1,21 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2021 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.engine.object.villager; package com.volmit.iris.engine.object.villager;
import com.volmit.iris.engine.object.annotations.ArrayType; import com.volmit.iris.engine.object.annotations.ArrayType;

View File

@ -1,3 +1,21 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2021 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.engine.object.villager; package com.volmit.iris.engine.object.villager;

View File

@ -43,8 +43,7 @@ public class EngineProvider {
IrisData data = new IrisData(dataLocation); IrisData data = new IrisData(dataLocation);
IrisDimension realDimension = data.getDimensionLoader().load(dimension); IrisDimension realDimension = data.getDimensionLoader().load(dimension);
if(realDimension == null) if (realDimension == null) {
{
throw new RuntimeException("Cannot find dimension in " + data.getDataFolder().getAbsolutePath() + " with key " + dimension); throw new RuntimeException("Cannot find dimension in " + data.getDataFolder().getAbsolutePath() + " with key " + dimension);
} }

View File

@ -19,7 +19,6 @@
package com.volmit.iris.engine.scripting; package com.volmit.iris.engine.scripting;
import com.volmit.iris.engine.framework.Engine; import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.object.common.IrisScript;
import org.apache.bsf.BSFManager; import org.apache.bsf.BSFManager;
public interface EngineExecutionEnvironment { public interface EngineExecutionEnvironment {

View File

@ -159,10 +159,7 @@ public class B {
if (bx instanceof Leaves && IrisSettings.get().getGenerator().preventLeafDecay) { if (bx instanceof Leaves && IrisSettings.get().getGenerator().preventLeafDecay) {
((Leaves) bx).setPersistent(true); ((Leaves) bx).setPersistent(true);
} } else if (bx instanceof Leaves) {
else if(bx instanceof Leaves)
{
((Leaves) bx).setPersistent(false); ((Leaves) bx).setPersistent(false);
} }

View File

@ -36,64 +36,44 @@ public class IrisProjectRepo {
@Builder.Default @Builder.Default
private String tag = ""; private String tag = "";
public static IrisProjectRepo from(String g) public static IrisProjectRepo from(String g) {
{
// https://github.com/IrisDimensions/overworld // https://github.com/IrisDimensions/overworld
if(g.startsWith("https://github.com/")) if (g.startsWith("https://github.com/")) {
{
String sub = g.split("\\Qgithub.com/\\E")[1]; String sub = g.split("\\Qgithub.com/\\E")[1];
IrisProjectRepo r = IrisProjectRepo.builder() IrisProjectRepo r = IrisProjectRepo.builder()
.user(sub.split("\\Q/\\E")[0]) .user(sub.split("\\Q/\\E")[0])
.repo(sub.split("\\Q/\\E")[1]).build(); .repo(sub.split("\\Q/\\E")[1]).build();
if(g.contains("/tree/")) if (g.contains("/tree/")) {
{
r.setBranch(g.split("/tree/")[1]); r.setBranch(g.split("/tree/")[1]);
} }
return r; return r;
} } else if (g.contains("/")) {
else if(g.contains("/"))
{
String[] f = g.split("\\Q/\\E"); String[] f = g.split("\\Q/\\E");
if(f.length == 1) if (f.length == 1) {
{
return from(g); return from(g);
} } else if (f.length == 2) {
else if(f.length == 2)
{
return IrisProjectRepo.builder() return IrisProjectRepo.builder()
.user(f[0]) .user(f[0])
.repo(f[1]) .repo(f[1])
.build(); .build();
} } else if (f.length >= 3) {
else if(f.length >= 3)
{
IrisProjectRepo r = IrisProjectRepo.builder() IrisProjectRepo r = IrisProjectRepo.builder()
.user(f[0]) .user(f[0])
.repo(f[1]) .repo(f[1])
.build(); .build();
if(f[2].startsWith("#")) if (f[2].startsWith("#")) {
{
r.setTag(f[2].substring(1)); r.setTag(f[2].substring(1));
} } else {
else
{
r.setBranch(f[2]); r.setBranch(f[2]);
} }
return r; return r;
} }
} } else {
else
{
return IrisProjectRepo.builder() return IrisProjectRepo.builder()
.user("IrisDimensions") .user("IrisDimensions")
.repo(g) .repo(g)
@ -104,10 +84,8 @@ public class IrisProjectRepo {
return null; return null;
} }
public String toURL() public String toURL() {
{ if (!tag.trim().isEmpty()) {
if(!tag.trim().isEmpty())
{
return "https://codeload.github.com/" + user + "/" + repo + "/zip/refs/tags/" + tag; return "https://codeload.github.com/" + user + "/" + repo + "/zip/refs/tags/" + tag;
} }

View File

@ -1,3 +1,21 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2021 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.util.decree; package com.volmit.iris.util.decree;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
@ -5,19 +23,15 @@ import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.plugin.VolmitSender; import com.volmit.iris.util.plugin.VolmitSender;
public interface DecreeContextHandler<T> { public interface DecreeContextHandler<T> {
static KMap<Class<?>, DecreeContextHandler<?>> contextHandlers = buildContextHandlers(); KMap<Class<?>, DecreeContextHandler<?>> contextHandlers = buildContextHandlers();
static KMap<Class<?>, DecreeContextHandler<?>> buildContextHandlers() { static KMap<Class<?>, DecreeContextHandler<?>> buildContextHandlers() {
KMap<Class<?>, DecreeContextHandler<?>> contextHandlers = new KMap<>(); KMap<Class<?>, DecreeContextHandler<?>> contextHandlers = new KMap<>();
try try {
{
Iris.initialize("com.volmit.iris.util.decree.context").forEach((i) Iris.initialize("com.volmit.iris.util.decree.context").forEach((i)
-> contextHandlers.put(((DecreeContextHandler<?>) i).getType(), (DecreeContextHandler<?>) i)); -> contextHandlers.put(((DecreeContextHandler<?>) i).getType(), (DecreeContextHandler<?>) i));
} } catch (Throwable e) {
catch(Throwable e)
{
Iris.reportError(e); Iris.reportError(e);
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -21,26 +21,21 @@ package com.volmit.iris.util.decree;
import com.volmit.iris.core.tools.IrisToolbelt; import com.volmit.iris.core.tools.IrisToolbelt;
import com.volmit.iris.engine.framework.Engine; import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.platform.PlatformChunkGenerator; import com.volmit.iris.engine.platform.PlatformChunkGenerator;
import com.volmit.iris.util.format.C;
import com.volmit.iris.util.plugin.VolmitSender; import com.volmit.iris.util.plugin.VolmitSender;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public interface DecreeExecutor { public interface DecreeExecutor {
default VolmitSender sender() default VolmitSender sender() {
{
return DecreeContext.get(); return DecreeContext.get();
} }
default Player player() default Player player() {
{
return sender().player(); return sender().player();
} }
default Engine engine() default Engine engine() {
{ if (sender().isPlayer() && IrisToolbelt.access(sender().player().getWorld()) != null) {
if(sender().isPlayer() && IrisToolbelt.access(sender().player().getWorld()) != null)
{
PlatformChunkGenerator gen = IrisToolbelt.access(sender().player().getWorld()); PlatformChunkGenerator gen = IrisToolbelt.access(sender().player().getWorld());
if (gen != null) { if (gen != null) {
return gen.getEngine(); return gen.getEngine();
@ -50,24 +45,21 @@ public interface DecreeExecutor {
return null; return null;
} }
default PlatformChunkGenerator access() default PlatformChunkGenerator access() {
{
if (sender().isPlayer()) { if (sender().isPlayer()) {
return IrisToolbelt.access(world()); return IrisToolbelt.access(world());
} }
return null; return null;
} }
default World world() default World world() {
{
if (sender().isPlayer()) { if (sender().isPlayer()) {
return sender().player().getWorld(); return sender().player().getWorld();
} }
return null; return null;
} }
default <T> T get(T v, T ifUndefined) default <T> T get(T v, T ifUndefined) {
{
return v == null ? ifUndefined : v; return v == null ? ifUndefined : v;
} }
} }

View File

@ -25,7 +25,6 @@ import lombok.Data;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.lang.reflect.Parameter; import java.lang.reflect.Parameter;
import java.util.Arrays;
@Data @Data
public class DecreeNode { public class DecreeNode {
@ -44,13 +43,13 @@ public class DecreeNode {
/** /**
* Get the parameters of this decree node * Get the parameters of this decree node
*
* @return The list of parameters if ALL are annotated by @{@link Param}, else null * @return The list of parameters if ALL are annotated by @{@link Param}, else null
*/ */
public KList<DecreeParameter> getParameters() { public KList<DecreeParameter> getParameters() {
KList<DecreeParameter> p = new KList<>(); KList<DecreeParameter> p = new KList<>();
for(Parameter i : method.getParameters()) for (Parameter i : method.getParameters()) {
{
p.add(new DecreeParameter(i)); p.add(new DecreeParameter(i));
} }
@ -72,10 +71,8 @@ public class DecreeNode {
public KList<String> getNames() { public KList<String> getNames() {
KList<String> d = new KList<>(); KList<String> d = new KList<>();
for(String i : decree.aliases()) for (String i : decree.aliases()) {
{ if (i.isEmpty()) {
if(i.isEmpty())
{
continue; continue;
} }

View File

@ -30,6 +30,7 @@ public enum DecreeOrigin {
/** /**
* Check if the origin is valid for a sender * Check if the origin is valid for a sender
*
* @param sender The sender to check * @param sender The sender to check
* @return True if valid for origin * @return True if valid for origin
*/ */

View File

@ -62,10 +62,8 @@ public class DecreeParameter {
public KList<String> getNames() { public KList<String> getNames() {
KList<String> d = new KList<>(); KList<String> d = new KList<>();
for(String i : param.aliases()) for (String i : param.aliases()) {
{ if (i.isEmpty()) {
if(i.isEmpty())
{
continue; continue;
} }
@ -90,8 +88,7 @@ public class DecreeParameter {
KList<?> ff = getHandler().getPossibilities(); KList<?> ff = getHandler().getPossibilities();
ff = ff != null ? ff : new KList<>(); ff = ff != null ? ff : new KList<>();
KList<String> f = ff.convert((i) -> getHandler().toStringForce(i)); KList<String> f = ff.convert((i) -> getHandler().toStringForce(i));
if(f.isEmpty()) if (f.isEmpty()) {
{
f = new KList<>(); f = new KList<>();
f.add(getHandler().getRandomDefault()); f.add(getHandler().getRandomDefault());
} }

View File

@ -21,19 +21,20 @@ package com.volmit.iris.util.decree;
import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.decree.exceptions.DecreeParsingException; import com.volmit.iris.util.decree.exceptions.DecreeParsingException;
import com.volmit.iris.util.decree.exceptions.DecreeWhichException; import com.volmit.iris.util.decree.exceptions.DecreeWhichException;
import org.jetbrains.annotations.NotNull;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
public interface DecreeParameterHandler<T> { public interface DecreeParameterHandler<T> {
/** /**
* Should return the possible values for this type * Should return the possible values for this type
*
* @return Possibilities for this type. * @return Possibilities for this type.
*/ */
KList<T> getPossibilities(); KList<T> getPossibilities();
/** /**
* Converting the type back to a string (inverse of the {@link #parse(String) parse} method) * Converting the type back to a string (inverse of the {@link #parse(String) parse} method)
*
* @param t The input of the designated type to convert to a String * @param t The input of the designated type to convert to a String
* @return The resulting string * @return The resulting string
*/ */
@ -41,16 +42,17 @@ public interface DecreeParameterHandler<T> {
/** /**
* Forces conversion to the designated type before converting to a string using {@link #toString(T t)} * Forces conversion to the designated type before converting to a string using {@link #toString(T t)}
*
* @param t The object to convert to string (that should be of this type) * @param t The object to convert to string (that should be of this type)
* @return The resulting string. * @return The resulting string.
*/ */
default String toStringForce(Object t) default String toStringForce(Object t) {
{
return toString((T) t); return toString((T) t);
} }
/** /**
* Should parse a String into the designated type * Should parse a String into the designated type
*
* @param in The string to parse * @param in The string to parse
* @return The value extracted from the string, of the designated type * @return The value extracted from the string, of the designated type
* @throws DecreeParsingException Thrown when the parsing fails (ex: "oop" translated to an integer throws this) * @throws DecreeParsingException Thrown when the parsing fails (ex: "oop" translated to an integer throws this)
@ -60,6 +62,7 @@ public interface DecreeParameterHandler<T> {
/** /**
* Returns whether a certain type is supported by this handler<br> * Returns whether a certain type is supported by this handler<br>
*
* @param type The type to check * @param type The type to check
* @return True if supported, false if not * @return True if supported, false if not
*/ */
@ -67,13 +70,12 @@ public interface DecreeParameterHandler<T> {
/** /**
* The possible entries for the inputted string (support for autocomplete on partial entries) * The possible entries for the inputted string (support for autocomplete on partial entries)
*
* @param input The inputted string to check against * @param input The inputted string to check against
* @return A {@link KList} of possibilities * @return A {@link KList} of possibilities
*/ */
default KList<T> getPossibilities(String input) default KList<T> getPossibilities(String input) {
{ if (input.trim().isEmpty()) {
if(input.trim().isEmpty())
{
KList<T> f = getPossibilities(); KList<T> f = getPossibilities();
return f == null ? new KList<>() : f; return f == null ? new KList<>() : f;
} }
@ -86,22 +88,19 @@ public interface DecreeParameterHandler<T> {
return matches; return matches;
} }
if (input.isEmpty()) if (input.isEmpty()) {
{
return getPossibilities(); return getPossibilities();
} }
KList<String> converted = possible.convert(v -> toString(v).trim()); KList<String> converted = possible.convert(v -> toString(v).trim());
for(int i = 0; i < converted.size(); i++) for (int i = 0; i < converted.size(); i++) {
{
String g = converted.get(i); String g = converted.get(i);
// if // if
// G == I or // G == I or
// I in G or // I in G or
// G in I // G in I
if(g.equalsIgnoreCase(input) || g.toLowerCase().contains(input.toLowerCase()) || input.toLowerCase().contains(g.toLowerCase())) if (g.equalsIgnoreCase(input) || g.toLowerCase().contains(input.toLowerCase()) || input.toLowerCase().contains(g.toLowerCase())) {
{
matches.add(possible.get(i)); matches.add(possible.get(i));
} }
} }
@ -109,54 +108,36 @@ public interface DecreeParameterHandler<T> {
return matches; return matches;
} }
default String getRandomDefault() default String getRandomDefault() {
{
return "NOEXAMPLE"; return "NOEXAMPLE";
} }
default double getMultiplier(AtomicReference<String> g) default double getMultiplier(AtomicReference<String> g) {
{
double multiplier = 1; double multiplier = 1;
String in = g.get(); String in = g.get();
boolean valid = true; boolean valid = true;
while (valid) { while (valid) {
boolean trim = false; boolean trim = false;
if (in.toLowerCase().endsWith("k")) if (in.toLowerCase().endsWith("k")) {
{
multiplier *= 1000; multiplier *= 1000;
trim = true; trim = true;
} } else if (in.toLowerCase().endsWith("m")) {
else if(in.toLowerCase().endsWith("m"))
{
multiplier *= 1000000; multiplier *= 1000000;
trim = true; trim = true;
} } else if (in.toLowerCase().endsWith("h")) {
else if(in.toLowerCase().endsWith("h"))
{
multiplier *= 100; multiplier *= 100;
trim = true; trim = true;
} } else if (in.toLowerCase().endsWith("c")) {
else if(in.toLowerCase().endsWith("c"))
{
multiplier *= 16; multiplier *= 16;
trim = true; trim = true;
} } else if (in.toLowerCase().endsWith("r")) {
else if(in.toLowerCase().endsWith("r"))
{
multiplier *= (16 * 32); multiplier *= (16 * 32);
trim = true; trim = true;
} } else {
else {
valid = false; valid = false;
} }
if(trim) if (trim) {
{
in = in.substring(0, in.length() - 1); in = in.substring(0, in.length() - 1);
} }
} }

View File

@ -38,12 +38,12 @@ public interface DecreeSystem extends CommandExecutor, TabCompleter {
/** /**
* The root class to start command searching from * The root class to start command searching from
*
* @return * @return
*/ */
VirtualDecreeCommand getRoot(); VirtualDecreeCommand getRoot();
default boolean call(VolmitSender sender, String[] args) default boolean call(VolmitSender sender, String[] args) {
{
DecreeContext.touch(sender); DecreeContext.touch(sender);
return getRoot().invoke(sender, enhanceArgs(args)); return getRoot().invoke(sender, enhanceArgs(args));
} }
@ -61,45 +61,34 @@ public interface DecreeSystem extends CommandExecutor, TabCompleter {
@Override @Override
default boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { default boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
J.aBukkit(() -> { J.aBukkit(() -> {
if(!call(new VolmitSender(sender), args)) if (!call(new VolmitSender(sender), args)) {
{
sender.sendMessage(C.RED + "Unknown Iris Command"); sender.sendMessage(C.RED + "Unknown Iris Command");
} }
}); });
return true; return true;
} }
static KList<String> enhanceArgs(String[] args) static KList<String> enhanceArgs(String[] args) {
{
return enhanceArgs(args, true); return enhanceArgs(args, true);
} }
static KList<String> enhanceArgs(String[] args, boolean trim) static KList<String> enhanceArgs(String[] args, boolean trim) {
{
KList<String> a = new KList<>(); KList<String> a = new KList<>();
if(args.length == 0) if (args.length == 0) {
{
return a; return a;
} }
StringBuilder flat = new StringBuilder(); StringBuilder flat = new StringBuilder();
for(String i : args) for (String i : args) {
{ if (trim) {
if(trim) if (i.trim().isEmpty()) {
{
if(i.trim().isEmpty())
{
continue; continue;
} }
flat.append(" ").append(i.trim()); flat.append(" ").append(i.trim());
} } else {
if (i.endsWith(" ")) {
else
{
if(i.endsWith(" "))
{
flat.append(" ").append(i.trim()).append(" "); flat.append(" ").append(i.trim()).append(" ");
} }
} }
@ -109,60 +98,40 @@ public interface DecreeSystem extends CommandExecutor, TabCompleter {
StringBuilder arg = new StringBuilder(); StringBuilder arg = new StringBuilder();
boolean quoting = false; boolean quoting = false;
for(int x = 0; x < flat.length(); x++) for (int x = 0; x < flat.length(); x++) {
{
char i = flat.charAt(x); char i = flat.charAt(x);
char j = x < flat.length() - 1 ? flat.charAt(x + 1) : i; char j = x < flat.length() - 1 ? flat.charAt(x + 1) : i;
boolean hasNext = x < flat.length(); boolean hasNext = x < flat.length();
if(i == ' ' && !quoting) if (i == ' ' && !quoting) {
{ if (!arg.toString().trim().isEmpty() && trim) {
if(!arg.toString().trim().isEmpty() && trim)
{
a.add(arg.toString().trim()); a.add(arg.toString().trim());
arg = new StringBuilder(); arg = new StringBuilder();
} }
} } else if (i == '"') {
if (!quoting && (arg.length() == 0)) {
else if(i == '"')
{
if(!quoting && (arg.length() == 0))
{
quoting = true; quoting = true;
} } else if (quoting) {
else if(quoting)
{
quoting = false; quoting = false;
if(hasNext && j == ' ') if (hasNext && j == ' ') {
{ if (!arg.toString().trim().isEmpty() && trim) {
if(!arg.toString().trim().isEmpty() && trim)
{
a.add(arg.toString().trim()); a.add(arg.toString().trim());
arg = new StringBuilder(); arg = new StringBuilder();
} }
} } else if (!hasNext) {
if (!arg.toString().trim().isEmpty() && trim) {
else if(!hasNext)
{
if(!arg.toString().trim().isEmpty() && trim)
{
a.add(arg.toString().trim()); a.add(arg.toString().trim());
arg = new StringBuilder(); arg = new StringBuilder();
} }
} }
} }
} } else {
else
{
arg.append(i); arg.append(i);
} }
} }
if(!arg.toString().trim().isEmpty() && trim) if (!arg.toString().trim().isEmpty() && trim) {
{
a.add(arg.toString().trim()); a.add(arg.toString().trim());
} }
@ -171,14 +140,13 @@ public interface DecreeSystem extends CommandExecutor, TabCompleter {
/** /**
* Get the handler for the specified type * Get the handler for the specified type
*
* @param type The type to handle * @param type The type to handle
* @return The corresponding {@link DecreeParameterHandler}, or null * @return The corresponding {@link DecreeParameterHandler}, or null
*/ */
static DecreeParameterHandler<?> getHandler(Class<?> type) { static DecreeParameterHandler<?> getHandler(Class<?> type) {
for(DecreeParameterHandler<?> i : handlers) for (DecreeParameterHandler<?> i : handlers) {
{ if (i.supports(type)) {
if(i.supports(type))
{
return i; return i;
} }
} }

View File

@ -38,6 +38,7 @@ public @interface Decree {
/** /**
* Only allow if studio mode is enabled * Only allow if studio mode is enabled
*
* @return defaults to false * @return defaults to false
*/ */
boolean studio() default false; boolean studio() default false;

View File

@ -1,3 +1,21 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2021 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.util.decree.context; package com.volmit.iris.util.decree.context;
import com.volmit.iris.core.tools.IrisToolbelt; import com.volmit.iris.core.tools.IrisToolbelt;
@ -6,14 +24,14 @@ import com.volmit.iris.util.decree.DecreeContextHandler;
import com.volmit.iris.util.plugin.VolmitSender; import com.volmit.iris.util.plugin.VolmitSender;
public class BiomeContextHandler implements DecreeContextHandler<IrisBiome> { public class BiomeContextHandler implements DecreeContextHandler<IrisBiome> {
public Class<IrisBiome> getType(){return IrisBiome.class;} public Class<IrisBiome> getType() {
return IrisBiome.class;
}
public IrisBiome handle(VolmitSender sender) public IrisBiome handle(VolmitSender sender) {
{
if (sender.isPlayer() if (sender.isPlayer()
&& IrisToolbelt.isIrisWorld(sender.player().getWorld()) && IrisToolbelt.isIrisWorld(sender.player().getWorld())
&& IrisToolbelt.access(sender.player().getWorld()).getEngine() != null) && IrisToolbelt.access(sender.player().getWorld()).getEngine() != null) {
{
return IrisToolbelt.access(sender.player().getWorld()).getEngine().getBiome(sender.player().getLocation()); return IrisToolbelt.access(sender.player().getWorld()).getEngine().getBiome(sender.player().getLocation());
} }

View File

@ -1,3 +1,21 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2021 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.util.decree.context; package com.volmit.iris.util.decree.context;
import com.volmit.iris.core.tools.IrisToolbelt; import com.volmit.iris.core.tools.IrisToolbelt;
@ -6,14 +24,14 @@ import com.volmit.iris.util.decree.DecreeContextHandler;
import com.volmit.iris.util.plugin.VolmitSender; import com.volmit.iris.util.plugin.VolmitSender;
public class DimensionContextHandler implements DecreeContextHandler<IrisDimension> { public class DimensionContextHandler implements DecreeContextHandler<IrisDimension> {
public Class<IrisDimension> getType(){return IrisDimension.class;} public Class<IrisDimension> getType() {
return IrisDimension.class;
}
public IrisDimension handle(VolmitSender sender) public IrisDimension handle(VolmitSender sender) {
{
if (sender.isPlayer() if (sender.isPlayer()
&& IrisToolbelt.isIrisWorld(sender.player().getWorld()) && IrisToolbelt.isIrisWorld(sender.player().getWorld())
&& IrisToolbelt.access(sender.player().getWorld()).getEngine() != null) && IrisToolbelt.access(sender.player().getWorld()).getEngine() != null) {
{
return IrisToolbelt.access(sender.player().getWorld()).getEngine().getDimension(); return IrisToolbelt.access(sender.player().getWorld()).getEngine().getDimension();
} }

View File

@ -1,3 +1,21 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2021 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.util.decree.context; package com.volmit.iris.util.decree.context;
import com.volmit.iris.core.tools.IrisToolbelt; import com.volmit.iris.core.tools.IrisToolbelt;
@ -16,8 +34,7 @@ public class GeneratorContextHandler implements DecreeContextHandler<IrisGenerat
public IrisGenerator handle(VolmitSender sender) { public IrisGenerator handle(VolmitSender sender) {
if (sender.isPlayer() if (sender.isPlayer()
&& IrisToolbelt.isIrisWorld(sender.player().getWorld()) && IrisToolbelt.isIrisWorld(sender.player().getWorld())
&& IrisToolbelt.access(sender.player().getWorld()).getEngine() != null) && IrisToolbelt.access(sender.player().getWorld()).getEngine() != null) {
{
Engine engine = IrisToolbelt.access(sender.player().getWorld()).getEngine(); Engine engine = IrisToolbelt.access(sender.player().getWorld()).getEngine();
return engine.getData().getGeneratorLoader().load(engine.getBiome(sender.player().getLocation()).getGenerators().getRandom().getGenerator()); return engine.getData().getGeneratorLoader().load(engine.getBiome(sender.player().getLocation()).getGenerators().getRandom().getGenerator());
} }

View File

@ -1,3 +1,21 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2021 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.util.decree.context; package com.volmit.iris.util.decree.context;
import com.volmit.iris.core.tools.IrisToolbelt; import com.volmit.iris.core.tools.IrisToolbelt;
@ -6,14 +24,14 @@ import com.volmit.iris.util.decree.DecreeContextHandler;
import com.volmit.iris.util.plugin.VolmitSender; import com.volmit.iris.util.plugin.VolmitSender;
public class RegionContextHandler implements DecreeContextHandler<IrisRegion> { public class RegionContextHandler implements DecreeContextHandler<IrisRegion> {
public Class<IrisRegion> getType(){return IrisRegion.class;} public Class<IrisRegion> getType() {
return IrisRegion.class;
}
public IrisRegion handle(VolmitSender sender) public IrisRegion handle(VolmitSender sender) {
{
if (sender.isPlayer() if (sender.isPlayer()
&& IrisToolbelt.isIrisWorld(sender.player().getWorld()) && IrisToolbelt.isIrisWorld(sender.player().getWorld())
&& IrisToolbelt.access(sender.player().getWorld()).getEngine() != null) && IrisToolbelt.access(sender.player().getWorld()).getEngine() != null) {
{
return IrisToolbelt.access(sender.player().getWorld()).getEngine().getRegion(sender.player().getLocation()); return IrisToolbelt.access(sender.player().getWorld()).getEngine().getRegion(sender.player().getLocation());
} }

View File

@ -1,3 +1,21 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2021 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.util.decree.context; package com.volmit.iris.util.decree.context;
import com.volmit.iris.util.decree.DecreeContextHandler; import com.volmit.iris.util.decree.DecreeContextHandler;
@ -5,10 +23,11 @@ import com.volmit.iris.util.plugin.VolmitSender;
import org.bukkit.World; import org.bukkit.World;
public class WorldContextHandler implements DecreeContextHandler<World> { public class WorldContextHandler implements DecreeContextHandler<World> {
public Class<World> getType(){return World.class;} public Class<World> getType() {
return World.class;
}
public World handle(VolmitSender sender) public World handle(VolmitSender sender) {
{
return sender.isPlayer() ? sender.player().getWorld() : null; return sender.isPlayer() ? sender.player().getWorld() : null;
} }
} }

View File

@ -18,8 +18,6 @@
package com.volmit.iris.util.decree.exceptions; package com.volmit.iris.util.decree.exceptions;
import com.volmit.iris.util.collection.KList;
/** /**
* Thrown when more than one option is available for a singular mapping<br> * Thrown when more than one option is available for a singular mapping<br>
* Like having a hashmap where one input maps to two outputs. * Like having a hashmap where one input maps to two outputs.

View File

@ -21,13 +21,11 @@ package com.volmit.iris.util.decree.handlers;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.core.project.loader.IrisData; import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.object.biome.IrisBiome; import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.dimensional.IrisDimension;
import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap; import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.decree.DecreeParameterHandler; import com.volmit.iris.util.decree.DecreeParameterHandler;
import com.volmit.iris.util.decree.exceptions.DecreeParsingException; import com.volmit.iris.util.decree.exceptions.DecreeParsingException;
import com.volmit.iris.util.decree.exceptions.DecreeWhichException; import com.volmit.iris.util.decree.exceptions.DecreeWhichException;
import com.volmit.iris.util.math.RNG;
import java.io.File; import java.io.File;
@ -37,12 +35,10 @@ public class BiomeHandler implements DecreeParameterHandler<IrisBiome> {
KMap<String, IrisBiome> p = new KMap<>(); KMap<String, IrisBiome> p = new KMap<>();
//noinspection ConstantConditions //noinspection ConstantConditions
for(File i : Iris.instance.getDataFolder("packs").listFiles()) for (File i : Iris.instance.getDataFolder("packs").listFiles()) {
{
if (i.isDirectory()) { if (i.isDirectory()) {
IrisData data = new IrisData(i, true); IrisData data = new IrisData(i, true);
for (IrisBiome j : data.getBiomeLoader().loadAll(data.getBiomeLoader().getPossibleKeys())) for (IrisBiome j : data.getBiomeLoader().loadAll(data.getBiomeLoader().getPossibleKeys())) {
{
p.putIfAbsent(j.getLoadKey(), j); p.putIfAbsent(j.getLoadKey(), j);
} }
@ -60,27 +56,19 @@ public class BiomeHandler implements DecreeParameterHandler<IrisBiome> {
@Override @Override
public IrisBiome parse(String in) throws DecreeParsingException, DecreeWhichException { public IrisBiome parse(String in) throws DecreeParsingException, DecreeWhichException {
try try {
{
KList<IrisBiome> options = getPossibilities(in); KList<IrisBiome> options = getPossibilities(in);
if(options.isEmpty()) if (options.isEmpty()) {
{
throw new DecreeParsingException("Unable to find Biome \"" + in + "\""); throw new DecreeParsingException("Unable to find Biome \"" + in + "\"");
} } else if (options.size() > 1) {
else if(options.size() > 1)
{
throw new DecreeWhichException(); throw new DecreeWhichException();
} }
return options.get(0); return options.get(0);
} } catch (DecreeParsingException e) {
catch(DecreeParsingException e){
throw e; throw e;
} } catch (Throwable e) {
catch(Throwable e)
{
throw new DecreeParsingException("Unable to find Biome \"" + in + "\" because of an uncaught exception: " + e); throw new DecreeParsingException("Unable to find Biome \"" + in + "\" because of an uncaught exception: " + e);
} }
} }
@ -91,8 +79,7 @@ public class BiomeHandler implements DecreeParameterHandler<IrisBiome> {
} }
@Override @Override
public String getRandomDefault() public String getRandomDefault() {
{
return "biome"; return "biome";
} }
} }

View File

@ -30,7 +30,6 @@ import com.volmit.iris.util.plugin.VolmitSender;
import org.bukkit.FluidCollisionMode; import org.bukkit.FluidCollisionMode;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.util.BlockVector; import org.bukkit.util.BlockVector;
import org.bukkit.util.Vector;
public class BlockVectorHandler implements DecreeParameterHandler<BlockVector> { public class BlockVectorHandler implements DecreeParameterHandler<BlockVector> {
@Override @Override
@ -38,8 +37,7 @@ public class BlockVectorHandler implements DecreeParameterHandler<BlockVector> {
KList<BlockVector> vx = new KList<>(); KList<BlockVector> vx = new KList<>();
VolmitSender s = DecreeContext.get(); VolmitSender s = DecreeContext.get();
if(s.isPlayer()) if (s.isPlayer()) {
{
vx.add(s.player().getLocation().toVector().toBlockVector()); vx.add(s.player().getLocation().toVector().toBlockVector());
} }
@ -48,8 +46,7 @@ public class BlockVectorHandler implements DecreeParameterHandler<BlockVector> {
@Override @Override
public String toString(BlockVector v) { public String toString(BlockVector v) {
if(v.getY() == 0) if (v.getY() == 0) {
{
return Form.f(v.getBlockX(), 2) + "," + Form.f(v.getBlockZ(), 2); return Form.f(v.getBlockX(), 2) + "," + Form.f(v.getBlockZ(), 2);
} }
@ -59,69 +56,43 @@ public class BlockVectorHandler implements DecreeParameterHandler<BlockVector> {
@Override @Override
public BlockVector parse(String in) throws DecreeParsingException, DecreeWhichException { public BlockVector parse(String in) throws DecreeParsingException, DecreeWhichException {
try { try {
if (in.contains(",")) if (in.contains(",")) {
{
String[] comp = in.split("\\Q,\\E"); String[] comp = in.split("\\Q,\\E");
if(comp.length == 2) if (comp.length == 2) {
{
return new BlockVector(Integer.parseInt(comp[0].trim()), 0, Integer.parseInt(comp[1].trim())); return new BlockVector(Integer.parseInt(comp[0].trim()), 0, Integer.parseInt(comp[1].trim()));
} } else if (comp.length == 3) {
else if(comp.length == 3)
{
return new BlockVector(Integer.parseInt(comp[0].trim()), return new BlockVector(Integer.parseInt(comp[0].trim()),
Integer.parseInt(comp[1].trim()), Integer.parseInt(comp[1].trim()),
Integer.parseInt(comp[2].trim())); Integer.parseInt(comp[2].trim()));
} } else {
else
{
throw new DecreeParsingException("Could not parse components for vector. You have " + comp.length + " components. Expected 2 or 3."); throw new DecreeParsingException("Could not parse components for vector. You have " + comp.length + " components. Expected 2 or 3.");
} }
} } else if (in.equalsIgnoreCase("here") || in.equalsIgnoreCase("me") || in.equalsIgnoreCase("self")) {
if (!DecreeContext.get().isPlayer()) {
else if(in.equalsIgnoreCase("here") ||in.equalsIgnoreCase("me") ||in.equalsIgnoreCase("self"))
{
if(!DecreeContext.get().isPlayer())
{
throw new DecreeParsingException("You cannot specify me,self,here as a console."); throw new DecreeParsingException("You cannot specify me,self,here as a console.");
} }
return DecreeContext.get().player().getLocation().toVector().toBlockVector(); return DecreeContext.get().player().getLocation().toVector().toBlockVector();
} } else if (in.equalsIgnoreCase("look") || in.equalsIgnoreCase("cursor") || in.equalsIgnoreCase("crosshair")) {
if (!DecreeContext.get().isPlayer()) {
else if(in.equalsIgnoreCase("look") ||in.equalsIgnoreCase("cursor") ||in.equalsIgnoreCase("crosshair"))
{
if(!DecreeContext.get().isPlayer())
{
throw new DecreeParsingException("You cannot specify look,cursor,crosshair as a console."); throw new DecreeParsingException("You cannot specify look,cursor,crosshair as a console.");
} }
return DecreeContext.get().player().getTargetBlockExact(256, FluidCollisionMode.NEVER).getLocation().toVector().toBlockVector(); return DecreeContext.get().player().getTargetBlockExact(256, FluidCollisionMode.NEVER).getLocation().toVector().toBlockVector();
} } else if (in.trim().toLowerCase().startsWith("player:")) {
else if(in.trim().toLowerCase().startsWith("player:"))
{
String v = in.trim().split("\\Q:\\E")[1]; String v = in.trim().split("\\Q:\\E")[1];
KList<?> px = DecreeSystem.getHandler(Player.class).getPossibilities(v); KList<?> px = DecreeSystem.getHandler(Player.class).getPossibilities(v);
if(px != null && px.isNotEmpty()) if (px != null && px.isNotEmpty()) {
{
return ((Player) px.get(0)).getLocation().toVector().toBlockVector(); return ((Player) px.get(0)).getLocation().toVector().toBlockVector();
} } else if (px == null || px.isEmpty()) {
else if(px == null || px.isEmpty())
{
throw new DecreeParsingException("Cannot find player: " + v); throw new DecreeParsingException("Cannot find player: " + v);
} }
} }
} } catch (Throwable e) {
catch(Throwable e)
{
throw new DecreeParsingException("Unable to get Vector for \"" + in + "\" because of an uncaught exception: " + e); throw new DecreeParsingException("Unable to get Vector for \"" + in + "\" because of an uncaught exception: " + e);
} }
@ -134,8 +105,7 @@ public class BlockVectorHandler implements DecreeParameterHandler<BlockVector> {
} }
@Override @Override
public String getRandomDefault() public String getRandomDefault() {
{
return M.r(0.5) ? "0,0" : "0,0,0"; return M.r(0.5) ? "0,0" : "0,0,0";
} }
} }

View File

@ -22,7 +22,6 @@ import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.decree.DecreeParameterHandler; import com.volmit.iris.util.decree.DecreeParameterHandler;
import com.volmit.iris.util.decree.exceptions.DecreeParsingException; import com.volmit.iris.util.decree.exceptions.DecreeParsingException;
import com.volmit.iris.util.math.M; import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.RNG;
public class BooleanHandler implements DecreeParameterHandler<Boolean> { public class BooleanHandler implements DecreeParameterHandler<Boolean> {
@Override @Override
@ -37,13 +36,9 @@ public class BooleanHandler implements DecreeParameterHandler<Boolean> {
@Override @Override
public Boolean parse(String in) throws DecreeParsingException { public Boolean parse(String in) throws DecreeParsingException {
try try {
{
return Boolean.parseBoolean(in); return Boolean.parseBoolean(in);
} } catch (Throwable e) {
catch(Throwable e)
{
throw new DecreeParsingException("Unable to parse boolean \"" + in + "\""); throw new DecreeParsingException("Unable to parse boolean \"" + in + "\"");
} }
} }
@ -54,8 +49,7 @@ public class BooleanHandler implements DecreeParameterHandler<Boolean> {
} }
@Override @Override
public String getRandomDefault() public String getRandomDefault() {
{
return M.r(0.5) + ""; return M.r(0.5) + "";
} }
} }

View File

@ -36,13 +36,9 @@ public class ByteHandler implements DecreeParameterHandler<Byte> {
@Override @Override
public Byte parse(String in) throws DecreeParsingException { public Byte parse(String in) throws DecreeParsingException {
try try {
{
return Byte.parseByte(in); return Byte.parseByte(in);
} } catch (Throwable e) {
catch(Throwable e)
{
throw new DecreeParsingException("Unable to parse byte \"" + in + "\""); throw new DecreeParsingException("Unable to parse byte \"" + in + "\"");
} }
} }
@ -53,8 +49,7 @@ public class ByteHandler implements DecreeParameterHandler<Byte> {
} }
@Override @Override
public String getRandomDefault() public String getRandomDefault() {
{
return RNG.r.i(0, Byte.MAX_VALUE) + ""; return RNG.r.i(0, Byte.MAX_VALUE) + "";
} }
} }

View File

@ -26,8 +26,6 @@ import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.decree.DecreeParameterHandler; import com.volmit.iris.util.decree.DecreeParameterHandler;
import com.volmit.iris.util.decree.exceptions.DecreeParsingException; import com.volmit.iris.util.decree.exceptions.DecreeParsingException;
import com.volmit.iris.util.decree.exceptions.DecreeWhichException; import com.volmit.iris.util.decree.exceptions.DecreeWhichException;
import org.bukkit.Bukkit;
import org.bukkit.World;
import java.io.File; import java.io.File;
@ -37,12 +35,10 @@ public class DimensionHandler implements DecreeParameterHandler<IrisDimension> {
KMap<String, IrisDimension> p = new KMap<>(); KMap<String, IrisDimension> p = new KMap<>();
//noinspection ConstantConditions //noinspection ConstantConditions
for(File i : Iris.instance.getDataFolder("packs").listFiles()) for (File i : Iris.instance.getDataFolder("packs").listFiles()) {
{
if (i.isDirectory()) { if (i.isDirectory()) {
IrisData data = new IrisData(i, true); IrisData data = new IrisData(i, true);
for (IrisDimension j : data.getDimensionLoader().loadAll(data.getDimensionLoader().getPossibleKeys())) for (IrisDimension j : data.getDimensionLoader().loadAll(data.getDimensionLoader().getPossibleKeys())) {
{
p.putIfAbsent(j.getLoadKey(), j); p.putIfAbsent(j.getLoadKey(), j);
} }
@ -60,27 +56,19 @@ public class DimensionHandler implements DecreeParameterHandler<IrisDimension> {
@Override @Override
public IrisDimension parse(String in) throws DecreeParsingException, DecreeWhichException { public IrisDimension parse(String in) throws DecreeParsingException, DecreeWhichException {
try try {
{
KList<IrisDimension> options = getPossibilities(in); KList<IrisDimension> options = getPossibilities(in);
if(options.isEmpty()) if (options.isEmpty()) {
{
throw new DecreeParsingException("Unable to find Dimension \"" + in + "\""); throw new DecreeParsingException("Unable to find Dimension \"" + in + "\"");
} } else if (options.size() > 1) {
else if(options.size() > 1)
{
throw new DecreeWhichException(); throw new DecreeWhichException();
} }
return options.get(0); return options.get(0);
} } catch (DecreeParsingException e) {
catch(DecreeParsingException e){
throw e; throw e;
} } catch (Throwable e) {
catch(Throwable e)
{
throw new DecreeParsingException("Unable to find Dimension \"" + in + "\" because of an uncaught exception: " + e); throw new DecreeParsingException("Unable to find Dimension \"" + in + "\" because of an uncaught exception: " + e);
} }
} }
@ -91,8 +79,7 @@ public class DimensionHandler implements DecreeParameterHandler<IrisDimension> {
} }
@Override @Override
public String getRandomDefault() public String getRandomDefault() {
{
return "dimension"; return "dimension";
} }
} }

View File

@ -34,15 +34,11 @@ public class DoubleHandler implements DecreeParameterHandler<Double> {
@Override @Override
public Double parse(String in) throws DecreeParsingException { public Double parse(String in) throws DecreeParsingException {
try try {
{
AtomicReference<String> r = new AtomicReference<>(in); AtomicReference<String> r = new AtomicReference<>(in);
double m = getMultiplier(r); double m = getMultiplier(r);
return Double.parseDouble(r.get()) * m; return Double.parseDouble(r.get()) * m;
} } catch (Throwable e) {
catch(Throwable e)
{
throw new DecreeParsingException("Unable to parse double \"" + in + "\""); throw new DecreeParsingException("Unable to parse double \"" + in + "\"");
} }
} }
@ -58,8 +54,7 @@ public class DoubleHandler implements DecreeParameterHandler<Double> {
} }
@Override @Override
public String getRandomDefault() public String getRandomDefault() {
{
return Form.f(RNG.r.d(0, 99.99), 1) + ""; return Form.f(RNG.r.d(0, 99.99), 1) + "";
} }
} }

View File

@ -1,8 +1,25 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2021 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.util.decree.handlers; package com.volmit.iris.util.decree.handlers;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.core.project.loader.IrisData; import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.object.dimensional.IrisDimension;
import com.volmit.iris.engine.object.entity.IrisEntity; import com.volmit.iris.engine.object.entity.IrisEntity;
import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap; import com.volmit.iris.util.collection.KMap;
@ -24,12 +41,10 @@ public class EntityHandler implements DecreeParameterHandler<IrisEntity> {
KMap<String, IrisEntity> p = new KMap<>(); KMap<String, IrisEntity> p = new KMap<>();
//noinspection ConstantConditions //noinspection ConstantConditions
for(File i : Iris.instance.getDataFolder("packs").listFiles()) for (File i : Iris.instance.getDataFolder("packs").listFiles()) {
{
if (i.isDirectory()) { if (i.isDirectory()) {
IrisData data = new IrisData(i, true); IrisData data = new IrisData(i, true);
for (IrisEntity j : data.getEntityLoader().loadAll(data.getEntityLoader().getPossibleKeys())) for (IrisEntity j : data.getEntityLoader().loadAll(data.getEntityLoader().getPossibleKeys())) {
{
p.putIfAbsent(j.getLoadKey(), j); p.putIfAbsent(j.getLoadKey(), j);
} }
@ -61,27 +76,19 @@ public class EntityHandler implements DecreeParameterHandler<IrisEntity> {
*/ */
@Override @Override
public IrisEntity parse(String in) throws DecreeParsingException, DecreeWhichException { public IrisEntity parse(String in) throws DecreeParsingException, DecreeWhichException {
try try {
{
KList<IrisEntity> options = getPossibilities(in); KList<IrisEntity> options = getPossibilities(in);
if(options.isEmpty()) if (options.isEmpty()) {
{
throw new DecreeParsingException("Unable to find Entity \"" + in + "\""); throw new DecreeParsingException("Unable to find Entity \"" + in + "\"");
} } else if (options.size() > 1) {
else if(options.size() > 1)
{
throw new DecreeWhichException(); throw new DecreeWhichException();
} }
return options.get(0); return options.get(0);
} } catch (DecreeParsingException e) {
catch(DecreeParsingException e){
throw e; throw e;
} } catch (Throwable e) {
catch(Throwable e)
{
throw new DecreeParsingException("Unable to find Entity \"" + in + "\" because of an uncaught exception: " + e); throw new DecreeParsingException("Unable to find Entity \"" + in + "\" because of an uncaught exception: " + e);
} }
} }
@ -98,8 +105,7 @@ public class EntityHandler implements DecreeParameterHandler<IrisEntity> {
} }
@Override @Override
public String getRandomDefault() public String getRandomDefault() {
{
return "entity"; return "entity";
} }
} }

View File

@ -34,15 +34,11 @@ public class FloatHandler implements DecreeParameterHandler<Float> {
@Override @Override
public Float parse(String in) throws DecreeParsingException { public Float parse(String in) throws DecreeParsingException {
try try {
{
AtomicReference<String> r = new AtomicReference<>(in); AtomicReference<String> r = new AtomicReference<>(in);
double m = getMultiplier(r); double m = getMultiplier(r);
return (float) (Float.parseFloat(r.get()) * m); return (float) (Float.parseFloat(r.get()) * m);
} } catch (Throwable e) {
catch(Throwable e)
{
throw new DecreeParsingException("Unable to parse float \"" + in + "\""); throw new DecreeParsingException("Unable to parse float \"" + in + "\"");
} }
} }
@ -58,8 +54,7 @@ public class FloatHandler implements DecreeParameterHandler<Float> {
} }
@Override @Override
public String getRandomDefault() public String getRandomDefault() {
{
return Form.f(RNG.r.d(0, 99.99), 1) + ""; return Form.f(RNG.r.d(0, 99.99), 1) + "";
} }
} }

View File

@ -1,3 +1,21 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2021 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.util.decree.handlers; package com.volmit.iris.util.decree.handlers;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
@ -17,12 +35,10 @@ public class GeneratorHandler implements DecreeParameterHandler<IrisGenerator> {
KMap<String, IrisGenerator> p = new KMap<>(); KMap<String, IrisGenerator> p = new KMap<>();
//noinspection ConstantConditions //noinspection ConstantConditions
for(File i : Iris.instance.getDataFolder("packs").listFiles()) for (File i : Iris.instance.getDataFolder("packs").listFiles()) {
{
if (i.isDirectory()) { if (i.isDirectory()) {
IrisData data = new IrisData(i, true); IrisData data = new IrisData(i, true);
for (IrisGenerator j : data.getGeneratorLoader().loadAll(data.getGeneratorLoader().getPossibleKeys())) for (IrisGenerator j : data.getGeneratorLoader().loadAll(data.getGeneratorLoader().getPossibleKeys())) {
{
p.putIfAbsent(j.getLoadKey(), j); p.putIfAbsent(j.getLoadKey(), j);
} }
@ -40,27 +56,19 @@ public class GeneratorHandler implements DecreeParameterHandler<IrisGenerator> {
@Override @Override
public IrisGenerator parse(String in) throws DecreeParsingException, DecreeWhichException { public IrisGenerator parse(String in) throws DecreeParsingException, DecreeWhichException {
try try {
{
KList<IrisGenerator> options = getPossibilities(in); KList<IrisGenerator> options = getPossibilities(in);
if(options.isEmpty()) if (options.isEmpty()) {
{
throw new DecreeParsingException("Unable to find Generator \"" + in + "\""); throw new DecreeParsingException("Unable to find Generator \"" + in + "\"");
} } else if (options.size() > 1) {
else if(options.size() > 1)
{
throw new DecreeWhichException(); throw new DecreeWhichException();
} }
return options.get(0); return options.get(0);
} } catch (DecreeParsingException e) {
catch(DecreeParsingException e){
throw e; throw e;
} } catch (Throwable e) {
catch(Throwable e)
{
throw new DecreeParsingException("Unable to find Generator \"" + in + "\" because of an uncaught exception: " + e); throw new DecreeParsingException("Unable to find Generator \"" + in + "\" because of an uncaught exception: " + e);
} }
} }
@ -71,8 +79,7 @@ public class GeneratorHandler implements DecreeParameterHandler<IrisGenerator> {
} }
@Override @Override
public String getRandomDefault() public String getRandomDefault() {
{
return "generator"; return "generator";
} }
} }

View File

@ -21,10 +21,8 @@ package com.volmit.iris.util.decree.handlers;
import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.decree.DecreeParameterHandler; import com.volmit.iris.util.decree.DecreeParameterHandler;
import com.volmit.iris.util.decree.exceptions.DecreeParsingException; import com.volmit.iris.util.decree.exceptions.DecreeParsingException;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.math.RNG;
import java.util.Locale;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
public class IntegerHandler implements DecreeParameterHandler<Integer> { public class IntegerHandler implements DecreeParameterHandler<Integer> {
@ -35,15 +33,11 @@ public class IntegerHandler implements DecreeParameterHandler<Integer> {
@Override @Override
public Integer parse(String in) throws DecreeParsingException { public Integer parse(String in) throws DecreeParsingException {
try try {
{
AtomicReference<String> r = new AtomicReference<>(in); AtomicReference<String> r = new AtomicReference<>(in);
double m = getMultiplier(r); double m = getMultiplier(r);
return (int) (Integer.valueOf(r.get()).doubleValue() * m); return (int) (Integer.valueOf(r.get()).doubleValue() * m);
} } catch (Throwable e) {
catch(Throwable e)
{
throw new DecreeParsingException("Unable to parse integer \"" + in + "\""); throw new DecreeParsingException("Unable to parse integer \"" + in + "\"");
} }
} }
@ -59,8 +53,7 @@ public class IntegerHandler implements DecreeParameterHandler<Integer> {
} }
@Override @Override
public String getRandomDefault() public String getRandomDefault() {
{
return RNG.r.i(0, 99) + ""; return RNG.r.i(0, 99) + "";
} }
} }

View File

@ -33,15 +33,11 @@ public class LongHandler implements DecreeParameterHandler<Long> {
@Override @Override
public Long parse(String in) throws DecreeParsingException { public Long parse(String in) throws DecreeParsingException {
try try {
{
AtomicReference<String> r = new AtomicReference<>(in); AtomicReference<String> r = new AtomicReference<>(in);
double m = getMultiplier(r); double m = getMultiplier(r);
return (long) (Long.valueOf(r.get()).doubleValue() * m); return (long) (Long.valueOf(r.get()).doubleValue() * m);
} } catch (Throwable e) {
catch(Throwable e)
{
throw new DecreeParsingException("Unable to parse long \"" + in + "\""); throw new DecreeParsingException("Unable to parse long \"" + in + "\"");
} }
} }
@ -57,8 +53,7 @@ public class LongHandler implements DecreeParameterHandler<Long> {
} }
@Override @Override
public String getRandomDefault() public String getRandomDefault() {
{
return RNG.r.i(0, 99) + ""; return RNG.r.i(0, 99) + "";
} }
} }

View File

@ -40,25 +40,17 @@ public class PlayerHandler implements DecreeParameterHandler<Player> {
@Override @Override
public Player parse(String in) throws DecreeParsingException, DecreeWhichException { public Player parse(String in) throws DecreeParsingException, DecreeWhichException {
try try {
{
KList<Player> options = getPossibilities(in); KList<Player> options = getPossibilities(in);
if(options.isEmpty()) if (options.isEmpty()) {
{
throw new DecreeParsingException("Unable to find Player \"" + in + "\""); throw new DecreeParsingException("Unable to find Player \"" + in + "\"");
} } else if (options.size() > 1) {
else if(options.size() > 1)
{
throw new DecreeWhichException(); throw new DecreeWhichException();
} }
return options.get(0); return options.get(0);
} } catch (Throwable e) {
catch(Throwable e)
{
throw new DecreeParsingException("Unable to find Player \"" + in + "\" because of an uncaught exception: " + e); throw new DecreeParsingException("Unable to find Player \"" + in + "\" because of an uncaught exception: " + e);
} }
} }
@ -69,8 +61,7 @@ public class PlayerHandler implements DecreeParameterHandler<Player> {
} }
@Override @Override
public String getRandomDefault() public String getRandomDefault() {
{
return "playername"; return "playername";
} }
} }

View File

@ -35,12 +35,10 @@ public class RegionHandler implements DecreeParameterHandler<IrisRegion> {
KMap<String, IrisRegion> p = new KMap<>(); KMap<String, IrisRegion> p = new KMap<>();
//noinspection ConstantConditions //noinspection ConstantConditions
for(File i : Iris.instance.getDataFolder("packs").listFiles()) for (File i : Iris.instance.getDataFolder("packs").listFiles()) {
{
if (i.isDirectory()) { if (i.isDirectory()) {
IrisData data = new IrisData(i, true); IrisData data = new IrisData(i, true);
for (IrisRegion j : data.getRegionLoader().loadAll(data.getRegionLoader().getPossibleKeys())) for (IrisRegion j : data.getRegionLoader().loadAll(data.getRegionLoader().getPossibleKeys())) {
{
p.putIfAbsent(j.getLoadKey(), j); p.putIfAbsent(j.getLoadKey(), j);
} }
@ -58,27 +56,19 @@ public class RegionHandler implements DecreeParameterHandler<IrisRegion> {
@Override @Override
public IrisRegion parse(String in) throws DecreeParsingException, DecreeWhichException { public IrisRegion parse(String in) throws DecreeParsingException, DecreeWhichException {
try try {
{
KList<IrisRegion> options = getPossibilities(in); KList<IrisRegion> options = getPossibilities(in);
if(options.isEmpty()) if (options.isEmpty()) {
{
throw new DecreeParsingException("Unable to find Region \"" + in + "\""); throw new DecreeParsingException("Unable to find Region \"" + in + "\"");
} } else if (options.size() > 1) {
else if(options.size() > 1)
{
throw new DecreeWhichException(); throw new DecreeWhichException();
} }
return options.get(0); return options.get(0);
} } catch (DecreeParsingException e) {
catch(DecreeParsingException e){
throw e; throw e;
} } catch (Throwable e) {
catch(Throwable e)
{
throw new DecreeParsingException("Unable to find Region \"" + in + "\" because of an uncaught exception: " + e); throw new DecreeParsingException("Unable to find Region \"" + in + "\" because of an uncaught exception: " + e);
} }
} }
@ -89,8 +79,7 @@ public class RegionHandler implements DecreeParameterHandler<IrisRegion> {
} }
@Override @Override
public String getRandomDefault() public String getRandomDefault() {
{
return "region"; return "region";
} }
} }

View File

@ -1,3 +1,21 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2021 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.util.decree.handlers; package com.volmit.iris.util.decree.handlers;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
@ -17,12 +35,10 @@ public class ScriptHandler implements DecreeParameterHandler<IrisScript> {
KMap<String, IrisScript> p = new KMap<>(); KMap<String, IrisScript> p = new KMap<>();
//noinspection ConstantConditions //noinspection ConstantConditions
for(File i : Iris.instance.getDataFolder("packs").listFiles()) for (File i : Iris.instance.getDataFolder("packs").listFiles()) {
{
if (i.isDirectory()) { if (i.isDirectory()) {
IrisData data = new IrisData(i, true); IrisData data = new IrisData(i, true);
for (IrisScript j : data.getScriptLoader().loadAll(data.getScriptLoader().getPossibleKeys())) for (IrisScript j : data.getScriptLoader().loadAll(data.getScriptLoader().getPossibleKeys())) {
{
p.putIfAbsent(j.getLoadKey(), j); p.putIfAbsent(j.getLoadKey(), j);
} }
@ -40,27 +56,19 @@ public class ScriptHandler implements DecreeParameterHandler<IrisScript> {
@Override @Override
public IrisScript parse(String in) throws DecreeParsingException, DecreeWhichException { public IrisScript parse(String in) throws DecreeParsingException, DecreeWhichException {
try try {
{
KList<IrisScript> options = getPossibilities(in); KList<IrisScript> options = getPossibilities(in);
if(options.isEmpty()) if (options.isEmpty()) {
{
throw new DecreeParsingException("Unable to find Script \"" + in + "\""); throw new DecreeParsingException("Unable to find Script \"" + in + "\"");
} } else if (options.size() > 1) {
else if(options.size() > 1)
{
throw new DecreeWhichException(); throw new DecreeWhichException();
} }
return options.get(0); return options.get(0);
} } catch (DecreeParsingException e) {
catch(DecreeParsingException e){
throw e; throw e;
} } catch (Throwable e) {
catch(Throwable e)
{
throw new DecreeParsingException("Unable to find Script \"" + in + "\" because of an uncaught exception: " + e); throw new DecreeParsingException("Unable to find Script \"" + in + "\" because of an uncaught exception: " + e);
} }
} }
@ -71,8 +79,7 @@ public class ScriptHandler implements DecreeParameterHandler<IrisScript> {
} }
@Override @Override
public String getRandomDefault() public String getRandomDefault() {
{
return "script"; return "script";
} }
} }

View File

@ -33,15 +33,11 @@ public class ShortHandler implements DecreeParameterHandler<Short> {
@Override @Override
public Short parse(String in) throws DecreeParsingException { public Short parse(String in) throws DecreeParsingException {
try try {
{
AtomicReference<String> r = new AtomicReference<>(in); AtomicReference<String> r = new AtomicReference<>(in);
double m = getMultiplier(r); double m = getMultiplier(r);
return (short) (Short.valueOf(r.get()).doubleValue() * m); return (short) (Short.valueOf(r.get()).doubleValue() * m);
} } catch (Throwable e) {
catch(Throwable e)
{
throw new DecreeParsingException("Unable to parse short \"" + in + "\""); throw new DecreeParsingException("Unable to parse short \"" + in + "\"");
} }
} }
@ -57,8 +53,7 @@ public class ShortHandler implements DecreeParameterHandler<Short> {
} }
@Override @Override
public String getRandomDefault() public String getRandomDefault() {
{
return RNG.r.i(0, 99) + ""; return RNG.r.i(0, 99) + "";
} }
} }

View File

@ -21,7 +21,6 @@ package com.volmit.iris.util.decree.handlers;
import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.decree.DecreeParameterHandler; import com.volmit.iris.util.decree.DecreeParameterHandler;
import com.volmit.iris.util.decree.exceptions.DecreeParsingException; import com.volmit.iris.util.decree.exceptions.DecreeParsingException;
import com.volmit.iris.util.math.RNG;
/** /**
* Abstraction can sometimes breed stupidity * Abstraction can sometimes breed stupidity
@ -48,8 +47,7 @@ public class StringHandler implements DecreeParameterHandler<String> {
} }
@Override @Override
public String getRandomDefault() public String getRandomDefault() {
{
return new KList<String>().qadd("text").qadd("string") return new KList<String>().qadd("text").qadd("string")
.qadd("blah").qadd("derp").qadd("yolo").getRandom(); .qadd("blah").qadd("derp").qadd("yolo").getRandom();
} }

View File

@ -27,23 +27,18 @@ import com.volmit.iris.util.decree.exceptions.DecreeWhichException;
import com.volmit.iris.util.format.Form; import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.math.M; import com.volmit.iris.util.math.M;
import com.volmit.iris.util.plugin.VolmitSender; import com.volmit.iris.util.plugin.VolmitSender;
import org.bukkit.Bukkit;
import org.bukkit.FluidCollisionMode; import org.bukkit.FluidCollisionMode;
import org.bukkit.World;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.util.BlockVector; import org.bukkit.util.BlockVector;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
import java.util.Locale;
public class VectorHandler implements DecreeParameterHandler<Vector> { public class VectorHandler implements DecreeParameterHandler<Vector> {
@Override @Override
public KList<Vector> getPossibilities() { public KList<Vector> getPossibilities() {
KList<Vector> vx = new KList<>(); KList<Vector> vx = new KList<>();
VolmitSender s = DecreeContext.get(); VolmitSender s = DecreeContext.get();
if(s.isPlayer()) if (s.isPlayer()) {
{
vx.add(s.player().getLocation().toVector()); vx.add(s.player().getLocation().toVector());
} }
@ -52,8 +47,7 @@ public class VectorHandler implements DecreeParameterHandler<Vector> {
@Override @Override
public String toString(Vector v) { public String toString(Vector v) {
if(v.getY() == 0) if (v.getY() == 0) {
{
return Form.f(v.getX(), 2) + "," + Form.f(v.getZ(), 2); return Form.f(v.getX(), 2) + "," + Form.f(v.getZ(), 2);
} }
@ -63,69 +57,43 @@ public class VectorHandler implements DecreeParameterHandler<Vector> {
@Override @Override
public Vector parse(String in) throws DecreeParsingException, DecreeWhichException { public Vector parse(String in) throws DecreeParsingException, DecreeWhichException {
try { try {
if (in.contains(",")) if (in.contains(",")) {
{
String[] comp = in.split("\\Q,\\E"); String[] comp = in.split("\\Q,\\E");
if(comp.length == 2) if (comp.length == 2) {
{
return new BlockVector(Double.parseDouble(comp[0].trim()), 0, Double.parseDouble(comp[1].trim())); return new BlockVector(Double.parseDouble(comp[0].trim()), 0, Double.parseDouble(comp[1].trim()));
} } else if (comp.length == 3) {
else if(comp.length == 3)
{
return new BlockVector(Double.parseDouble(comp[0].trim()), return new BlockVector(Double.parseDouble(comp[0].trim()),
Double.parseDouble(comp[1].trim()), Double.parseDouble(comp[1].trim()),
Double.parseDouble(comp[2].trim())); Double.parseDouble(comp[2].trim()));
} } else {
else
{
throw new DecreeParsingException("Could not parse components for vector. You have " + comp.length + " components. Expected 2 or 3."); throw new DecreeParsingException("Could not parse components for vector. You have " + comp.length + " components. Expected 2 or 3.");
} }
} } else if (in.equalsIgnoreCase("here") || in.equalsIgnoreCase("me") || in.equalsIgnoreCase("self")) {
if (!DecreeContext.get().isPlayer()) {
else if(in.equalsIgnoreCase("here") ||in.equalsIgnoreCase("me") ||in.equalsIgnoreCase("self"))
{
if(!DecreeContext.get().isPlayer())
{
throw new DecreeParsingException("You cannot specify me,self,here as a console."); throw new DecreeParsingException("You cannot specify me,self,here as a console.");
} }
return DecreeContext.get().player().getLocation().toVector(); return DecreeContext.get().player().getLocation().toVector();
} } else if (in.equalsIgnoreCase("look") || in.equalsIgnoreCase("cursor") || in.equalsIgnoreCase("crosshair")) {
if (!DecreeContext.get().isPlayer()) {
else if(in.equalsIgnoreCase("look") ||in.equalsIgnoreCase("cursor") ||in.equalsIgnoreCase("crosshair"))
{
if(!DecreeContext.get().isPlayer())
{
throw new DecreeParsingException("You cannot specify look,cursor,crosshair as a console."); throw new DecreeParsingException("You cannot specify look,cursor,crosshair as a console.");
} }
return DecreeContext.get().player().getTargetBlockExact(256, FluidCollisionMode.NEVER).getLocation().toVector(); return DecreeContext.get().player().getTargetBlockExact(256, FluidCollisionMode.NEVER).getLocation().toVector();
} } else if (in.trim().toLowerCase().startsWith("player:")) {
else if(in.trim().toLowerCase().startsWith("player:"))
{
String v = in.trim().split("\\Q:\\E")[1]; String v = in.trim().split("\\Q:\\E")[1];
KList<?> px = DecreeSystem.getHandler(Player.class).getPossibilities(v); KList<?> px = DecreeSystem.getHandler(Player.class).getPossibilities(v);
if(px != null && px.isNotEmpty()) if (px != null && px.isNotEmpty()) {
{
return ((Player) px.get(0)).getLocation().toVector(); return ((Player) px.get(0)).getLocation().toVector();
} } else if (px == null || px.isEmpty()) {
else if(px == null || px.isEmpty())
{
throw new DecreeParsingException("Cannot find player: " + v); throw new DecreeParsingException("Cannot find player: " + v);
} }
} }
} } catch (Throwable e) {
catch(Throwable e)
{
throw new DecreeParsingException("Unable to get Vector for \"" + in + "\" because of an uncaught exception: " + e); throw new DecreeParsingException("Unable to get Vector for \"" + in + "\" because of an uncaught exception: " + e);
} }
@ -138,8 +106,7 @@ public class VectorHandler implements DecreeParameterHandler<Vector> {
} }
@Override @Override
public String getRandomDefault() public String getRandomDefault() {
{
return M.r(0.5) ? "0,0" : "0,0,0"; return M.r(0.5) ? "0,0" : "0,0,0";
} }
} }

View File

@ -38,27 +38,19 @@ public class WorldHandler implements DecreeParameterHandler<World> {
@Override @Override
public World parse(String in) throws DecreeParsingException, DecreeWhichException { public World parse(String in) throws DecreeParsingException, DecreeWhichException {
try try {
{
KList<World> options = getPossibilities(in); KList<World> options = getPossibilities(in);
if(options.isEmpty()) if (options.isEmpty()) {
{
throw new DecreeParsingException("Unable to find World \"" + in + "\""); throw new DecreeParsingException("Unable to find World \"" + in + "\"");
} } else if (options.size() > 1) {
else if(options.size() > 1)
{
throw new DecreeWhichException(); throw new DecreeWhichException();
} }
return options.get(0); return options.get(0);
} } catch (DecreeParsingException e) {
catch(DecreeParsingException e){
throw e; throw e;
} } catch (Throwable e) {
catch(Throwable e)
{
throw new DecreeParsingException("Unable to find World \"" + in + "\" because of an uncaught exception: " + e); throw new DecreeParsingException("Unable to find World \"" + in + "\" because of an uncaught exception: " + e);
} }
} }
@ -69,8 +61,7 @@ public class WorldHandler implements DecreeParameterHandler<World> {
} }
@Override @Override
public String getRandomDefault() public String getRandomDefault() {
{
return "world"; return "world";
} }
} }

View File

@ -22,7 +22,10 @@ import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap; import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.decree.*; import com.volmit.iris.util.decree.DecreeContext;
import com.volmit.iris.util.decree.DecreeContextHandler;
import com.volmit.iris.util.decree.DecreeNode;
import com.volmit.iris.util.decree.DecreeParameter;
import com.volmit.iris.util.decree.annotations.Decree; import com.volmit.iris.util.decree.annotations.Decree;
import com.volmit.iris.util.decree.exceptions.DecreeParsingException; import com.volmit.iris.util.decree.exceptions.DecreeParsingException;
import com.volmit.iris.util.decree.exceptions.DecreeWhichException; import com.volmit.iris.util.decree.exceptions.DecreeWhichException;
@ -31,15 +34,10 @@ import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.plugin.VolmitSender; import com.volmit.iris.util.plugin.VolmitSender;
import com.volmit.iris.util.scheduling.J; import com.volmit.iris.util.scheduling.J;
import lombok.Data; import lombok.Data;
import lombok.Getter;
import org.apache.logging.log4j.core.impl.ThrowableFormatOptions;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
import java.util.Arrays;
import java.util.Locale;
import java.util.Objects; import java.util.Objects;
@Data @Data
@ -49,8 +47,7 @@ public class VirtualDecreeCommand {
private final KList<VirtualDecreeCommand> nodes; private final KList<VirtualDecreeCommand> nodes;
private final DecreeNode node; private final DecreeNode node;
private VirtualDecreeCommand(Class<?> type, VirtualDecreeCommand parent, KList<VirtualDecreeCommand> nodes, DecreeNode node) private VirtualDecreeCommand(Class<?> type, VirtualDecreeCommand parent, KList<VirtualDecreeCommand> nodes, DecreeNode node) {
{
this.parent = parent; this.parent = parent;
this.type = type; this.type = type;
this.nodes = nodes; this.nodes = nodes;
@ -64,23 +61,19 @@ public class VirtualDecreeCommand {
public static VirtualDecreeCommand createRoot(VirtualDecreeCommand parent, Object v) throws Throwable { public static VirtualDecreeCommand createRoot(VirtualDecreeCommand parent, Object v) throws Throwable {
VirtualDecreeCommand c = new VirtualDecreeCommand(v.getClass(), parent, new KList<>(), null); VirtualDecreeCommand c = new VirtualDecreeCommand(v.getClass(), parent, new KList<>(), null);
for(Field i : v.getClass().getDeclaredFields()) for (Field i : v.getClass().getDeclaredFields()) {
{ if (Modifier.isStatic(i.getModifiers()) || Modifier.isFinal(i.getModifiers()) || Modifier.isTransient(i.getModifiers()) || Modifier.isVolatile(i.getModifiers())) {
if(Modifier.isStatic(i.getModifiers()) || Modifier.isFinal(i.getModifiers())|| Modifier.isTransient(i.getModifiers())|| Modifier.isVolatile(i.getModifiers()))
{
continue; continue;
} }
if(!i.getType().isAnnotationPresent(Decree.class)) if (!i.getType().isAnnotationPresent(Decree.class)) {
{
continue; continue;
} }
i.setAccessible(true); i.setAccessible(true);
Object childRoot = i.get(v); Object childRoot = i.get(v);
if(childRoot == null) if (childRoot == null) {
{
childRoot = i.getType().getConstructor().newInstance(); childRoot = i.getType().getConstructor().newInstance();
i.set(v, childRoot); i.set(v, childRoot);
} }
@ -88,15 +81,12 @@ public class VirtualDecreeCommand {
c.getNodes().add(createRoot(c, childRoot)); c.getNodes().add(createRoot(c, childRoot));
} }
for(Method i : v.getClass().getDeclaredMethods()) for (Method i : v.getClass().getDeclaredMethods()) {
{ if (Modifier.isStatic(i.getModifiers()) || Modifier.isFinal(i.getModifiers()) || Modifier.isPrivate(i.getModifiers())) {
if(Modifier.isStatic(i.getModifiers()) || Modifier.isFinal(i.getModifiers()) || Modifier.isPrivate(i.getModifiers()))
{
continue; continue;
} }
if(!i.isAnnotationPresent(Decree.class)) if (!i.isAnnotationPresent(Decree.class)) {
{
continue; continue;
} }
@ -106,13 +96,11 @@ public class VirtualDecreeCommand {
return c; return c;
} }
public String getPath() public String getPath() {
{
KList<String> n = new KList<>(); KList<String> n = new KList<>();
VirtualDecreeCommand cursor = this; VirtualDecreeCommand cursor = this;
while(cursor.getParent() != null) while (cursor.getParent() != null) {
{
cursor = cursor.getParent(); cursor = cursor.getParent();
n.add(cursor.getName()); n.add(cursor.getName());
} }
@ -120,13 +108,11 @@ public class VirtualDecreeCommand {
return "/" + n.reverse().qadd(getName()).toString(" "); return "/" + n.reverse().qadd(getName()).toString(" ");
} }
public String getParentPath() public String getParentPath() {
{
return getParent().getPath(); return getParent().getPath();
} }
public String getName() public String getName() {
{
return isNode() ? getNode().getName() : getType().getDeclaredAnnotation(Decree.class).name(); return isNode() ? getNode().getName() : getType().getDeclaredAnnotation(Decree.class).name();
} }
@ -134,24 +120,19 @@ public class VirtualDecreeCommand {
return isNode() ? getNode().getDecree().studio() : getType().getDeclaredAnnotation(Decree.class).studio(); return isNode() ? getNode().getDecree().studio() : getType().getDeclaredAnnotation(Decree.class).studio();
} }
public String getDescription() public String getDescription() {
{
return isNode() ? getNode().getDescription() : getType().getDeclaredAnnotation(Decree.class).description(); return isNode() ? getNode().getDescription() : getType().getDeclaredAnnotation(Decree.class).description();
} }
public KList<String> getNames() public KList<String> getNames() {
{ if (isNode()) {
if(isNode())
{
return getNode().getNames(); return getNode().getNames();
} }
KList<String> d = new KList<>(); KList<String> d = new KList<>();
Decree dc = getType().getDeclaredAnnotation(Decree.class); Decree dc = getType().getDeclaredAnnotation(Decree.class);
for(String i : dc.aliases()) for (String i : dc.aliases()) {
{ if (i.isEmpty()) {
if(i.isEmpty())
{
continue; continue;
} }
@ -164,56 +145,45 @@ public class VirtualDecreeCommand {
return d; return d;
} }
public boolean isNode() public boolean isNode() {
{
return node != null; return node != null;
} }
public KList<String> tabComplete(KList<String> args, String raw) public KList<String> tabComplete(KList<String> args, String raw) {
{
KList<Integer> skip = new KList<>(); KList<Integer> skip = new KList<>();
KList<String> tabs = new KList<>(); KList<String> tabs = new KList<>();
invokeTabComplete(args, skip, tabs, raw); invokeTabComplete(args, skip, tabs, raw);
return tabs; return tabs;
} }
private boolean invokeTabComplete(KList<String> args, KList<Integer> skip, KList<String> tabs, String raw) private boolean invokeTabComplete(KList<String> args, KList<Integer> skip, KList<String> tabs, String raw) {
{ if (isStudio() && !IrisSettings.get().isStudio()) {
if(isStudio() && !IrisSettings.get().isStudio())
{
return false; return false;
} }
if(isNode()) if (isNode()) {
{
tab(args, tabs); tab(args, tabs);
skip.add(hashCode()); skip.add(hashCode());
return false; return false;
} }
if(args.isEmpty()) if (args.isEmpty()) {
{
tab(args, tabs); tab(args, tabs);
return true; return true;
} }
String head = args.get(0); String head = args.get(0);
if (args.size() > 1 || head.endsWith(" ")) if (args.size() > 1 || head.endsWith(" ")) {
{
VirtualDecreeCommand match = matchNode(head, skip); VirtualDecreeCommand match = matchNode(head, skip);
if(match != null) if (match != null) {
{
args.pop(); args.pop();
return match.invokeTabComplete(args, skip, tabs, raw); return match.invokeTabComplete(args, skip, tabs, raw);
} }
skip.add(hashCode()); skip.add(hashCode());
} } else {
else
{
tab(args, tabs); tab(args, tabs);
} }
@ -226,22 +196,18 @@ public class VirtualDecreeCommand {
Runnable la = () -> { Runnable la = () -> {
}; };
for(String a : args) for (String a : args) {
{
la.run(); la.run();
last = a; last = a;
la = () -> { la = () -> {
if(isNode()) if (isNode()) {
{
String sea = a.contains("=") ? a.split("\\Q=\\E")[0] : a; String sea = a.contains("=") ? a.split("\\Q=\\E")[0] : a;
sea = sea.trim(); sea = sea.trim();
searching: for(DecreeParameter i : getNode().getParameters()) searching:
{ for (DecreeParameter i : getNode().getParameters()) {
for(String m : i.getNames()) for (String m : i.getNames()) {
{ if (m.equalsIgnoreCase(sea) || m.toLowerCase().contains(sea.toLowerCase()) || sea.toLowerCase().contains(m.toLowerCase())) {
if(m.equalsIgnoreCase(sea) || m.toLowerCase().contains(sea.toLowerCase()) || sea.toLowerCase().contains(m.toLowerCase()))
{
ignore.add(i); ignore.add(i);
continue searching; continue searching;
} }
@ -251,52 +217,37 @@ public class VirtualDecreeCommand {
}; };
} }
if(last != null) if (last != null) {
{
if (isNode()) { if (isNode()) {
for(DecreeParameter i : getNode().getParameters()) for (DecreeParameter i : getNode().getParameters()) {
{ if (ignore.contains(i)) {
if(ignore.contains(i))
{
continue; continue;
} }
int g = 0; int g = 0;
if(last.contains("=")) if (last.contains("=")) {
{
String[] vv = last.trim().split("\\Q=\\E"); String[] vv = last.trim().split("\\Q=\\E");
String vx = vv.length == 2 ? vv[1] : ""; String vx = vv.length == 2 ? vv[1] : "";
for(String f : i.getHandler().getPossibilities(vx).convert((v) -> i.getHandler().toStringForce(v))) for (String f : i.getHandler().getPossibilities(vx).convert((v) -> i.getHandler().toStringForce(v))) {
{ g++;
tabs.add(i.getName() + "=" + f);
}
} else {
for (String f : i.getHandler().getPossibilities("").convert((v) -> i.getHandler().toStringForce(v))) {
g++; g++;
tabs.add(i.getName() + "=" + f); tabs.add(i.getName() + "=" + f);
} }
} }
else if (g == 0) {
{
for(String f : i.getHandler().getPossibilities("").convert((v) -> i.getHandler().toStringForce(v)))
{
g++;
tabs.add(i.getName() +"="+ f);
}
}
if(g == 0)
{
tabs.add(i.getName() + "="); tabs.add(i.getName() + "=");
} }
} }
} } else {
for (VirtualDecreeCommand i : getNodes()) {
else
{
for(VirtualDecreeCommand i : getNodes())
{
String m = i.getName(); String m = i.getName();
if(m.equalsIgnoreCase(last) || m.toLowerCase().contains(last.toLowerCase()) || last.toLowerCase().contains(m.toLowerCase())) if (m.equalsIgnoreCase(last) || m.toLowerCase().contains(last.toLowerCase()) || last.toLowerCase().contains(m.toLowerCase())) {
{
tabs.addAll(i.getNames()); tabs.addAll(i.getNames());
} }
} }
@ -304,40 +255,30 @@ public class VirtualDecreeCommand {
} }
} }
private KMap<String, Object> map(VolmitSender sender, KList<String> in) private KMap<String, Object> map(VolmitSender sender, KList<String> in) {
{
KMap<String, Object> data = new KMap<>(); KMap<String, Object> data = new KMap<>();
for(int ix = 0; ix < in.size(); ix++) for (int ix = 0; ix < in.size(); ix++) {
{
String i = in.get(ix); String i = in.get(ix);
if(i.contains("=")) if (i.contains("=")) {
{
String[] v = i.split("\\Q=\\E"); String[] v = i.split("\\Q=\\E");
String key = v[0]; String key = v[0];
String value = v[1]; String value = v[1];
DecreeParameter param = null; DecreeParameter param = null;
for(DecreeParameter j : getNode().getParameters()) for (DecreeParameter j : getNode().getParameters()) {
{ for (String k : j.getNames()) {
for(String k : j.getNames()) if (k.equalsIgnoreCase(key)) {
{
if(k.equalsIgnoreCase(key))
{
param = j; param = j;
break; break;
} }
} }
} }
if(param == null) if (param == null) {
{ for (DecreeParameter j : getNode().getParameters()) {
for(DecreeParameter j : getNode().getParameters()) for (String k : j.getNames()) {
{ if (k.toLowerCase().contains(key.toLowerCase()) || key.toLowerCase().contains(k.toLowerCase())) {
for(String k : j.getNames())
{
if(k.toLowerCase().contains(key.toLowerCase()) || key.toLowerCase().contains(k.toLowerCase()))
{
param = j; param = j;
break; break;
} }
@ -345,8 +286,7 @@ public class VirtualDecreeCommand {
} }
} }
if(param == null) if (param == null) {
{
Iris.debug("Can't find parameter key for " + key + "=" + value + " in " + getPath()); Iris.debug("Can't find parameter key for " + key + "=" + value + " in " + getPath());
sender.sendMessage(C.YELLOW + "Unknown Parameter: " + key); sender.sendMessage(C.YELLOW + "Unknown Parameter: " + key);
continue; continue;
@ -367,12 +307,8 @@ public class VirtualDecreeCommand {
Iris.debug("Client chose " + update + " for " + key + "=" + value + " (old) in " + getPath()); Iris.debug("Client chose " + update + " for " + key + "=" + value + " (old) in " + getPath());
in.set(ix--, update); in.set(ix--, update);
} }
} } else {
try {
else
{
try
{
DecreeParameter par = getNode().getParameters().get(ix); DecreeParameter par = getNode().getParameters().get(ix);
try { try {
data.put(par.getName(), par.getHandler().parse(i)); data.put(par.getName(), par.getHandler().parse(i));
@ -387,10 +323,7 @@ public class VirtualDecreeCommand {
Iris.debug("Client chose " + update + " for " + par.getName() + "=" + i + " (old) in " + getPath()); Iris.debug("Client chose " + update + " for " + par.getName() + "=" + i + " (old) in " + getPath());
in.set(ix--, update); in.set(ix--, update);
} }
} } catch (IndexOutOfBoundsException e) {
catch(IndexOutOfBoundsException e)
{
sender.sendMessage(C.YELLOW + "Unknown Parameter: " + i + " (" + Form.getNumberSuffixThStRd(ix + 1) + " argument)"); sender.sendMessage(C.YELLOW + "Unknown Parameter: " + i + " (" + Form.getNumberSuffixThStRd(ix + 1) + " argument)");
} }
} }
@ -399,25 +332,20 @@ public class VirtualDecreeCommand {
return data; return data;
} }
public boolean invoke(VolmitSender sender, KList<String> realArgs) public boolean invoke(VolmitSender sender, KList<String> realArgs) {
{
return invoke(sender, realArgs, new KList<>()); return invoke(sender, realArgs, new KList<>());
} }
public boolean invoke(VolmitSender sender, KList<String> args, KList<Integer> skip) public boolean invoke(VolmitSender sender, KList<String> args, KList<Integer> skip) {
{ if (isStudio() && !IrisSettings.get().isStudio()) {
if(isStudio() && !IrisSettings.get().isStudio())
{
sender.sendMessage(C.RED + "To use Iris Studio Commands, please enable studio in Iris/settings.json (settings auto-reload)"); sender.sendMessage(C.RED + "To use Iris Studio Commands, please enable studio in Iris/settings.json (settings auto-reload)");
return false; return false;
} }
Iris.debug("@ " + getPath() + " with " + args.toString(", ")); Iris.debug("@ " + getPath() + " with " + args.toString(", "));
if(isNode()) if (isNode()) {
{
Iris.debug("Invoke " + getPath() + "(" + args.toString(",") + ") at "); Iris.debug("Invoke " + getPath() + "(" + args.toString(",") + ") at ");
if(invokeNode(sender, map(sender, args))) if (invokeNode(sender, map(sender, args))) {
{
return true; return true;
} }
@ -425,8 +353,7 @@ public class VirtualDecreeCommand {
return false; return false;
} }
if(args.isEmpty()) if (args.isEmpty()) {
{
sender.sendDecreeHelp(this); sender.sendDecreeHelp(this);
return true; return true;
@ -435,8 +362,7 @@ public class VirtualDecreeCommand {
String head = args.get(0); String head = args.get(0);
VirtualDecreeCommand match = matchNode(head, skip); VirtualDecreeCommand match = matchNode(head, skip);
if(match != null) if (match != null) {
{
args.pop(); args.pop();
return match.invoke(sender, args, skip); return match.invoke(sender, args, skip);
} }
@ -447,25 +373,20 @@ public class VirtualDecreeCommand {
} }
private boolean invokeNode(VolmitSender sender, KMap<String, Object> map) { private boolean invokeNode(VolmitSender sender, KMap<String, Object> map) {
if(map == null) if (map == null) {
{
return false; return false;
} }
Object[] params = new Object[getNode().getMethod().getParameterCount()]; Object[] params = new Object[getNode().getMethod().getParameterCount()];
int vm = 0; int vm = 0;
for(DecreeParameter i : getNode().getParameters()) for (DecreeParameter i : getNode().getParameters()) {
{
Object value = map.get(i.getName()); Object value = map.get(i.getName());
try try {
{ if (value == null && i.hasDefault()) {
if(value == null && i.hasDefault())
{
value = i.getDefaultValue(); value = i.getDefaultValue();
} }
} } catch (DecreeParsingException e) {
catch (DecreeParsingException e) {
Iris.debug("Can't parse parameter value for " + i.getName() + "=" + i + " in " + getPath() + " using handler " + i.getHandler().getClass().getSimpleName()); Iris.debug("Can't parse parameter value for " + i.getName() + "=" + i + " in " + getPath() + " using handler " + i.getHandler().getClass().getSimpleName());
sender.sendMessage(C.RED + "Cannot convert \"" + i + "\" into a " + i.getType().getSimpleName()); sender.sendMessage(C.RED + "Cannot convert \"" + i + "\" into a " + i.getType().getSimpleName());
return false; return false;
@ -474,11 +395,9 @@ public class VirtualDecreeCommand {
KList<?> validOptions = i.getHandler().getPossibilities(i.getParam().defaultValue()); KList<?> validOptions = i.getHandler().getPossibilities(i.getParam().defaultValue());
String update = null; // TODO: PICK ONE String update = null; // TODO: PICK ONE
Iris.debug("Client chose " + update + " for " + i.getName() + "=" + i + " (old) in " + getPath()); Iris.debug("Client chose " + update + " for " + i.getName() + "=" + i + " (old) in " + getPath());
try try {
{
value = i.getDefaultValue(); value = i.getDefaultValue();
} } catch (DecreeParsingException x) {
catch (DecreeParsingException x) {
x.printStackTrace(); x.printStackTrace();
Iris.debug("Can't parse parameter value for " + i.getName() + "=" + i + " in " + getPath() + " using handler " + i.getHandler().getClass().getSimpleName()); Iris.debug("Can't parse parameter value for " + i.getName() + "=" + i + " in " + getPath() + " using handler " + i.getHandler().getClass().getSimpleName());
sender.sendMessage(C.RED + "Cannot convert \"" + i + "\" into a " + i.getType().getSimpleName()); sender.sendMessage(C.RED + "Cannot convert \"" + i + "\" into a " + i.getType().getSimpleName());
@ -488,33 +407,23 @@ public class VirtualDecreeCommand {
} }
} }
if(i.isContextual() && value == null) if (i.isContextual() && value == null) {
{
DecreeContextHandler<?> ch = DecreeContextHandler.contextHandlers.get(i.getType()); DecreeContextHandler<?> ch = DecreeContextHandler.contextHandlers.get(i.getType());
if(ch != null) if (ch != null) {
{
value = ch.handle(sender); value = ch.handle(sender);
if(value != null) if (value != null) {
{
Iris.debug("Null Parameter " + i.getName() + " derived a value of " + i.getHandler().toStringForce(value) + " from " + ch.getClass().getSimpleName()); Iris.debug("Null Parameter " + i.getName() + " derived a value of " + i.getHandler().toStringForce(value) + " from " + ch.getClass().getSimpleName());
} } else {
else
{
Iris.debug("Null Parameter " + i.getName() + " could not derive a value from " + ch.getClass().getSimpleName()); Iris.debug("Null Parameter " + i.getName() + " could not derive a value from " + ch.getClass().getSimpleName());
} }
} } else {
else
{
Iris.debug("Null Parameter " + i.getName() + " is contextual but has no context handler for " + i.getType().getCanonicalName()); Iris.debug("Null Parameter " + i.getName() + " is contextual but has no context handler for " + i.getType().getCanonicalName());
} }
} }
if(i.hasDefault() && value == null) if (i.hasDefault() && value == null) {
{
try { try {
Iris.debug("Null Parameter " + i.getName() + " is using default value " + i.getParam().defaultValue()); Iris.debug("Null Parameter " + i.getName() + " is using default value " + i.getParam().defaultValue());
value = i.getDefaultValue(); value = i.getDefaultValue();
@ -533,55 +442,41 @@ public class VirtualDecreeCommand {
} }
Runnable rx = () -> { Runnable rx = () -> {
try try {
{
DecreeContext.touch(sender); DecreeContext.touch(sender);
getNode().getMethod().setAccessible(true); getNode().getMethod().setAccessible(true);
getNode().getMethod().invoke(getNode().getInstance(), params); getNode().getMethod().invoke(getNode().getInstance(), params);
} } catch (Throwable e) {
catch(Throwable e)
{
e.printStackTrace(); e.printStackTrace();
throw new RuntimeException("Failed to execute <INSERT REAL NODE HERE>"); // TODO: throw new RuntimeException("Failed to execute <INSERT REAL NODE HERE>"); // TODO:
} }
}; };
if(getNode().isSync()) if (getNode().isSync()) {
{
J.s(rx); J.s(rx);
} } else {
else
{
rx.run(); rx.run();
} }
return true; return true;
} }
public KList<VirtualDecreeCommand> matchAllNodes(String in) public KList<VirtualDecreeCommand> matchAllNodes(String in) {
{
KList<VirtualDecreeCommand> g = new KList<>(); KList<VirtualDecreeCommand> g = new KList<>();
if(in.trim().isEmpty()) if (in.trim().isEmpty()) {
{
g.addAll(nodes); g.addAll(nodes);
return g; return g;
} }
for(VirtualDecreeCommand i : nodes) for (VirtualDecreeCommand i : nodes) {
{ if (i.matches(in)) {
if(i.matches(in))
{
g.add(i); g.add(i);
} }
} }
for(VirtualDecreeCommand i : nodes) for (VirtualDecreeCommand i : nodes) {
{ if (i.deepMatches(in)) {
if(i.deepMatches(in))
{
g.add(i); g.add(i);
} }
} }
@ -590,35 +485,27 @@ public class VirtualDecreeCommand {
return g; return g;
} }
public VirtualDecreeCommand matchNode(String in, KList<Integer> skip) public VirtualDecreeCommand matchNode(String in, KList<Integer> skip) {
{ if (in.trim().isEmpty()) {
if(in.trim().isEmpty())
{
return null; return null;
} }
for(VirtualDecreeCommand i : nodes) for (VirtualDecreeCommand i : nodes) {
{ if (skip.contains(i.hashCode())) {
if(skip.contains(i.hashCode()))
{
continue; continue;
} }
if(i.matches(in)) if (i.matches(in)) {
{
return i; return i;
} }
} }
for(VirtualDecreeCommand i : nodes) for (VirtualDecreeCommand i : nodes) {
{ if (skip.contains(i.hashCode())) {
if(skip.contains(i.hashCode()))
{
continue; continue;
} }
if(i.deepMatches(in)) if (i.deepMatches(in)) {
{
return i; return i;
} }
} }
@ -626,14 +513,11 @@ public class VirtualDecreeCommand {
return null; return null;
} }
public boolean deepMatches(String in) public boolean deepMatches(String in) {
{
KList<String> a = getNames(); KList<String> a = getNames();
for(String i : a) for (String i : a) {
{ if (i.toLowerCase().contains(in.toLowerCase()) || in.toLowerCase().contains(i.toLowerCase())) {
if(i.toLowerCase().contains(in.toLowerCase()) || in.toLowerCase().contains(i.toLowerCase()))
{
return true; return true;
} }
} }
@ -654,14 +538,11 @@ public class VirtualDecreeCommand {
return this.hashCode() == obj.hashCode(); return this.hashCode() == obj.hashCode();
} }
public boolean matches(String in) public boolean matches(String in) {
{
KList<String> a = getNames(); KList<String> a = getNames();
for(String i : a) for (String i : a) {
{ if (i.equalsIgnoreCase(in)) {
if(i.equalsIgnoreCase(in))
{
return true; return true;
} }
} }

View File

@ -18,7 +18,6 @@
package com.volmit.iris.util.format; package com.volmit.iris.util.format;
import com.google.common.base.Preconditions;
import com.volmit.iris.util.math.M; import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.RollingSequence; import com.volmit.iris.util.math.RollingSequence;

View File

@ -136,8 +136,7 @@ public class Mantle {
throw new RuntimeException("The Mantle is closed"); throw new RuntimeException("The Mantle is closed");
} }
if(y < 0) if (y < 0) {
{
return; return;
} }
@ -170,8 +169,7 @@ public class Mantle {
throw new RuntimeException("The Mantle is closed"); throw new RuntimeException("The Mantle is closed");
} }
if(y < 0) if (y < 0) {
{
return null; return null;
} }
@ -259,8 +257,7 @@ public class Mantle {
*/ */
@RegionCoordinates @RegionCoordinates
private TectonicPlate get(int x, int z) { private TectonicPlate get(int x, int z) {
if(io.get()) if (io.get()) {
{
try { try {
return getSafe(x, z).get(); return getSafe(x, z).get();
} catch (InterruptedException e) { } catch (InterruptedException e) {
@ -272,8 +269,7 @@ public class Mantle {
TectonicPlate p = loadedRegions.get(key(x, z)); TectonicPlate p = loadedRegions.get(key(x, z));
if(p != null) if (p != null) {
{
return p; return p;
} }

View File

@ -18,21 +18,15 @@
package com.volmit.iris.util.network; package com.volmit.iris.util.network;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import com.volmit.iris.util.collection.KSet; import com.volmit.iris.util.collection.KSet;
import com.volmit.iris.util.io.IO; import com.volmit.iris.util.io.IO;
import com.volmit.iris.util.scheduling.ChronoLatch; import com.volmit.iris.util.scheduling.ChronoLatch;
public abstract class DL import java.io.*;
{ import java.net.URL;
import java.net.URLConnection;
public abstract class DL {
protected File d; protected File d;
protected URL u; protected URL u;
protected ChronoLatch latch; protected ChronoLatch latch;
@ -50,8 +44,7 @@ public abstract class DL
protected long lastPull; protected long lastPull;
protected DownloadMonitor m; protected DownloadMonitor m;
public DL(URL u, File d, DownloadFlag...downloadFlags) public DL(URL u, File d, DownloadFlag... downloadFlags) {
{
this.d = d; this.d = d;
this.u = u; this.u = u;
size = -1; size = -1;
@ -67,57 +60,46 @@ public abstract class DL
flags = new KSet<>(); flags = new KSet<>();
latch = new ChronoLatch(500); latch = new ChronoLatch(500);
for(DownloadFlag i : downloadFlags) for (DownloadFlag i : downloadFlags) {
{
flags.add(i); flags.add(i);
} }
} }
public void monitor(DownloadMonitor m) public void monitor(DownloadMonitor m) {
{
this.m = m; this.m = m;
} }
public void update() public void update() {
{ if (m != null) {
if(m != null)
{
m.onUpdate(state, getProgress(), getElapsed(), getTimeLeft(), bps, getDiskBytesPerSecond(), size, downloaded, bufferSize, getBufferUse()); m.onUpdate(state, getProgress(), getElapsed(), getTimeLeft(), bps, getDiskBytesPerSecond(), size, downloaded, bufferSize, getBufferUse());
} }
} }
public boolean hasFlag(DownloadFlag f) public boolean hasFlag(DownloadFlag f) {
{
return flags.contains(f); return flags.contains(f);
} }
public boolean isState(DownloadState s) public boolean isState(DownloadState s) {
{
return state.equals(s); return state.equals(s);
} }
protected void state(DownloadState s) protected void state(DownloadState s) {
{
this.state = s; this.state = s;
update(); update();
} }
public int getBufferSize() public int getBufferSize() {
{
return bufferSize; return bufferSize;
} }
public void start() throws IOException public void start() throws IOException {
{ if (!isState(DownloadState.NEW)) {
if(!isState(DownloadState.NEW))
{
throw new DownloadException("Cannot start download while " + state.toString()); throw new DownloadException("Cannot start download while " + state.toString());
} }
state(DownloadState.STARTING); state(DownloadState.STARTING);
if(hasFlag(DownloadFlag.CALCULATE_SIZE)) if (hasFlag(DownloadFlag.CALCULATE_SIZE)) {
{
size = calculateSize(); size = calculateSize();
} }
@ -136,18 +118,15 @@ public abstract class DL
protected abstract void closeStream() throws IOException; protected abstract void closeStream() throws IOException;
public void downloadChunk() throws IOException public void downloadChunk() throws IOException {
{ if (!isState(DownloadState.DOWNLOADING)) {
if(!isState(DownloadState.DOWNLOADING))
{
throw new DownloadException("Cannot download while " + state.toString()); throw new DownloadException("Cannot download while " + state.toString());
} }
long d = download(); long d = download();
lastPull = d; lastPull = d;
if(d < 0) if (d < 0) {
{
finishDownload(); finishDownload();
return; return;
} }
@ -158,21 +137,17 @@ public abstract class DL
double chunkTime = (double) (System.currentTimeMillis() - lastChunk) / 1000D; double chunkTime = (double) (System.currentTimeMillis() - lastChunk) / 1000D;
bps = (long) ((double) currentChunk / chunkTime); bps = (long) ((double) currentChunk / chunkTime);
if(latch.flip()) if (latch.flip()) {
{
update(); update();
} }
} }
public double getBufferUse() public double getBufferUse() {
{
return (double) lastPull / (double) bufferSize; return (double) lastPull / (double) bufferSize;
} }
private void finishDownload() throws IOException private void finishDownload() throws IOException {
{ if (!isState(DownloadState.NEW)) {
if(!isState(DownloadState.NEW))
{
throw new DownloadException("Cannot finish download while " + state.toString()); throw new DownloadException("Cannot finish download while " + state.toString());
} }
@ -181,62 +156,51 @@ public abstract class DL
state(DownloadState.COMPLETE); state(DownloadState.COMPLETE);
} }
public long getElapsed() public long getElapsed() {
{
return System.currentTimeMillis() - start; return System.currentTimeMillis() - start;
} }
public long getRemaining() public long getRemaining() {
{
return size - downloaded; return size - downloaded;
} }
public long getTimeLeft() public long getTimeLeft() {
{
return (long) (((double) getRemaining() / (double) bps) * 1000D); return (long) (((double) getRemaining() / (double) bps) * 1000D);
} }
public long getDiskBytesPerSecond() public long getDiskBytesPerSecond() {
{ if (o == null) {
if(o == null)
{
return -1; return -1;
} }
return o.getBps(); return o.getBps();
} }
public long getBytesPerSecond() public long getBytesPerSecond() {
{
return bps; return bps;
} }
public double getProgress() public double getProgress() {
{
return hasProgress() ? ((double) downloaded / (double) size) : -1D; return hasProgress() ? ((double) downloaded / (double) size) : -1D;
} }
public boolean hasProgress() public boolean hasProgress() {
{
return size > 0; return size > 0;
} }
private long calculateSize() throws IOException private long calculateSize() throws IOException {
{
URLConnection c = u.openConnection(); URLConnection c = u.openConnection();
c.setConnectTimeout((int) timeout); c.setConnectTimeout(timeout);
c.setReadTimeout((int) timeout); c.setReadTimeout(timeout);
c.connect(); c.connect();
return c.getContentLengthLong(); return c.getContentLengthLong();
} }
public enum DownloadFlag public enum DownloadFlag {
{
CALCULATE_SIZE CALCULATE_SIZE
} }
public enum DownloadState public enum DownloadState {
{
NEW, NEW,
STARTING, STARTING,
DOWNLOADING, DOWNLOADING,
@ -245,9 +209,8 @@ public abstract class DL
FAILED FAILED
} }
public static class ThrottledDownload extends Download public static class ThrottledDownload extends Download {
{ private final long mbps;
private long mbps;
public ThrottledDownload(URL u, File d, long mbps, DownloadFlag... downloadFlags) { public ThrottledDownload(URL u, File d, long mbps, DownloadFlag... downloadFlags) {
super(u, d, downloadFlags); super(u, d, downloadFlags);
@ -255,17 +218,11 @@ public abstract class DL
} }
@Override @Override
protected long download() throws IOException protected long download() throws IOException {
{ if (getBytesPerSecond() > mbps) {
if(getBytesPerSecond() > mbps) try {
{
try
{
Thread.sleep(40); Thread.sleep(40);
} } catch (InterruptedException e) {
catch (InterruptedException e)
{
e.printStackTrace(); e.printStackTrace();
} }
@ -276,35 +233,31 @@ public abstract class DL
} }
} }
public static class DoubleBufferedDownload extends Download public static class DoubleBufferedDownload extends Download {
{
protected BufferedOutputStream os; protected BufferedOutputStream os;
public DoubleBufferedDownload(URL u, File d, DownloadFlag... downloadFlags) public DoubleBufferedDownload(URL u, File d, DownloadFlag... downloadFlags) {
{
super(u, d, downloadFlags); super(u, d, downloadFlags);
} }
@Override @Override
protected void openStream() throws IOException protected void openStream() throws IOException {
{
os = new BufferedOutputStream(o, 8192 * 16); os = new BufferedOutputStream(o, 8192 * 16);
in = new BufferedInputStream(u.openStream(), 8192 * 16); in = new BufferedInputStream(u.openStream(), 8192 * 16);
buf = new byte[8192 * 2]; buf = new byte[8192 * 2];
} }
} }
public static class Download extends DL public static class Download extends DL {
{
protected InputStream in; protected InputStream in;
protected byte[] buf; protected byte[] buf;
public Download(URL u, File d, DownloadFlag... downloadFlags) { public Download(URL u, File d, DownloadFlag... downloadFlags) {
super(u, d, downloadFlags); super(u, d, downloadFlags);
} }
@Override @Override
protected long download() throws IOException protected long download() throws IOException {
{
return IO.transfer(in, o, buf, bufferSize); return IO.transfer(in, o, buf, bufferSize);
} }

View File

@ -20,8 +20,7 @@ package com.volmit.iris.util.network;
import java.io.IOException; import java.io.IOException;
public class DownloadException extends IOException public class DownloadException extends IOException {
{
private static final long serialVersionUID = 5137918663903349839L; private static final long serialVersionUID = 5137918663903349839L;
public DownloadException() { public DownloadException() {

View File

@ -19,7 +19,6 @@
package com.volmit.iris.util.network; package com.volmit.iris.util.network;
@FunctionalInterface @FunctionalInterface
public interface DownloadMonitor public interface DownloadMonitor {
{ void onUpdate(DL.DownloadState state, double progress, long elapsed, long estimated, long bps, long iobps, long size, long downloaded, long buffer, double bufferuse);
public void onUpdate(DL.DownloadState state, double progress, long elapsed, long estimated, long bps, long iobps, long size, long downloaded, long buffer, double bufferuse);
} }

View File

@ -21,9 +21,8 @@ package com.volmit.iris.util.network;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
public class MeteredInputStream extends InputStream public class MeteredInputStream extends InputStream {
{ private final InputStream os;
private InputStream os;
private long written; private long written;
private long totalWritten; private long totalWritten;
private long since; private long since;
@ -31,8 +30,7 @@ public class MeteredInputStream extends InputStream
private long interval; private long interval;
private long bps; private long bps;
public MeteredInputStream(InputStream os, long interval) public MeteredInputStream(InputStream os, long interval) {
{
this.os = os; this.os = os;
written = 0; written = 0;
totalWritten = 0; totalWritten = 0;
@ -42,38 +40,32 @@ public class MeteredInputStream extends InputStream
since = System.currentTimeMillis(); since = System.currentTimeMillis();
} }
public MeteredInputStream(InputStream os) public MeteredInputStream(InputStream os) {
{
this(os, 100); this(os, 100);
auto = false; auto = false;
} }
@Override @Override
public int read() throws IOException public int read() throws IOException {
{
written++; written++;
totalWritten++; totalWritten++;
if(auto && System.currentTimeMillis() - getSince() > interval) if (auto && System.currentTimeMillis() - getSince() > interval) {
{
pollRead(); pollRead();
} }
return os.read(); return os.read();
} }
public long getSince() public long getSince() {
{
return since; return since;
} }
public long getRead() public long getRead() {
{
return written; return written;
} }
public long pollRead() public long pollRead() {
{
long w = written; long w = written;
written = 0; written = 0;
double secondsElapsedSince = (double) (System.currentTimeMillis() - since) / 1000.0; double secondsElapsedSince = (double) (System.currentTimeMillis() - since) / 1000.0;
@ -83,38 +75,31 @@ public class MeteredInputStream extends InputStream
return w; return w;
} }
public void close() throws IOException public void close() throws IOException {
{
os.close(); os.close();
} }
public boolean isAuto() public boolean isAuto() {
{
return auto; return auto;
} }
public void setAuto(boolean auto) public void setAuto(boolean auto) {
{
this.auto = auto; this.auto = auto;
} }
public long getInterval() public long getInterval() {
{
return interval; return interval;
} }
public void setInterval(long interval) public void setInterval(long interval) {
{
this.interval = interval; this.interval = interval;
} }
public long getTotalRead() public long getTotalRead() {
{
return totalWritten; return totalWritten;
} }
public long getBps() public long getBps() {
{
return bps; return bps;
} }
} }

View File

@ -21,9 +21,8 @@ package com.volmit.iris.util.network;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
public class MeteredOutputStream extends OutputStream public class MeteredOutputStream extends OutputStream {
{ private final OutputStream os;
private OutputStream os;
private long written; private long written;
private long totalWritten; private long totalWritten;
private long since; private long since;
@ -31,8 +30,7 @@ public class MeteredOutputStream extends OutputStream
private long interval; private long interval;
private long bps; private long bps;
public MeteredOutputStream(OutputStream os, long interval) public MeteredOutputStream(OutputStream os, long interval) {
{
this.os = os; this.os = os;
written = 0; written = 0;
totalWritten = 0; totalWritten = 0;
@ -42,37 +40,31 @@ public class MeteredOutputStream extends OutputStream
since = System.currentTimeMillis(); since = System.currentTimeMillis();
} }
public MeteredOutputStream(OutputStream os) public MeteredOutputStream(OutputStream os) {
{
this(os, 100); this(os, 100);
auto = false; auto = false;
} }
@Override @Override
public void write(int b) throws IOException public void write(int b) throws IOException {
{
os.write(b); os.write(b);
written++; written++;
totalWritten++; totalWritten++;
if(auto && System.currentTimeMillis() - getSince() > interval) if (auto && System.currentTimeMillis() - getSince() > interval) {
{
pollWritten(); pollWritten();
} }
} }
public long getSince() public long getSince() {
{
return since; return since;
} }
public long getWritten() public long getWritten() {
{
return written; return written;
} }
public long pollWritten() public long pollWritten() {
{
long w = written; long w = written;
written = 0; written = 0;
double secondsElapsedSince = (double) (System.currentTimeMillis() - since) / 1000.0; double secondsElapsedSince = (double) (System.currentTimeMillis() - since) / 1000.0;
@ -81,38 +73,31 @@ public class MeteredOutputStream extends OutputStream
return w; return w;
} }
public void close() throws IOException public void close() throws IOException {
{
os.close(); os.close();
} }
public boolean isAuto() public boolean isAuto() {
{
return auto; return auto;
} }
public void setAuto(boolean auto) public void setAuto(boolean auto) {
{
this.auto = auto; this.auto = auto;
} }
public long getInterval() public long getInterval() {
{
return interval; return interval;
} }
public void setInterval(long interval) public void setInterval(long interval) {
{
this.interval = interval; this.interval = interval;
} }
public long getTotalWritten() public long getTotalWritten() {
{
return totalWritten; return totalWritten;
} }
public long getBps() public long getBps() {
{
return bps; return bps;
} }
} }

View File

@ -360,11 +360,9 @@ public class VolmitSender implements CommandSender {
return s.spigot(); return s.spigot();
} }
private String pickRandoms(int max, VirtualDecreeCommand i) private String pickRandoms(int max, VirtualDecreeCommand i) {
{
KList<String> m = new KList<>(); KList<String> m = new KList<>();
for(int ix = 0; ix < max; ix++) for (int ix = 0; ix < max; ix++) {
{
m.add((i.isNode() m.add((i.isNode()
? (i.getNode().getParameters().isNotEmpty()) ? (i.getNode().getParameters().isNotEmpty())
? "<#aebef2>✦ <#5ef288>" ? "<#aebef2>✦ <#5ef288>"
@ -385,8 +383,7 @@ public class VolmitSender implements CommandSender {
} }
public void sendHeader(String name, int overrideLength) public void sendHeader(String name, int overrideLength) {
{
int len = overrideLength; int len = overrideLength;
int h = name.length() + 2; int h = name.length() + 2;
String s = Form.repeat(" ", len - h - 4); String s = Form.repeat(" ", len - h - 4);
@ -395,37 +392,28 @@ public class VolmitSender implements CommandSender {
String sf = "["; String sf = "[";
String se = "]"; String se = "]";
if(name.trim().isEmpty()) if (name.trim().isEmpty()) {
{
sendMessageRaw("<font:minecraft:uniform><strikethrough><gradient:#34eb6b:#32bfad>" + sf + s + "<reset><font:minecraft:uniform><strikethrough><gradient:#32bfad:#34eb6b>" + s + se); sendMessageRaw("<font:minecraft:uniform><strikethrough><gradient:#34eb6b:#32bfad>" + sf + s + "<reset><font:minecraft:uniform><strikethrough><gradient:#32bfad:#34eb6b>" + s + se);
} } else {
else
{
sendMessageRaw("<font:minecraft:uniform><strikethrough><gradient:#34eb6b:#32bfad>" + sf + s + si + "<reset> <gradient:#3299bf:#323bbf>" + name + "<reset> <font:minecraft:uniform><strikethrough><gradient:#32bfad:#34eb6b>" + so + s + se); sendMessageRaw("<font:minecraft:uniform><strikethrough><gradient:#34eb6b:#32bfad>" + sf + s + si + "<reset> <gradient:#3299bf:#323bbf>" + name + "<reset> <font:minecraft:uniform><strikethrough><gradient:#32bfad:#34eb6b>" + so + s + se);
} }
} }
public void sendHeader(String name) public void sendHeader(String name) {
{
sendHeader(name, 46); sendHeader(name, 46);
} }
public void sendDecreeHelp(VirtualDecreeCommand v) { public void sendDecreeHelp(VirtualDecreeCommand v) {
int m = v.getNodes().size(); int m = v.getNodes().size();
if(v.getNodes().isNotEmpty()) if (v.getNodes().isNotEmpty()) {
{
sendHeader(Form.capitalize(v.getName()) + " Help"); sendHeader(Form.capitalize(v.getName()) + " Help");
if(isPlayer() && v.getParent() != null) if (isPlayer() && v.getParent() != null) {
{
sendMessageRaw("<hover:show_text:'" + "<#b54b38>Click to go back to <#3299bf>" + Form.capitalize(v.getParent().getName()) + " Help" + "'><click:run_command:" + v.getParent().getPath() + "><font:minecraft:uniform><#f58571>〈 Back</click></hover>"); sendMessageRaw("<hover:show_text:'" + "<#b54b38>Click to go back to <#3299bf>" + Form.capitalize(v.getParent().getName()) + " Help" + "'><click:run_command:" + v.getParent().getPath() + "><font:minecraft:uniform><#f58571>〈 Back</click></hover>");
} }
for(VirtualDecreeCommand i : v.getNodes()) for (VirtualDecreeCommand i : v.getNodes()) {
{ if (isPlayer()) {
if(isPlayer())
{
//@builder //@builder
String s = ( String s = (
"<hover:show_text:'" + "<hover:show_text:'" +
@ -473,17 +461,11 @@ public class VolmitSender implements CommandSender {
//@done //@done
sendMessageRaw(s); sendMessageRaw(s);
System.out.println(s); System.out.println(s);
} } else {
else
{
sendMessage(i.getPath() + "()"); sendMessage(i.getPath() + "()");
} }
} }
} } else {
else
{
sendMessage(C.RED + "There are no subcommands in this group! Contact support, this is a command design issue!"); sendMessage(C.RED + "There are no subcommands in this group! Contact support, this is a command design issue!");
} }
} }

View File

@ -27,7 +27,7 @@ import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
public class DownloadJob implements Job { public class DownloadJob implements Job {
private DL.Download download; private final DL.Download download;
private int tw; private int tw;
private int cw; private int cw;
@ -38,13 +38,9 @@ public class DownloadJob implements Job{
download.monitor(new DownloadMonitor() { download.monitor(new DownloadMonitor() {
@Override @Override
public void onUpdate(DL.DownloadState state, double progress, long elapsed, long estimated, long bps, long iobps, long size, long downloaded, long buffer, double bufferuse) { public void onUpdate(DL.DownloadState state, double progress, long elapsed, long estimated, long bps, long iobps, long size, long downloaded, long buffer, double bufferuse) {
if(size == -1) if (size == -1) {
{
tw = 1; tw = 1;
} } else {
else
{
tw = (int) (size / 100); tw = (int) (size / 100);
cw = (int) (downloaded / 100); cw = (int) (downloaded / 100);
} }
@ -61,8 +57,7 @@ public class DownloadJob implements Job{
public void execute() { public void execute() {
try { try {
download.start(); download.start();
while(download.isState(DL.DownloadState.DOWNLOADING)) while (download.isState(DL.DownloadState.DOWNLOADING)) {
{
download.downloadChunk(); download.downloadChunk();
} }
} catch (IOException e) { } catch (IOException e) {

View File

@ -18,7 +18,6 @@
package com.volmit.iris.util.scheduling.jobs; package com.volmit.iris.util.scheduling.jobs;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.format.Form; import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.plugin.VolmitSender; import com.volmit.iris.util.plugin.VolmitSender;
import com.volmit.iris.util.scheduling.J; import com.volmit.iris.util.scheduling.J;
@ -26,8 +25,7 @@ import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
public interface Job public interface Job {
{
String getName(); String getName();
void execute(); void execute();
@ -36,35 +34,27 @@ public interface Job
int getTotalWork(); int getTotalWork();
default int getWorkRemaining() default int getWorkRemaining() {
{
return getTotalWork() - getWorkCompleted(); return getTotalWork() - getWorkCompleted();
} }
int getWorkCompleted(); int getWorkCompleted();
default String getProgressString() default String getProgressString() {
{
return Form.pc(getProgress(), 0); return Form.pc(getProgress(), 0);
} }
default double getProgress() default double getProgress() {
{
return (double) getWorkCompleted() / (double) getTotalWork(); return (double) getWorkCompleted() / (double) getTotalWork();
} }
default void execute(VolmitSender sender) default void execute(VolmitSender sender) {
{
PrecisionStopwatch p = PrecisionStopwatch.start(); PrecisionStopwatch p = PrecisionStopwatch.start();
CompletableFuture<?> f = J.afut(this::execute); CompletableFuture<?> f = J.afut(this::execute);
int c = J.ar(() -> { int c = J.ar(() -> {
if(sender.isPlayer()) if (sender.isPlayer()) {
{
sender.sendProgress(getProgress(), getName()); sender.sendProgress(getProgress(), getName());
} } else {
else
{
sender.sendMessage(getName() + ": " + getProgressString()); sender.sendMessage(getName() + ": " + getProgressString());
} }
}, sender.isPlayer() ? 0 : 20); }, sender.isPlayer() ? 0 : 20);

View File

@ -25,13 +25,11 @@ public class JobCollection implements Job {
private String status; private String status;
private final KList<Job> jobs; private final KList<Job> jobs;
public JobCollection(String name, Job... jobs) public JobCollection(String name, Job... jobs) {
{
this(name, new KList<>(jobs)); this(name, new KList<>(jobs));
} }
public JobCollection(String name, KList<Job> jobs) public JobCollection(String name, KList<Job> jobs) {
{
this.name = name; this.name = name;
status = null; status = null;
this.jobs = new KList<>(jobs); this.jobs = new KList<>(jobs);
@ -44,8 +42,7 @@ public class JobCollection implements Job {
@Override @Override
public void execute() { public void execute() {
for(Job i : jobs) for (Job i : jobs) {
{
status = i.getName(); status = i.getName();
i.execute(); i.execute();
} }

View File

@ -25,21 +25,18 @@ public abstract class QueueJob<T> implements Job {
private int totalWork; private int totalWork;
private int completed; private int completed;
public QueueJob() public QueueJob() {
{
totalWork = 0; totalWork = 0;
completed = 0; completed = 0;
queue = new KList<>(); queue = new KList<>();
} }
public void queue(T t) public void queue(T t) {
{
queue.add(t); queue.add(t);
totalWork++; totalWork++;
} }
public void queue(KList<T> f) public void queue(KList<T> f) {
{
queue.addAll(f); queue.addAll(f);
totalWork += f.size(); totalWork += f.size();
} }
@ -49,8 +46,7 @@ public abstract class QueueJob<T> implements Job {
@Override @Override
public void execute() { public void execute() {
totalWork = queue.size(); totalWork = queue.size();
while(queue.isNotEmpty()) while (queue.isNotEmpty()) {
{
execute(queue.pop()); execute(queue.pop());
completeWork(); completeWork();
} }

View File

@ -23,8 +23,7 @@ public class SingleJob implements Job{
private final String name; private final String name;
private final Runnable runnable; private final Runnable runnable;
public SingleJob(String name, Runnable runnable) public SingleJob(String name, Runnable runnable) {
{
this.name = name; this.name = name;
done = false; done = false;
this.runnable = runnable; this.runnable = runnable;