This commit is contained in:
Daniel Mills 2020-08-26 09:33:05 -04:00
parent 5ab2bae5d7
commit ed9ddc0825
59 changed files with 563 additions and 497 deletions

View File

@ -1,14 +1,11 @@
package com.volmit.iris; package com.volmit.iris;
import java.io.File; import java.io.File;
import java.util.List;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.bukkit.generator.ChunkGenerator; import org.bukkit.generator.ChunkGenerator;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
@ -22,26 +19,17 @@ import com.volmit.iris.gen.post.PostPotholeFiller;
import com.volmit.iris.gen.post.PostSlabber; import com.volmit.iris.gen.post.PostSlabber;
import com.volmit.iris.gen.post.PostWallPatcher; import com.volmit.iris.gen.post.PostWallPatcher;
import com.volmit.iris.gen.post.PostWaterlogger; import com.volmit.iris.gen.post.PostWaterlogger;
import com.volmit.iris.noise.CNG;
import com.volmit.iris.object.IrisBiome;
import com.volmit.iris.util.BiomeResult;
import com.volmit.iris.util.BoardManager; import com.volmit.iris.util.BoardManager;
import com.volmit.iris.util.BoardProvider; import com.volmit.iris.util.C;
import com.volmit.iris.util.BoardSettings;
import com.volmit.iris.util.ChronoLatch;
import com.volmit.iris.util.Form;
import com.volmit.iris.util.GroupedExecutor; import com.volmit.iris.util.GroupedExecutor;
import com.volmit.iris.util.IO; import com.volmit.iris.util.IO;
import com.volmit.iris.util.IrisLock; import com.volmit.iris.util.IrisLock;
import com.volmit.iris.util.IrisPostBlockFilter; import com.volmit.iris.util.IrisPostBlockFilter;
import com.volmit.iris.util.IrisStructureResult;
import com.volmit.iris.util.KList; import com.volmit.iris.util.KList;
import com.volmit.iris.util.MortarPlugin; import com.volmit.iris.util.MortarPlugin;
import com.volmit.iris.util.Permission; import com.volmit.iris.util.Permission;
import com.volmit.iris.util.RollingSequence;
import com.volmit.iris.util.ScoreDirection;
public class Iris extends MortarPlugin implements BoardProvider public class Iris extends MortarPlugin
{ {
public static KList<GroupedExecutor> executors = new KList<>(); public static KList<GroupedExecutor> executors = new KList<>();
public static Iris instance; public static Iris instance;
@ -50,13 +38,8 @@ public class Iris extends MortarPlugin implements BoardProvider
public static IrisHotloadManager hotloader; public static IrisHotloadManager hotloader;
public static WandManager wand; public static WandManager wand;
public static StructureManager struct; public static StructureManager struct;
public static IrisBoardManager board;
private BoardManager manager; private BoardManager manager;
private String mem = "...";
private ChronoLatch cl = new ChronoLatch(1000);
private ChronoLatch clf = new ChronoLatch(1000);
private KList<String> lines = new KList<>();
public RollingSequence hits = new RollingSequence(20);
public RollingSequence tp = new RollingSequence(100);
private static IrisLock lock = new IrisLock("Iris"); private static IrisLock lock = new IrisLock("Iris");
@Permission @Permission
@ -85,7 +68,7 @@ public class Iris extends MortarPlugin implements BoardProvider
@Override @Override
public String getTag(String subTag) public String getTag(String subTag)
{ {
return ChatColor.BOLD + "" + ChatColor.DARK_GRAY + "[" + ChatColor.BOLD + "" + ChatColor.GREEN + "Iris" + ChatColor.BOLD + ChatColor.DARK_GRAY + "]" + ChatColor.RESET + "" + ChatColor.GRAY + ": "; return C.BOLD + "" + C.DARK_GRAY + "[" + C.BOLD + "" + C.GREEN + "Iris" + C.BOLD + C.DARK_GRAY + "]" + C.RESET + "" + C.GRAY + ": ";
} }
public void onEnable() public void onEnable()
@ -97,7 +80,7 @@ public class Iris extends MortarPlugin implements BoardProvider
wand = new WandManager(); wand = new WandManager();
struct = new StructureManager(); struct = new StructureManager();
proj = new ProjectManager(); proj = new ProjectManager();
manager = new BoardManager(this, BoardSettings.builder().boardProvider(this).scoreDirection(ScoreDirection.UP).build()); board = new IrisBoardManager();
super.onEnable(); super.onEnable();
} }
@ -124,72 +107,6 @@ public class Iris extends MortarPlugin implements BoardProvider
super.onDisable(); super.onDisable();
} }
@Override
public String getTitle(Player player)
{
return ChatColor.GREEN + "Iris";
}
@Override
public List<String> getLines(Player player)
{
if(!clf.flip())
{
return lines;
}
World world = player.getWorld();
lines.clear();
if(world.getGenerator() instanceof IrisChunkGenerator)
{
IrisChunkGenerator g = (IrisChunkGenerator) world.getGenerator();
if(cl.flip())
{
mem = Form.memSize(g.guessMemoryUsage(), 2);
}
int x = player.getLocation().getBlockX();
int y = player.getLocation().getBlockY();
int z = player.getLocation().getBlockZ();
BiomeResult er = g.sampleTrueBiome(x, y, z);
IrisBiome b = er != null ? er.getBiome() : null;
IrisStructureResult st = g.getStructure(x, y, z);
tp.put(g.getMetrics().getSpeed());
lines.add("&7&m-----------------");
lines.add(ChatColor.GREEN + "Speed" + ChatColor.GRAY + ": " + ChatColor.BOLD + "" + ChatColor.GRAY + Form.f(g.getMetrics().getPerSecond().getAverage(), 0) + "/s " + Form.duration(g.getMetrics().getTotal().getAverage(), 1) + "");
lines.add(ChatColor.GREEN + "Generators" + ChatColor.GRAY + ": " + Form.f(CNG.creates));
lines.add(ChatColor.GREEN + "Noise" + ChatColor.GRAY + ": " + Form.f((int) hits.getAverage()));
lines.add(ChatColor.GREEN + "Parallax Chunks" + ChatColor.GRAY + ": " + Form.f((int) g.getParallaxMap().getLoadedChunks().size()));
lines.add(ChatColor.GREEN + "Objects" + ChatColor.GRAY + ": " + Form.f(g.getData().getObjectLoader().count()));
lines.add(ChatColor.GREEN + "Memory" + ChatColor.GRAY + ": " + mem);
lines.add(ChatColor.GREEN + "Heightmap" + ChatColor.GRAY + ": " + (int) g.getTerrainHeight(x, z));
if(er != null && b != null)
{
lines.add(ChatColor.GREEN + "Biome" + ChatColor.GRAY + ": " + b.getName());
lines.add(ChatColor.GREEN + "File" + ChatColor.GRAY + ": " + b.getLoadKey());
}
if(st != null)
{
lines.add(ChatColor.GREEN + "Structure" + ChatColor.GRAY + ": " + st.getStructure().getName());
lines.add(ChatColor.GREEN + "Tile" + ChatColor.GRAY + ": " + st.getTile().toString());
}
lines.add("&7&m-----------------");
}
else
{
lines.add(ChatColor.GREEN + "Join an Iris World!");
}
return lines;
}
public static KList<Class<? extends IrisPostBlockFilter>> loadPostProcessors() public static KList<Class<? extends IrisPostBlockFilter>> loadPostProcessors()
{ {
KList<Class<? extends IrisPostBlockFilter>> g = new KList<Class<? extends IrisPostBlockFilter>>(); KList<Class<? extends IrisPostBlockFilter>> g = new KList<Class<? extends IrisPostBlockFilter>>();
@ -212,7 +129,7 @@ public class Iris extends MortarPlugin implements BoardProvider
public void imsg(CommandSender s, String msg) public void imsg(CommandSender s, String msg)
{ {
s.sendMessage(ChatColor.GREEN + "[" + ChatColor.DARK_GRAY + "Iris" + ChatColor.GREEN + "]" + ChatColor.GRAY + ": " + msg); s.sendMessage(C.GREEN + "[" + C.DARK_GRAY + "Iris" + C.GREEN + "]" + C.GRAY + ": " + msg);
} }
@Override @Override
@ -224,38 +141,38 @@ public class Iris extends MortarPlugin implements BoardProvider
public static void msg(String string) public static void msg(String string)
{ {
lock.lock(); lock.lock();
String msg = ChatColor.GREEN + "[Iris]: " + ChatColor.GRAY + string; String msg = C.GREEN + "[Iris]: " + C.GRAY + string;
Bukkit.getConsoleSender().sendMessage(msg); Bukkit.getConsoleSender().sendMessage(msg);
lock.unlock(); lock.unlock();
} }
public static void warn(String string) public static void warn(String string)
{ {
msg(ChatColor.YELLOW + string); msg(C.YELLOW + string);
} }
public static void error(String string) public static void error(String string)
{ {
msg(ChatColor.RED + string); msg(C.RED + string);
} }
public static void verbose(String string) public static void verbose(String string)
{ {
msg(ChatColor.GRAY + string); msg(C.GRAY + string);
} }
public static void success(String string) public static void success(String string)
{ {
msg(ChatColor.GREEN + string); msg(C.GREEN + string);
} }
public static void info(String string) public static void info(String string)
{ {
msg(ChatColor.WHITE + string); msg(C.WHITE + string);
} }
public void hit(long hits2) public void hit(long hits2)
{ {
hits.put(hits2); board.hits.put(hits2);
} }
} }

View File

@ -0,0 +1,117 @@
package com.volmit.iris;
import java.util.List;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerChangedWorldEvent;
import com.volmit.iris.gen.IrisChunkGenerator;
import com.volmit.iris.noise.CNG;
import com.volmit.iris.object.IrisBiome;
import com.volmit.iris.util.BiomeResult;
import com.volmit.iris.util.BoardManager;
import com.volmit.iris.util.BoardProvider;
import com.volmit.iris.util.BoardSettings;
import com.volmit.iris.util.C;
import com.volmit.iris.util.ChronoLatch;
import com.volmit.iris.util.Form;
import com.volmit.iris.util.IrisStructureResult;
import com.volmit.iris.util.KList;
import com.volmit.iris.util.RollingSequence;
import com.volmit.iris.util.ScoreDirection;
public class IrisBoardManager implements BoardProvider, Listener
{
private BoardManager manager;
private String mem = "...";
public RollingSequence hits = new RollingSequence(20);
public RollingSequence tp = new RollingSequence(100);
private ChronoLatch cl = new ChronoLatch(1000);
public IrisBoardManager()
{
Iris.instance.registerListener(this);
//@builder
manager = new BoardManager(Iris.instance, BoardSettings.builder()
.boardProvider(this)
.scoreDirection(ScoreDirection.DOWN)
.build());
//@done
}
private boolean isIrisWorld(World w)
{
return (w.getGenerator() instanceof IrisChunkGenerator) && ((IrisChunkGenerator) w.getGenerator()).isDev();
}
@EventHandler
public void on(PlayerChangedWorldEvent e)
{
if(isIrisWorld(e.getPlayer().getWorld()))
{
manager.remove(e.getPlayer());
manager.setup(e.getPlayer());
}
}
@Override
public String getTitle(Player player)
{
return C.GREEN + "Iris";
}
@Override
public List<String> getLines(Player player)
{
KList<String> v = new KList<>();
if(!isIrisWorld(player.getWorld()))
{
return v;
}
IrisChunkGenerator g = (IrisChunkGenerator) player.getWorld().getGenerator();
if(cl.flip())
{
mem = Form.memSize(g.guessMemoryUsage(), 2);
}
int x = player.getLocation().getBlockX();
int y = player.getLocation().getBlockY();
int z = player.getLocation().getBlockZ();
BiomeResult er = g.sampleTrueBiome(x, y, z);
IrisBiome b = er != null ? er.getBiome() : null;
IrisStructureResult st = g.getStructure(x, y, z);
tp.put(g.getMetrics().getSpeed());
v.add("&7&m------------------");
v.add(C.GREEN + "Speed" + C.GRAY + ": " + C.BOLD + "" + C.GRAY + Form.f(g.getMetrics().getPerSecond().getAverage(), 0) + "/s " + Form.duration(g.getMetrics().getTotal().getAverage(), 1) + "");
v.add(C.GREEN + "Generators" + C.GRAY + ": " + Form.f(CNG.creates));
v.add(C.GREEN + "Noise" + C.GRAY + ": " + Form.f((int) hits.getAverage()));
v.add(C.GREEN + "Parallax" + C.GRAY + ": " + Form.f((int) g.getParallaxMap().getLoadedChunks().size()));
v.add(C.GREEN + "Objects" + C.GRAY + ": " + Form.f(g.getData().getObjectLoader().count()));
v.add(C.GREEN + "Memory" + C.GRAY + ": " + mem);
v.add("&7&m------------------");
v.add(C.GREEN + "Heightmap" + C.GRAY + ": " + (int) g.getTerrainHeight(x, z));
if(er != null && b != null)
{
v.add(C.GREEN + "Biome" + C.GRAY + ": " + b.getName());
}
if(st != null)
{
v.add(C.GREEN + "Structure" + C.GRAY + ": " + st.getStructure().getName());
v.add(C.GREEN + "Tile" + C.GRAY + ": " + st.getTile().toString());
}
v.add("&7&m------------------");
return v;
}
}

View File

@ -28,6 +28,6 @@ public class IrisMetrics
public double getSpeed() public double getSpeed()
{ {
return (double) Iris.instance.hits.getAverage() / (double) total.getAverage(); return (double) Iris.board.hits.getAverage() / (double) total.getAverage();
} }
} }

View File

@ -38,6 +38,10 @@ public class IrisSettings
@Desc("Allows configs to be changed and hotloaded without reloading.") @Desc("Allows configs to be changed and hotloaded without reloading.")
public boolean hotloading = true; public boolean hotloading = true;
@DontObfuscate
@Desc("When using studio open or create, open the codeworkspace automatically.")
public boolean openVSCode = true;
public static IrisSettings get() public static IrisSettings get()
{ {
if(settings == null) if(settings == null)

View File

@ -116,7 +116,12 @@ public class ProjectManager
updateWorkspace(i); updateWorkspace(i);
sender.sendMessage("Workspace Updated"); sender.sendMessage("Workspace Updated");
}); });
Desktop.getDesktop().open(i);
if(IrisSettings.get().openVSCode)
{
Desktop.getDesktop().open(i);
}
break; break;
} }
} }

View File

@ -4,7 +4,6 @@ import java.awt.Color;
import java.util.Iterator; import java.util.Iterator;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.Particle; import org.bukkit.Particle;
@ -24,6 +23,7 @@ import org.bukkit.util.BlockVector;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
import com.volmit.iris.object.IrisObject; import com.volmit.iris.object.IrisObject;
import com.volmit.iris.util.C;
import com.volmit.iris.util.Cuboid; import com.volmit.iris.util.Cuboid;
import com.volmit.iris.util.KList; import com.volmit.iris.util.KList;
import com.volmit.iris.util.M; import com.volmit.iris.util.M;
@ -268,7 +268,7 @@ public class WandManager implements Listener
ItemStack is = new ItemStack(Material.BLAZE_ROD); ItemStack is = new ItemStack(Material.BLAZE_ROD);
is.addUnsafeEnchantment(Enchantment.ARROW_INFINITE, 1); is.addUnsafeEnchantment(Enchantment.ARROW_INFINITE, 1);
ItemMeta im = is.getItemMeta(); ItemMeta im = is.getItemMeta();
im.setDisplayName(ChatColor.BOLD + "" + ChatColor.GOLD + "Wand of Iris"); im.setDisplayName(C.BOLD + "" + C.GOLD + "Wand of Iris");
im.setUnbreakable(true); im.setUnbreakable(true);
im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_PLACED_ON, ItemFlag.HIDE_POTION_EFFECTS, ItemFlag.HIDE_DESTROYS, ItemFlag.HIDE_ENCHANTS); im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_PLACED_ON, ItemFlag.HIDE_POTION_EFFECTS, ItemFlag.HIDE_DESTROYS, ItemFlag.HIDE_ENCHANTS);
im.setLore(new KList<String>().add(locationToString(a), locationToString(b))); im.setLore(new KList<String>().add(locationToString(a), locationToString(b)));

View File

@ -10,15 +10,12 @@ public class CommandIris extends MortarCommand
@Command @Command
private CommandIrisStudio studio; private CommandIrisStudio studio;
@Command
private CommandIrisWorld world;
@Command @Command
private CommandIrisWhat what; private CommandIrisWhat what;
@Command @Command
private CommandIrisObject object; private CommandIrisObject object;
@Command @Command
private CommandIrisStructure structure; private CommandIrisStructure structure;

View File

@ -0,0 +1,56 @@
package com.volmit.iris.command;
import java.awt.Desktop;
import java.io.File;
import org.bukkit.entity.Player;
import com.volmit.iris.Iris;
import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender;
public class CommandIrisEditBiome extends MortarCommand
{
public CommandIrisEditBiome()
{
super("editbiome", "ebiome", "eb");
setDescription("Open this biome file in vscode");
requiresPermission(Iris.perm.studio);
setCategory("Studio");
}
@Override
public boolean handle(MortarSender sender, String[] args)
{
if(sender.isPlayer())
{
Player p = sender.player();
try
{
File f = Iris.proj.getCurrentProject().sampleTrueBiome(p.getLocation().getBlockX(), p.getLocation().getBlockY(), p.getLocation().getBlockZ()).getBiome().getLoadFile();
Desktop.getDesktop().open(f);
}
catch(Throwable e)
{
sender.sendMessage("Cant find the file. Are you in an Iris world?");
}
return true;
}
else
{
sender.sendMessage("Players only.");
}
return true;
}
@Override
protected String getArgsUsage()
{
return "[width]";
}
}

View File

@ -1,12 +1,12 @@
package com.volmit.iris.command; package com.volmit.iris.command;
import org.bukkit.ChatColor;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisMetrics; import com.volmit.iris.IrisMetrics;
import com.volmit.iris.gen.IrisChunkGenerator; import com.volmit.iris.gen.IrisChunkGenerator;
import com.volmit.iris.util.C;
import com.volmit.iris.util.Form; import com.volmit.iris.util.Form;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;
@ -30,12 +30,12 @@ public class CommandIrisMetrics extends MortarCommand
World world = p.getWorld(); World world = p.getWorld();
IrisChunkGenerator g = (IrisChunkGenerator) world.getGenerator(); IrisChunkGenerator g = (IrisChunkGenerator) world.getGenerator();
IrisMetrics m = g.getMetrics(); IrisMetrics m = g.getMetrics();
sender.sendMessage("Thread Count: " + ChatColor.BOLD + "" + ChatColor.WHITE + g.getThreads()); sender.sendMessage("Thread Count: " + C.BOLD + "" + C.WHITE + g.getThreads());
sender.sendMessage("Total : " + ChatColor.BOLD + "" + ChatColor.WHITE + Form.duration(m.getTotal().getAverage(), 2)); sender.sendMessage("Total : " + C.BOLD + "" + C.WHITE + Form.duration(m.getTotal().getAverage(), 2));
sender.sendMessage(" Terrain : " + ChatColor.BOLD + "" + ChatColor.WHITE + Form.duration(m.getTerrain().getAverage(), 2)); sender.sendMessage(" Terrain : " + C.BOLD + "" + C.WHITE + Form.duration(m.getTerrain().getAverage(), 2));
sender.sendMessage(" Parallax: " + ChatColor.BOLD + "" + ChatColor.WHITE + Form.duration(m.getParallax().getAverage(), 2)); sender.sendMessage(" Parallax: " + C.BOLD + "" + C.WHITE + Form.duration(m.getParallax().getAverage(), 2));
sender.sendMessage(" Post : " + ChatColor.BOLD + "" + ChatColor.WHITE + Form.duration(m.getPost().getAverage(), 2)); sender.sendMessage(" Post : " + C.BOLD + "" + C.WHITE + Form.duration(m.getPost().getAverage(), 2));
sender.sendMessage("Updates : " + ChatColor.BOLD + "" + ChatColor.WHITE + Form.duration(m.getUpdate().getAverage(), 2)); sender.sendMessage("Updates : " + C.BOLD + "" + C.WHITE + Form.duration(m.getUpdate().getAverage(), 2));
return true; return true;
} }

View File

@ -31,6 +31,30 @@ public class CommandIrisStudio extends MortarCommand
@Command @Command
private CommandIrisStudioList list; private CommandIrisStudioList list;
@Command
private CommandIrisGoto got0;
@Command
private CommandIrisEditBiome ebiome;
@Command
private CommandIrisMetrics metrics;
@Command
private CommandIrisPregen pregen;
@Command
private CommandIrisPregen world;
@Command
private CommandIrisHotload hotload;
@Command
private CommandIrisTC tc;
@Command
private CommandIrisLoot loot;
public CommandIrisStudio() public CommandIrisStudio()
{ {
super("studio", "std"); super("studio", "std");

View File

@ -1,11 +1,10 @@
package com.volmit.iris.command; package com.volmit.iris.command;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.util.C;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;
import net.md_5.bungee.api.ChatColor;
public class CommandIrisStudioCreate extends MortarCommand public class CommandIrisStudioCreate extends MortarCommand
{ {
public CommandIrisStudioCreate() public CommandIrisStudioCreate()
@ -22,7 +21,7 @@ public class CommandIrisStudioCreate extends MortarCommand
if(args.length != 1) if(args.length != 1)
{ {
sender.sendMessage("Please use a lowercase name with hyphens (-) for spaces."); sender.sendMessage("Please use a lowercase name with hyphens (-) for spaces.");
sender.sendMessage("I.e. /iris std new " + ChatColor.BOLD + "aether"); sender.sendMessage("I.e. /iris std new " + C.BOLD + "aether");
return true; return true;
} }

View File

@ -1,12 +1,12 @@
package com.volmit.iris.command; package com.volmit.iris.command;
import org.bukkit.ChatColor;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisMetrics; import com.volmit.iris.IrisMetrics;
import com.volmit.iris.gen.IrisChunkGenerator; import com.volmit.iris.gen.IrisChunkGenerator;
import com.volmit.iris.util.C;
import com.volmit.iris.util.Command; import com.volmit.iris.util.Command;
import com.volmit.iris.util.Form; import com.volmit.iris.util.Form;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
@ -38,11 +38,11 @@ public class CommandIrisWhat extends MortarCommand
World world = p.getWorld(); World world = p.getWorld();
IrisChunkGenerator g = (IrisChunkGenerator) world.getGenerator(); IrisChunkGenerator g = (IrisChunkGenerator) world.getGenerator();
IrisMetrics m = g.getMetrics(); IrisMetrics m = g.getMetrics();
sender.sendMessage("Thread Count: " + ChatColor.BOLD + "" + ChatColor.WHITE + g.getThreads()); sender.sendMessage("Thread Count: " + C.BOLD + "" + C.WHITE + g.getThreads());
sender.sendMessage("Total : " + ChatColor.BOLD + "" + ChatColor.WHITE + Form.duration(m.getTotal().getAverage(), 2)); sender.sendMessage("Total : " + C.BOLD + "" + C.WHITE + Form.duration(m.getTotal().getAverage(), 2));
sender.sendMessage(" Terrain : " + ChatColor.BOLD + "" + ChatColor.WHITE + Form.duration(m.getTerrain().getAverage(), 2)); sender.sendMessage(" Terrain : " + C.BOLD + "" + C.WHITE + Form.duration(m.getTerrain().getAverage(), 2));
sender.sendMessage(" Parallax: " + ChatColor.BOLD + "" + ChatColor.WHITE + Form.duration(m.getParallax().getAverage(), 2)); sender.sendMessage(" Parallax: " + C.BOLD + "" + C.WHITE + Form.duration(m.getParallax().getAverage(), 2));
sender.sendMessage(" Post : " + ChatColor.BOLD + "" + ChatColor.WHITE + Form.duration(m.getPost().getAverage(), 2)); sender.sendMessage(" Post : " + C.BOLD + "" + C.WHITE + Form.duration(m.getPost().getAverage(), 2));
return true; return true;
} }

View File

@ -1,11 +1,11 @@
package com.volmit.iris.command; package com.volmit.iris.command;
import org.bukkit.ChatColor;
import org.bukkit.FluidCollisionMode; import org.bukkit.FluidCollisionMode;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.util.C;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;
@ -27,8 +27,8 @@ public class CommandIrisWhatBlock extends MortarCommand
{ {
Player p = sender.player(); Player p = sender.player();
BlockData bd = p.getTargetBlockExact(128, FluidCollisionMode.NEVER).getBlockData(); BlockData bd = p.getTargetBlockExact(128, FluidCollisionMode.NEVER).getBlockData();
sender.sendMessage("Material: " + ChatColor.GREEN + bd.getMaterial().name()); sender.sendMessage("Material: " + C.GREEN + bd.getMaterial().name());
sender.sendMessage("Full: " + ChatColor.WHITE + bd.getAsString(true)); sender.sendMessage("Full: " + C.WHITE + bd.getAsString(true));
} }
else else

View File

@ -1,15 +1,17 @@
package com.volmit.iris.command; package com.volmit.iris.command;
import org.bukkit.ChatColor;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.util.C;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;
public class CommandIrisWhatHand extends MortarCommand { public class CommandIrisWhatHand extends MortarCommand
public CommandIrisWhatHand() { {
public CommandIrisWhatHand()
{
super("hand", "h"); super("hand", "h");
setDescription("Get the block data for holding."); setDescription("Get the block data for holding.");
requiresPermission(Iris.perm.studio); requiresPermission(Iris.perm.studio);
@ -21,11 +23,11 @@ public class CommandIrisWhatHand extends MortarCommand {
public boolean handle(MortarSender sender, String[] args) public boolean handle(MortarSender sender, String[] args)
{ {
if(sender.isPlayer()) if(sender.isPlayer())
{ {
Player p = sender.player(); Player p = sender.player();
BlockData bd = p.getInventory().getItemInMainHand().getType().createBlockData(); BlockData bd = p.getInventory().getItemInMainHand().getType().createBlockData();
sender.sendMessage("Material: " + ChatColor.GREEN + bd.getMaterial().name()); sender.sendMessage("Material: " + C.GREEN + bd.getMaterial().name());
sender.sendMessage("Full: " + ChatColor.WHITE + bd.getAsString(true)); sender.sendMessage("Full: " + C.WHITE + bd.getAsString(true));
} }
else else
@ -37,7 +39,8 @@ public class CommandIrisWhatHand extends MortarCommand {
} }
@Override @Override
protected String getArgsUsage() { protected String getArgsUsage()
{
return ""; return "";
} }
} }

View File

@ -1,54 +0,0 @@
package com.volmit.iris.command;
import com.volmit.iris.Iris;
import com.volmit.iris.util.Command;
import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender;
public class CommandIrisWorld extends MortarCommand
{
@Command
private CommandIrisGoto got0;
@Command
private CommandIrisMetrics metrics;
@Command
private CommandIrisPregen pregen;
@Command
private CommandIrisPregen world;
@Command
private CommandIrisHotload hotload;
@Command
private CommandIrisTC tc;
@Command
private CommandIrisLoot loot;
public CommandIrisWorld()
{
super("world", "wrld", "w");
setDescription("Commands while in an iris world.");
requiresPermission(Iris.perm.studio);
setCategory("World");
setDescription("Worldly commands");
}
@Override
public boolean handle(MortarSender sender, String[] args)
{
sender.sendMessage("Iris In-World Commands");
printHelp(sender);
return true;
}
@Override
protected String getArgsUsage()
{
return "[biome] [otherbiome] [-cave]";
}
}

View File

@ -34,6 +34,7 @@ import com.volmit.iris.object.IrisObject;
import com.volmit.iris.object.IrisRegion; import com.volmit.iris.object.IrisRegion;
import com.volmit.iris.object.IrisStructure; import com.volmit.iris.object.IrisStructure;
import com.volmit.iris.util.B; import com.volmit.iris.util.B;
import com.volmit.iris.util.C;
import com.volmit.iris.util.ChronoLatch; import com.volmit.iris.util.ChronoLatch;
import com.volmit.iris.util.J; import com.volmit.iris.util.J;
import com.volmit.iris.util.M; import com.volmit.iris.util.M;
@ -41,7 +42,6 @@ import com.volmit.iris.util.RNG;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import net.md_5.bungee.api.ChatColor;
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@ -426,10 +426,10 @@ public abstract class ContextualChunkGenerator extends ChunkGenerator implements
for(Player i : world.getPlayers()) for(Player i : world.getPlayers())
{ {
Iris.instance.imsg(i, ChatColor.DARK_RED + "Iris Generator has crashed!"); Iris.instance.imsg(i, C.DARK_RED + "Iris Generator has crashed!");
Iris.instance.imsg(i, ChatColor.RED + "- Check the console for the error."); Iris.instance.imsg(i, C.RED + "- Check the console for the error.");
Iris.instance.imsg(i, ChatColor.RED + "- To Regen, use /iris std open <dim>"); Iris.instance.imsg(i, C.RED + "- To Regen, use /iris std open <dim>");
Iris.instance.imsg(i, ChatColor.RED + "- To Retry the chunk, use /iris world retry"); Iris.instance.imsg(i, C.RED + "- To Retry the chunk, use /iris world retry");
} }
}); });

View File

@ -27,8 +27,8 @@
// //
package com.volmit.iris.noise; package com.volmit.iris.noise;
import com.volmit.iris.util.vec.Vector2f; import com.volmit.iris.util.Vector2f;
import com.volmit.iris.util.vec.Vector3f; import com.volmit.iris.util.Vector3f;
public class FastNoise public class FastNoise
{ {

View File

@ -11,6 +11,7 @@ import com.volmit.iris.gen.atomics.AtomicCache;
import com.volmit.iris.noise.CNG; import com.volmit.iris.noise.CNG;
import com.volmit.iris.util.ArrayType; import com.volmit.iris.util.ArrayType;
import com.volmit.iris.util.B; import com.volmit.iris.util.B;
import com.volmit.iris.util.C;
import com.volmit.iris.util.Desc; import com.volmit.iris.util.Desc;
import com.volmit.iris.util.DontObfuscate; import com.volmit.iris.util.DontObfuscate;
import com.volmit.iris.util.Form; import com.volmit.iris.util.Form;
@ -21,7 +22,6 @@ import com.volmit.iris.util.RNG;
import com.volmit.iris.util.Required; import com.volmit.iris.util.Required;
import lombok.Data; import lombok.Data;
import net.md_5.bungee.api.ChatColor;
@Desc("Represents a loot entry") @Desc("Represents a loot entry")
@Data @Data
@ -161,11 +161,11 @@ public class IrisLoot
{ {
if(lore.isNotEmpty()) if(lore.isNotEmpty())
{ {
lore.add(ChatColor.GRAY + "--------------------"); lore.add(C.GRAY + "--------------------");
} }
lore.add(ChatColor.GRAY + "From: " + table.getName() + " (" + Form.pc(1D / table.getRarity(), 5) + ")"); lore.add(C.GRAY + "From: " + table.getName() + " (" + Form.pc(1D / table.getRarity(), 5) + ")");
lore.add(ChatColor.GRAY + "1 in " + (table.getRarity() * getRarity()) + " Chance (" + Form.pc(1D / (table.getRarity() * getRarity()), 5) + ")"); lore.add(C.GRAY + "1 in " + (table.getRarity() * getRarity()) + " Chance (" + Form.pc(1D / (table.getRarity() * getRarity()), 5) + ")");
} }
m.setLore(lore); m.setLore(lore);

View File

@ -14,6 +14,7 @@ import com.volmit.iris.util.KSet;
import com.volmit.iris.util.MaxNumber; import com.volmit.iris.util.MaxNumber;
import com.volmit.iris.util.MinNumber; import com.volmit.iris.util.MinNumber;
import com.volmit.iris.util.RNG; import com.volmit.iris.util.RNG;
import com.volmit.iris.util.RegistryListBiome;
import com.volmit.iris.util.Required; import com.volmit.iris.util.Required;
import lombok.Data; import lombok.Data;
@ -97,24 +98,28 @@ public class IrisRegion extends IrisRegistrant implements IRare
@Desc("A list of structure tilesets") @Desc("A list of structure tilesets")
private KList<IrisStructurePlacement> structures = new KList<>(); private KList<IrisStructurePlacement> structures = new KList<>();
@RegistryListBiome
@Required @Required
@ArrayType(min = 1, type = String.class) @ArrayType(min = 1, type = String.class)
@DontObfuscate @DontObfuscate
@Desc("A list of root-level biomes in this region. Don't specify child biomes of other biomes here. Just the root parents.") @Desc("A list of root-level biomes in this region. Don't specify child biomes of other biomes here. Just the root parents.")
private KList<String> landBiomes = new KList<>(); private KList<String> landBiomes = new KList<>();
@RegistryListBiome
@Required @Required
@ArrayType(min = 1, type = String.class) @ArrayType(min = 1, type = String.class)
@DontObfuscate @DontObfuscate
@Desc("A list of root-level biomes in this region. Don't specify child biomes of other biomes here. Just the root parents.") @Desc("A list of root-level biomes in this region. Don't specify child biomes of other biomes here. Just the root parents.")
private KList<String> seaBiomes = new KList<>(); private KList<String> seaBiomes = new KList<>();
@RegistryListBiome
@Required @Required
@ArrayType(min = 1, type = String.class) @ArrayType(min = 1, type = String.class)
@DontObfuscate @DontObfuscate
@Desc("A list of root-level biomes in this region. Don't specify child biomes of other biomes here. Just the root parents.") @Desc("A list of root-level biomes in this region. Don't specify child biomes of other biomes here. Just the root parents.")
private KList<String> shoreBiomes = new KList<>(); private KList<String> shoreBiomes = new KList<>();
@RegistryListBiome
@ArrayType(min = 1, type = String.class) @ArrayType(min = 1, type = String.class)
@DontObfuscate @DontObfuscate
@Desc("A list of root-level biomes in this region. Don't specify child biomes of other biomes here. Just the root parents.") @Desc("A list of root-level biomes in this region. Don't specify child biomes of other biomes here. Just the root parents.")

View File

@ -7,7 +7,6 @@ import java.util.stream.Collectors;
import java.util.stream.IntStream; import java.util.stream.IntStream;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.scoreboard.DisplaySlot; import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective; import org.bukkit.scoreboard.Objective;
@ -21,111 +20,128 @@ import lombok.Setter;
* @author Missionary (missionarymc@gmail.com) * @author Missionary (missionarymc@gmail.com)
* @since 3/23/2018 * @since 3/23/2018
*/ */
public class Board { public class Board
{
private static final String[] CACHED_ENTRIES = new String[ChatColor.values().length]; private static final String[] CACHED_ENTRIES = new String[C.values().length];
private static final Function<String, String> APPLY_COLOR_TRANSLATION = s -> ChatColor.translateAlternateColorCodes('&', s); private static final Function<String, String> APPLY_COLOR_TRANSLATION = s -> C.translateAlternateColorCodes('&', s);
static { static
IntStream.range(0, 15).forEach(i -> CACHED_ENTRIES[i] = ChatColor.values()[i].toString() + ChatColor.RESET); {
} IntStream.range(0, 15).forEach(i -> CACHED_ENTRIES[i] = C.values()[i].toString() + C.RESET);
}
private final Player player; private final Player player;
private final Objective objective; private final Objective objective;
private final Team team; private final Team team;
@Setter private BoardSettings boardSettings; @Setter
private boolean ready; private BoardSettings boardSettings;
private boolean ready;
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public Board(@NonNull final Player player, final BoardSettings boardSettings) { public Board(@NonNull final Player player, final BoardSettings boardSettings)
this.player = player; {
this.boardSettings = boardSettings; this.player = player;
this.objective = this.getScoreboard().getObjective("board") == null ? this.getScoreboard().registerNewObjective("board", "dummy") : this.getScoreboard().getObjective("board"); this.boardSettings = boardSettings;
this.objective.setDisplaySlot(DisplaySlot.SIDEBAR); this.objective = this.getScoreboard().getObjective("board") == null ? this.getScoreboard().registerNewObjective("board", "dummy") : this.getScoreboard().getObjective("board");
this.team = this.getScoreboard().getTeam("board") == null ? this.getScoreboard().registerNewTeam("board") : this.getScoreboard().getTeam("board"); this.objective.setDisplaySlot(DisplaySlot.SIDEBAR);
this.team.setAllowFriendlyFire(true); this.team = this.getScoreboard().getTeam("board") == null ? this.getScoreboard().registerNewTeam("board") : this.getScoreboard().getTeam("board");
this.team.setCanSeeFriendlyInvisibles(false); this.team.setAllowFriendlyFire(true);
this.team.setPrefix(""); this.team.setCanSeeFriendlyInvisibles(false);
this.team.setSuffix(""); this.team.setPrefix("");
this.ready = true; this.team.setSuffix("");
} this.ready = true;
}
public Scoreboard getScoreboard() { public Scoreboard getScoreboard()
return (player != null) ? player.getScoreboard() : null; {
} return (player != null) ? player.getScoreboard() : null;
}
public void remove() { public void remove()
this.resetScoreboard(); {
} this.resetScoreboard();
}
public void update() { public void update()
// Checking if we are ready to start updating the Scoreboard. {
if (!ready) { // Checking if we are ready to start updating the Scoreboard.
return; if(!ready)
} {
return;
}
// Making sure the player is connected. // Making sure the player is connected.
if (!player.isOnline()) { if(!player.isOnline())
remove(); {
return; remove();
} return;
}
// Making sure the Scoreboard Provider is set. // Making sure the Scoreboard Provider is set.
if (boardSettings == null) { if(boardSettings == null)
return; {
} return;
}
// Getting their Scoreboard display from the Scoreboard Provider. // Getting their Scoreboard display from the Scoreboard Provider.
final List<String> entries = boardSettings.getBoardProvider().getLines(player).stream().map(APPLY_COLOR_TRANSLATION).collect(Collectors.toList()); final List<String> entries = boardSettings.getBoardProvider().getLines(player).stream().map(APPLY_COLOR_TRANSLATION).collect(Collectors.toList());
if (boardSettings.getScoreDirection() == ScoreDirection.UP) { if(boardSettings.getScoreDirection() == ScoreDirection.UP)
Collections.reverse(entries); {
} Collections.reverse(entries);
}
// Setting the Scoreboard title // Setting the Scoreboard title
String title = boardSettings.getBoardProvider().getTitle(player); String title = boardSettings.getBoardProvider().getTitle(player);
if (title.length() > 32) { if(title.length() > 32)
Bukkit.getLogger().warning("The title " + title + " is over 32 characters in length, substringing to prevent errors."); {
title = title.substring(0, 32); Bukkit.getLogger().warning("The title " + title + " is over 32 characters in length, substringing to prevent errors.");
} title = title.substring(0, 32);
objective.setDisplayName(ChatColor.translateAlternateColorCodes('&', title)); }
objective.setDisplayName(C.translateAlternateColorCodes('&', title));
// Clearing previous Scoreboard values if entry sizes don't match. // Clearing previous Scoreboard values if entry sizes don't match.
if (this.getScoreboard().getEntries().size() != entries.size()) if(this.getScoreboard().getEntries().size() != entries.size())
this.getScoreboard().getEntries().forEach(this::removeEntry); this.getScoreboard().getEntries().forEach(this::removeEntry);
// Setting Scoreboard lines. // Setting Scoreboard lines.
for (int i = 0; i < entries.size(); i++) { for(int i = 0; i < entries.size(); i++)
String str = entries.get(i); {
BoardEntry entry = BoardEntry.translateToEntry(str); String str = entries.get(i);
Team team = getScoreboard().getTeam(CACHED_ENTRIES[i]); BoardEntry entry = BoardEntry.translateToEntry(str);
Team team = getScoreboard().getTeam(CACHED_ENTRIES[i]);
if (team == null) { if(team == null)
team = this.getScoreboard().registerNewTeam(CACHED_ENTRIES[i]); {
team.addEntry(team.getName()); team = this.getScoreboard().registerNewTeam(CACHED_ENTRIES[i]);
} team.addEntry(team.getName());
}
team.setPrefix(entry.getPrefix()); team.setPrefix(entry.getPrefix());
team.setSuffix(entry.getSuffix()); team.setSuffix(entry.getSuffix());
switch (boardSettings.getScoreDirection()) { switch(boardSettings.getScoreDirection())
case UP: {
objective.getScore(team.getName()).setScore(1 + i); case UP:
break; objective.getScore(team.getName()).setScore(1 + i);
case DOWN: break;
objective.getScore(team.getName()).setScore(15 - i); case DOWN:
break; objective.getScore(team.getName()).setScore(15 - i);
} break;
} }
} }
}
public void removeEntry(String id) { public void removeEntry(String id)
this.getScoreboard().resetScores(id); {
} this.getScoreboard().resetScores(id);
}
public void resetScoreboard() { public void resetScoreboard()
ready = false; {
player.setScoreboard(Bukkit.getScoreboardManager().getMainScoreboard()); ready = false;
} player.setScoreboard(Bukkit.getScoreboardManager().getMainScoreboard());
}
} }

View File

@ -1,40 +1,48 @@
package com.volmit.iris.util; package com.volmit.iris.util;
import lombok.Getter;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import lombok.Getter;
/** /**
* @author Missionary (missionarymc@gmail.com) * @author Missionary (missionarymc@gmail.com)
* @since 3/29/2018 * @since 3/29/2018
*/ */
public class BoardEntry { public class BoardEntry
{
@Getter @Getter
private final String prefix, suffix; private final String prefix, suffix;
private BoardEntry(final String prefix, final String suffix) { private BoardEntry(final String prefix, final String suffix)
this.prefix = prefix; {
this.suffix = suffix; this.prefix = prefix;
} this.suffix = suffix;
}
public static BoardEntry translateToEntry(String input) { public static BoardEntry translateToEntry(String input)
if (input.isEmpty()) { {
return new BoardEntry("", ""); if(input.isEmpty())
} {
if (input.length() <= 16) { return new BoardEntry("", "");
return new BoardEntry(input, ""); }
} else { if(input.length() <= 16)
String prefix = input.substring(0, 16); {
String suffix = ""; return new BoardEntry(input, "");
}
else
{
String prefix = input.substring(0, 16);
String suffix = "";
if (prefix.endsWith("\u00a7")) { if(prefix.endsWith("\u00a7"))
prefix = prefix.substring(0, prefix.length() - 1); {
suffix = "\u00a7" + suffix; prefix = prefix.substring(0, prefix.length() - 1);
} suffix = "\u00a7" + suffix;
}
suffix = StringUtils.left(ChatColor.getLastColors(prefix) + suffix + input.substring(16), 16); suffix = StringUtils.left(C.getLastColors(prefix) + suffix + input.substring(16), 16);
return new BoardEntry(prefix, suffix); return new BoardEntry(prefix, suffix);
} }
} }
} }

View File

@ -1,86 +1,72 @@
package com.volmit.iris.util; package com.volmit.iris.util;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitTask;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
/** import org.bukkit.Bukkit;
* @author Missionary (missionarymc@gmail.com) import org.bukkit.entity.Player;
* @since 3/23/2018 import org.bukkit.plugin.java.JavaPlugin;
*/ import org.bukkit.scheduler.BukkitTask;
public class BoardManager implements Listener {
private final JavaPlugin plugin; public class BoardManager
private BoardSettings boardSettings; {
private Map<UUID, Board> scoreboards; private final JavaPlugin plugin;
private BukkitTask updateTask; private BoardSettings boardSettings;
private Map<UUID, Board> scoreboards;
private BukkitTask updateTask;
public BoardManager(JavaPlugin plugin, BoardSettings boardSettings) { public BoardManager(JavaPlugin plugin, BoardSettings boardSettings)
this.plugin = plugin; {
this.boardSettings = boardSettings; this.plugin = plugin;
this.scoreboards = new ConcurrentHashMap<>(); this.boardSettings = boardSettings;
this.updateTask = new BoardUpdateTask(this).runTaskTimer(plugin, 2L, 2L); this.scoreboards = new ConcurrentHashMap<>();
plugin.getServer().getPluginManager().registerEvents(this, plugin); this.updateTask = new BoardUpdateTask(this).runTaskTimer(plugin, 2L, 2L);
plugin.getServer().getOnlinePlayers().forEach(this::setup); plugin.getServer().getOnlinePlayers().forEach(this::setup);
} }
public void setBoardSettings(BoardSettings boardSettings) { public void setBoardSettings(BoardSettings boardSettings)
this.boardSettings = boardSettings; {
scoreboards.values().forEach(board -> board.setBoardSettings(boardSettings)); this.boardSettings = boardSettings;
} scoreboards.values().forEach(board -> board.setBoardSettings(boardSettings));
}
public boolean hasBoard(Player player) { public boolean hasBoard(Player player)
return scoreboards.containsKey(player.getUniqueId()); {
} return scoreboards.containsKey(player.getUniqueId());
}
public Optional<Board> getBoard(Player player) { public Optional<Board> getBoard(Player player)
return Optional.ofNullable(scoreboards.get(player.getUniqueId())); {
} return Optional.ofNullable(scoreboards.get(player.getUniqueId()));
}
private void setup(Player player) { public void setup(Player player)
Optional.ofNullable(scoreboards.remove(player.getUniqueId())).ifPresent(Board::resetScoreboard); {
if (player.getScoreboard() == Bukkit.getScoreboardManager().getMainScoreboard()) { Optional.ofNullable(scoreboards.remove(player.getUniqueId())).ifPresent(Board::resetScoreboard);
player.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard()); if(player.getScoreboard().equals(Bukkit.getScoreboardManager().getMainScoreboard()))
} {
scoreboards.put(player.getUniqueId(), new Board(player, boardSettings)); player.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard());
} }
scoreboards.put(player.getUniqueId(), new Board(player, boardSettings));
}
private void remove(Player player) { public void remove(Player player)
Optional.ofNullable(scoreboards.remove(player.getUniqueId())).ifPresent(Board::remove); {
} Optional.ofNullable(scoreboards.remove(player.getUniqueId())).ifPresent(Board::remove);
}
public Map<UUID, Board> getScoreboards() { public Map<UUID, Board> getScoreboards()
return Collections.unmodifiableMap(scoreboards); {
} return Collections.unmodifiableMap(scoreboards);
}
@EventHandler public void onDisable()
public void onJoin(final PlayerJoinEvent e) { {
plugin.getServer().getScheduler().runTaskLater(plugin, () -> { updateTask.cancel();
if (e.getPlayer().isOnline()) { // Set this up 2 ticks later. plugin.getServer().getOnlinePlayers().forEach(this::remove);
setup(e.getPlayer()); scoreboards.clear();
} }
}, 2L);
}
@EventHandler
public void onQuit(final PlayerQuitEvent e) {
this.remove(e.getPlayer());
}
public void onDisable() {
updateTask.cancel();
plugin.getServer().getOnlinePlayers().forEach(this::remove);
scoreboards.clear();
}
} }

View File

@ -1,25 +1,12 @@
package com.volmit.iris.util; package com.volmit.iris.util;
import org.bukkit.entity.Player;
import org.bukkit.scoreboard.Objective;
import java.util.List; import java.util.List;
public interface BoardProvider { import org.bukkit.entity.Player;
/** public interface BoardProvider
* Gets the title for {@link Objective#getDisplayName()} {
* String getTitle(Player player);
* @param player The {@link Player} to supply
* @return The title for the objective
*/
String getTitle(Player player);
/** List<String> getLines(Player player);
* Gets the contents to be displayed on the {@link Board}
*
* @param player The {@link Player} to supply
* @return The {@link List} of contents
*/
List<String> getLines(Player player);
} }

View File

@ -3,16 +3,11 @@ package com.volmit.iris.util;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
/**
* @author Missionary (missionarymc@gmail.com)
* @since 5/31/2018
*/
@Getter @Getter
@Builder @Builder
public class BoardSettings { public class BoardSettings
{
private BoardProvider boardProvider; private BoardProvider boardProvider;
private ScoreDirection scoreDirection;
private ScoreDirection scoreDirection;
} }

View File

@ -1,4 +1,4 @@
package com.volmit.iris.util.inventory; package com.volmit.iris.util;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;

View File

@ -1,4 +1,4 @@
package com.volmit.iris.util.inventory; package com.volmit.iris.util;
/** /**
* Callback for async workers * Callback for async workers

View File

@ -1,9 +1,7 @@
package com.volmit.iris.util.inventory; package com.volmit.iris.util;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import com.volmit.iris.util.KList;
public interface Element public interface Element
{ {
public MaterialBlock getMaterial(); public MaterialBlock getMaterial();

View File

@ -1,4 +1,4 @@
package com.volmit.iris.util.inventory; package com.volmit.iris.util;
/** /**
* Element Event. * Element Event.

View File

@ -1,4 +1,4 @@
package com.volmit.iris.util.inventory; package com.volmit.iris.util;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;

View File

@ -3,8 +3,6 @@ package com.volmit.iris.util;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import org.bukkit.ChatColor;
/** /**
* Represents a pawn command * Represents a pawn command
* *
@ -53,7 +51,7 @@ public abstract class MortarCommand implements ICommand
} }
} }
b = true; b = true;
sender.sendMessage(ChatColor.GREEN + i.getNode() + " " + ChatColor.WHITE + i.getArgsUsage() + ChatColor.GRAY + " - " + i.getDescription()); sender.sendMessage(C.GREEN + i.getNode() + " " + C.WHITE + i.getArgsUsage() + C.GRAY + " - " + i.getDescription());
} }
if(!b) if(!b)

View File

@ -2,7 +2,6 @@ package com.volmit.iris.util;
import java.util.Set; import java.util.Set;
import org.bukkit.ChatColor;
import org.bukkit.Server; import org.bukkit.Server;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -20,7 +19,8 @@ import lombok.Setter;
* @author cyberpwn * @author cyberpwn
* *
*/ */
public class MortarSender implements CommandSender { public class MortarSender implements CommandSender
{
private CommandSender s; private CommandSender s;
private String tag; private String tag;
@ -31,14 +31,17 @@ public class MortarSender implements CommandSender {
/** /**
* Wrap a command sender * Wrap a command sender
* *
* @param s the command sender * @param s
* the command sender
*/ */
public MortarSender(CommandSender s) { public MortarSender(CommandSender s)
{
tag = ""; tag = "";
this.s = s; this.s = s;
} }
public MortarSender(CommandSender s, String tag) { public MortarSender(CommandSender s, String tag)
{
this.tag = tag; this.tag = tag;
this.s = s; this.s = s;
} }
@ -46,9 +49,11 @@ public class MortarSender implements CommandSender {
/** /**
* Set a command tag (prefix for sendMessage) * Set a command tag (prefix for sendMessage)
* *
* @param tag the tag * @param tag
* the tag
*/ */
public void setTag(String tag) { public void setTag(String tag)
{
this.tag = tag; this.tag = tag;
} }
@ -57,7 +62,8 @@ public class MortarSender implements CommandSender {
* *
* @return the command tag * @return the command tag
*/ */
public String getTag() { public String getTag()
{
return tag; return tag;
} }
@ -66,7 +72,8 @@ public class MortarSender implements CommandSender {
* *
* @return true if it is * @return true if it is
*/ */
public boolean isPlayer() { public boolean isPlayer()
{
return getS() instanceof Player; return getS() instanceof Player;
} }
@ -75,7 +82,8 @@ public class MortarSender implements CommandSender {
* *
* @return a casted player * @return a casted player
*/ */
public Player player() { public Player player()
{
return (Player) getS(); return (Player) getS();
} }
@ -84,102 +92,122 @@ public class MortarSender implements CommandSender {
* *
* @return the command sender * @return the command sender
*/ */
public CommandSender getS() { public CommandSender getS()
{
return s; return s;
} }
@Override @Override
public boolean isPermissionSet(String name) { public boolean isPermissionSet(String name)
{
return s.isPermissionSet(name); return s.isPermissionSet(name);
} }
@Override @Override
public boolean isPermissionSet(Permission perm) { public boolean isPermissionSet(Permission perm)
{
return s.isPermissionSet(perm); return s.isPermissionSet(perm);
} }
@Override @Override
public boolean hasPermission(String name) { public boolean hasPermission(String name)
{
return s.hasPermission(name); return s.hasPermission(name);
} }
@Override @Override
public boolean hasPermission(Permission perm) { public boolean hasPermission(Permission perm)
{
return s.hasPermission(perm); return s.hasPermission(perm);
} }
@Override @Override
public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value) { public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value)
{
return s.addAttachment(plugin, name, value); return s.addAttachment(plugin, name, value);
} }
@Override @Override
public PermissionAttachment addAttachment(Plugin plugin) { public PermissionAttachment addAttachment(Plugin plugin)
{
return s.addAttachment(plugin); return s.addAttachment(plugin);
} }
@Override @Override
public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value, int ticks) { public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value, int ticks)
{
return s.addAttachment(plugin, name, value, ticks); return s.addAttachment(plugin, name, value, ticks);
} }
@Override @Override
public PermissionAttachment addAttachment(Plugin plugin, int ticks) { public PermissionAttachment addAttachment(Plugin plugin, int ticks)
{
return s.addAttachment(plugin, ticks); return s.addAttachment(plugin, ticks);
} }
@Override @Override
public void removeAttachment(PermissionAttachment attachment) { public void removeAttachment(PermissionAttachment attachment)
{
s.removeAttachment(attachment); s.removeAttachment(attachment);
} }
@Override @Override
public void recalculatePermissions() { public void recalculatePermissions()
{
s.recalculatePermissions(); s.recalculatePermissions();
} }
@Override @Override
public Set<PermissionAttachmentInfo> getEffectivePermissions() { public Set<PermissionAttachmentInfo> getEffectivePermissions()
{
return s.getEffectivePermissions(); return s.getEffectivePermissions();
} }
@Override @Override
public boolean isOp() { public boolean isOp()
{
return s.isOp(); return s.isOp();
} }
@Override @Override
public void setOp(boolean value) { public void setOp(boolean value)
{
s.setOp(value); s.setOp(value);
} }
public void hr() { public void hr()
{
s.sendMessage("========================================================"); s.sendMessage("========================================================");
} }
@Override @Override
public void sendMessage(String message) { public void sendMessage(String message)
s.sendMessage(ChatColor.translateAlternateColorCodes('&', getTag()) + message); {
s.sendMessage(C.translateAlternateColorCodes('&', getTag()) + message);
} }
@Override @Override
public void sendMessage(String[] messages) { public void sendMessage(String[] messages)
for (String str : messages) {
s.sendMessage(ChatColor.translateAlternateColorCodes('&', getTag() + str)); for(String str : messages)
s.sendMessage(C.translateAlternateColorCodes('&', getTag() + str));
} }
@Override @Override
public Server getServer() { public Server getServer()
{
return s.getServer(); return s.getServer();
} }
@Override @Override
public String getName() { public String getName()
{
return s.getName(); return s.getName();
} }
@Override @Override
public Spigot spigot() { public Spigot spigot()
{
return s.spigot(); return s.spigot();
} }
} }

View File

@ -1,4 +1,4 @@
package com.volmit.iris.gen.parallax; package com.volmit.iris.util;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
@ -10,7 +10,6 @@ import org.bukkit.generator.ChunkGenerator.ChunkData;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.gen.atomics.AtomicSliver; import com.volmit.iris.gen.atomics.AtomicSliver;
import com.volmit.iris.util.Writable;
public class ParallaxChunk implements Writable public class ParallaxChunk implements Writable
{ {

View File

@ -1,4 +1,4 @@
package com.volmit.iris.gen.parallax; package com.volmit.iris.util;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
@ -11,9 +11,6 @@ import java.util.zip.GZIPInputStream;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.util.CustomOutputStream;
import com.volmit.iris.util.M;
import com.volmit.iris.util.Writable;
public class ParallaxRegion implements Writable public class ParallaxRegion implements Writable
{ {

View File

@ -1,4 +1,4 @@
package com.volmit.iris.gen.parallax; package com.volmit.iris.util;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
@ -6,11 +6,6 @@ import java.io.IOException;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import com.volmit.iris.util.B;
import com.volmit.iris.util.DataPalette;
import com.volmit.iris.util.KSet;
import com.volmit.iris.util.Writable;
public class ParallaxSection implements Writable public class ParallaxSection implements Writable
{ {
private final DataPalette<BlockData> block; private final DataPalette<BlockData> block;

View File

@ -1,4 +1,4 @@
package com.volmit.iris.gen.parallax; package com.volmit.iris.util;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -6,7 +6,6 @@ import java.io.IOException;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.util.KMap;
public class ParallaxWorld public class ParallaxWorld
{ {

View File

@ -29,7 +29,7 @@
* $State$ * $State$
*/ */
package com.volmit.iris.util.vec; package com.volmit.iris.util;
import java.lang.Math; import java.lang.Math;

View File

@ -29,7 +29,7 @@
* $State$ * $State$
*/ */
package com.volmit.iris.util.vec; package com.volmit.iris.util;
import java.lang.Math; import java.lang.Math;

View File

@ -29,7 +29,7 @@
* $State$ * $State$
*/ */
package com.volmit.iris.util.vec; package com.volmit.iris.util;
import java.lang.Math; import java.lang.Math;

View File

@ -29,7 +29,7 @@
* $State$ * $State$
*/ */
package com.volmit.iris.util.vec; package com.volmit.iris.util;
import java.lang.Math; import java.lang.Math;

View File

@ -38,13 +38,6 @@ import com.volmit.iris.object.IrisStructureTile;
import com.volmit.iris.object.NoiseStyle; import com.volmit.iris.object.NoiseStyle;
import com.volmit.iris.object.StructureTileCondition; import com.volmit.iris.object.StructureTileCondition;
import com.volmit.iris.object.TileResult; import com.volmit.iris.object.TileResult;
import com.volmit.iris.util.inventory.C;
import com.volmit.iris.util.inventory.MaterialBlock;
import com.volmit.iris.util.inventory.UIElement;
import com.volmit.iris.util.inventory.UIStaticDecorator;
import com.volmit.iris.util.inventory.UIWindow;
import com.volmit.iris.util.inventory.Window;
import com.volmit.iris.util.inventory.WindowResolution;
import lombok.Data; import lombok.Data;

View File

@ -29,7 +29,7 @@
* $State$ * $State$
*/ */
package com.volmit.iris.util.vec; package com.volmit.iris.util;
import java.lang.Math; import java.lang.Math;

View File

@ -29,7 +29,7 @@
* $State$ * $State$
*/ */
package com.volmit.iris.util.vec; package com.volmit.iris.util;
import java.lang.Math; import java.lang.Math;

View File

@ -29,7 +29,7 @@
* $State$ * $State$
*/ */
package com.volmit.iris.util.vec; package com.volmit.iris.util;
import java.lang.Math; import java.lang.Math;

View File

@ -29,7 +29,7 @@
* $State$ * $State$
*/ */
package com.volmit.iris.util.vec; package com.volmit.iris.util;
import java.lang.Math; import java.lang.Math;

View File

@ -29,7 +29,7 @@
* $State$ * $State$
*/ */
package com.volmit.iris.util.vec; package com.volmit.iris.util;
import java.lang.Math; import java.lang.Math;

View File

@ -29,7 +29,7 @@
* $State$ * $State$
*/ */
package com.volmit.iris.util.vec; package com.volmit.iris.util;
import java.lang.Math; import java.lang.Math;

View File

@ -1,12 +1,10 @@
package com.volmit.iris.util.inventory; package com.volmit.iris.util;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import com.volmit.iris.util.KList;
public class UIElement implements Element public class UIElement implements Element
{ {
private MaterialBlock material; private MaterialBlock material;

View File

@ -1,4 +1,4 @@
package com.volmit.iris.util.inventory; package com.volmit.iris.util;
import org.bukkit.Material; import org.bukkit.Material;

View File

@ -1,4 +1,4 @@
package com.volmit.iris.util.inventory; package com.volmit.iris.util;
public class UIVoidDecorator implements WindowDecorator public class UIVoidDecorator implements WindowDecorator
{ {

View File

@ -1,4 +1,4 @@
package com.volmit.iris.util.inventory; package com.volmit.iris.util;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -12,9 +12,6 @@ import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.util.J;
import com.volmit.iris.util.KMap;
import com.volmit.iris.util.KSet;
public class UIWindow implements Window, Listener public class UIWindow implements Window, Listener
{ {

View File

@ -29,7 +29,7 @@
* $State$ * $State$
*/ */
package com.volmit.iris.util.vec; package com.volmit.iris.util;
/** /**
* Utility vecmath class used when computing the hash code for vecmath * Utility vecmath class used when computing the hash code for vecmath

View File

@ -29,7 +29,7 @@
* $State$ * $State$
*/ */
package com.volmit.iris.util.vec; package com.volmit.iris.util;
import java.lang.Math; import java.lang.Math;

View File

@ -29,7 +29,7 @@
* $State$ * $State$
*/ */
package com.volmit.iris.util.vec; package com.volmit.iris.util;
import java.lang.Math; import java.lang.Math;

View File

@ -29,7 +29,7 @@
* $State$ * $State$
*/ */
package com.volmit.iris.util.vec; package com.volmit.iris.util;
import java.lang.Math; import java.lang.Math;

View File

@ -29,7 +29,7 @@
* $State$ * $State$
*/ */
package com.volmit.iris.util.vec; package com.volmit.iris.util;
import java.lang.Math; import java.lang.Math;

View File

@ -3,7 +3,6 @@ package com.volmit.iris.util;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
@ -128,7 +127,7 @@ public class VirtualCommand
if(!sender.hasPermission(i)) if(!sender.hasPermission(i))
{ {
failed = true; failed = true;
Bukkit.getScheduler().scheduleSyncDelayedTask(Iris.instance, () -> sender.sendMessage("- " + ChatColor.WHITE + i), 0); Bukkit.getScheduler().scheduleSyncDelayedTask(Iris.instance, () -> sender.sendMessage("- " + C.WHITE + i), 0);
} }
} }

View File

@ -1,4 +1,4 @@
package com.volmit.iris.util.inventory; package com.volmit.iris.util;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;

View File

@ -1,4 +1,4 @@
package com.volmit.iris.util.inventory; package com.volmit.iris.util;
public interface WindowDecorator public interface WindowDecorator
{ {

View File

@ -1,4 +1,4 @@
package com.volmit.iris.util.inventory; package com.volmit.iris.util;
import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.inventory.InventoryType;