mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-22 21:26:45 +01:00
World generation options for sponge
This commit is contained in:
parent
b77c2d1049
commit
4d8b9f9674
@ -80,7 +80,6 @@ import com.intellectualcrafters.plot.util.SetupUtils;
|
||||
import com.intellectualcrafters.plot.util.StringMan;
|
||||
import com.intellectualcrafters.plot.util.TaskManager;
|
||||
import com.intellectualcrafters.plot.util.UUIDHandler;
|
||||
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
|
||||
|
||||
/**
|
||||
* An implementation of the core,
|
||||
@ -99,7 +98,6 @@ public class PS {
|
||||
private final HashMap<String, PlotManager> plotmanagers = new HashMap<>();
|
||||
|
||||
// public:
|
||||
public WorldEditPlugin worldEdit = null;
|
||||
public File configFile;
|
||||
public File translationFile;
|
||||
public YamlConfiguration style;
|
||||
|
@ -24,11 +24,10 @@ import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.generator.ChunkGenerator;
|
||||
|
||||
import com.intellectualcrafters.plot.PS;
|
||||
import com.intellectualcrafters.plot.config.C;
|
||||
import com.intellectualcrafters.plot.database.DBFunc;
|
||||
import com.intellectualcrafters.plot.generator.PlotGenerator;
|
||||
import com.intellectualcrafters.plot.object.BlockLoc;
|
||||
import com.intellectualcrafters.plot.object.Location;
|
||||
import com.intellectualcrafters.plot.object.Plot;
|
||||
@ -43,9 +42,10 @@ import com.intellectualcrafters.plot.util.Permissions;
|
||||
import com.intellectualcrafters.plot.util.SetupUtils;
|
||||
import com.intellectualcrafters.plot.util.StringMan;
|
||||
import com.intellectualcrafters.plot.util.UUIDHandler;
|
||||
import com.plotsquared.bukkit.generator.AugmentedPopulator;
|
||||
import com.plotsquared.bukkit.generator.BukkitPlotGenerator;
|
||||
import com.plotsquared.bukkit.generator.HybridGen;
|
||||
//import com.plotsquared.bukkit.generator.AugmentedPopulator;
|
||||
//import com.plotsquared.bukkit.generator.AugmentedPopulator;
|
||||
//import com.plotsquared.bukkit.generator.BukkitPlotGenerator;
|
||||
//import com.plotsquared.bukkit.generator.HybridGen;
|
||||
import com.plotsquared.general.commands.CommandDeclaration;
|
||||
|
||||
@CommandDeclaration(
|
||||
@ -157,21 +157,32 @@ public class Cluster extends SubCommand {
|
||||
PS.get().loadWorld(world, PS.get().IMP.getGenerator(world, null));
|
||||
}
|
||||
else {
|
||||
final String gen_string = PS.get().config.getString("worlds." + world + "." + "generator.plugin");
|
||||
BukkitPlotGenerator generator;
|
||||
String gen_string = PS.get().config.getString("worlds." + world + "." + "generator.plugin");
|
||||
if (gen_string == null) {
|
||||
generator = new HybridGen(world);
|
||||
} else {
|
||||
ChunkGenerator chunkgen = (ChunkGenerator) PS.get().IMP.getGenerator(world, gen_string).generator;
|
||||
if (chunkgen instanceof BukkitPlotGenerator) {
|
||||
generator = (BukkitPlotGenerator) chunkgen;
|
||||
}
|
||||
else {
|
||||
MainUtil.sendMessage(plr, C.SETUP_INVALID_GENERATOR, StringMan.join(SetupUtils.generators.keySet(), ","));
|
||||
return false;
|
||||
}
|
||||
gen_string = "PlotSquared";
|
||||
}
|
||||
new AugmentedPopulator(world, generator, cluster, plotworld.TERRAIN == 2, plotworld.TERRAIN != 2);
|
||||
PlotGenerator<?> wrapper = PS.get().IMP.getGenerator(world, gen_string);
|
||||
if (wrapper.isFull()) {
|
||||
wrapper.augment(cluster, plotworld);
|
||||
}
|
||||
else {
|
||||
MainUtil.sendMessage(plr, C.SETUP_INVALID_GENERATOR, StringMan.join(SetupUtils.generators.keySet(), ","));
|
||||
return false;
|
||||
}
|
||||
// BukkitPlotGenerator generator;
|
||||
// if (gen_string == null) {
|
||||
// generator = new HybridGen(world);
|
||||
// } else {
|
||||
// ChunkGenerator chunkgen = (ChunkGenerator) PS.get().IMP.getGenerator(world, gen_string).generator;
|
||||
// if (chunkgen instanceof BukkitPlotGenerator) {
|
||||
// generator = (BukkitPlotGenerator) chunkgen;
|
||||
// }
|
||||
// else {
|
||||
// MainUtil.sendMessage(plr, C.SETUP_INVALID_GENERATOR, StringMan.join(SetupUtils.generators.keySet(), ","));
|
||||
// return false;
|
||||
// }
|
||||
// }
|
||||
// new AugmentedPopulator(world, generator, cluster, plotworld.TERRAIN == 2, plotworld.TERRAIN != 2);
|
||||
}
|
||||
MainUtil.sendMessage(plr, C.CLUSTER_ADDED);
|
||||
return true;
|
||||
@ -222,7 +233,7 @@ public class Cluster extends SubCommand {
|
||||
}
|
||||
DBFunc.delete(cluster);
|
||||
if (plotworld.TYPE == 2) {
|
||||
AugmentedPopulator.removePopulator(plr.getLocation().getWorld(), cluster);
|
||||
SetupUtils.manager.removePopulator(plr.getLocation().getWorld(), cluster);
|
||||
}
|
||||
ClusterManager.last = null;
|
||||
ClusterManager.clusters.get(cluster.world).remove(cluster);
|
||||
|
@ -125,6 +125,9 @@ public class MainCommand extends CommandManager<PlotPlayer> {
|
||||
createCommand(new Copy());
|
||||
createCommand(new Chat());
|
||||
createCommand(new Trim());
|
||||
if (Settings.ENABLE_CLUSTERS) {
|
||||
MainCommand.getInstance().addCommand(new Cluster());
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean no_permission(final PlotPlayer player, final String permission) {
|
||||
|
@ -25,6 +25,7 @@ import com.intellectualcrafters.plot.config.C;
|
||||
import com.intellectualcrafters.plot.object.PlotPlayer;
|
||||
import com.intellectualcrafters.plot.util.MainUtil;
|
||||
import com.intellectualcrafters.plot.util.Permissions;
|
||||
import com.plotsquared.bukkit.BukkitMain;
|
||||
import com.plotsquared.bukkit.listeners.worldedit.WEManager;
|
||||
import com.plotsquared.general.commands.CommandDeclaration;
|
||||
|
||||
@ -41,7 +42,7 @@ public class WE_Anywhere extends SubCommand {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(PlotPlayer player, String[] arguments) {
|
||||
if (PS.get().worldEdit == null) {
|
||||
if (BukkitMain.worldEdit == null) {
|
||||
MainUtil.sendMessage(player, "&cWorldEdit is not enabled on this server");
|
||||
return true;
|
||||
}
|
||||
|
@ -12,4 +12,8 @@ public class RegionWrapper {
|
||||
this.maxZ = maxZ;
|
||||
this.minZ = minZ;
|
||||
}
|
||||
|
||||
public boolean isIn(final int x, final int z) {
|
||||
return ((x >= this.minX) && (x <= this.maxX) && (z >= this.minZ) && (z <= this.maxZ));
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package com.intellectualcrafters.plot.util;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Random;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
|
@ -47,7 +47,6 @@ import com.intellectualcrafters.plot.object.PlotId;
|
||||
import com.intellectualcrafters.plot.object.RunnableVal;
|
||||
import com.intellectualcrafters.plot.object.schematic.PlotItem;
|
||||
import com.plotsquared.bukkit.object.schematic.StateWrapper;
|
||||
import com.plotsquared.bukkit.util.WorldEditSchematic;
|
||||
|
||||
public abstract class SchematicHandler {
|
||||
public static SchematicHandler manager;
|
||||
@ -98,40 +97,38 @@ public abstract class SchematicHandler {
|
||||
if (area > 4096) {
|
||||
PS.debug("The plot is > 64 x 64 - Fast lossy schematic saving will be used");
|
||||
}
|
||||
if (area <= 4096 && PS.get().worldEdit != null) {
|
||||
new WorldEditSchematic().saveSchematic(directory + File.separator + name + ".schematic", plot.world, plot.id);
|
||||
}
|
||||
else {
|
||||
final Runnable THIS = this;
|
||||
SchematicHandler.manager.getCompoundTag(plot.world, plot.id, new RunnableVal<CompoundTag>() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (value == null) {
|
||||
MainUtil.sendMessage(null, "&7 - Skipped plot &c" + plot.id);
|
||||
}
|
||||
else {
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
MainUtil.sendMessage(null, "&6ID: " + plot.id);
|
||||
final boolean result = SchematicHandler.manager.save(value, directory + File.separator + name + ".schematic");
|
||||
if (!result) {
|
||||
MainUtil.sendMessage(null, "&7 - Failed to save &c" + plot.id);
|
||||
} else {
|
||||
MainUtil.sendMessage(null, "&7 - &a success: " + plot.id);
|
||||
}
|
||||
TaskManager.runTask(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THIS.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
// if (area <= 4096 && PS.get().worldEdit != null) {
|
||||
// new WorldEditSchematic().saveSchematic(directory + File.separator + name + ".schematic", plot.world, plot.id);
|
||||
// }
|
||||
final Runnable THIS = this;
|
||||
SchematicHandler.manager.getCompoundTag(plot.world, plot.id, new RunnableVal<CompoundTag>() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (value == null) {
|
||||
MainUtil.sendMessage(null, "&7 - Skipped plot &c" + plot.id);
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
MainUtil.sendMessage(null, "&6ID: " + plot.id);
|
||||
final boolean result = SchematicHandler.manager.save(value, directory + File.separator + name + ".schematic");
|
||||
if (!result) {
|
||||
MainUtil.sendMessage(null, "&7 - Failed to save &c" + plot.id);
|
||||
} else {
|
||||
MainUtil.sendMessage(null, "&7 - &a success: " + plot.id);
|
||||
}
|
||||
TaskManager.runTask(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THIS.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
return true;
|
||||
|
@ -4,6 +4,7 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.intellectualcrafters.plot.generator.PlotGenerator;
|
||||
import com.intellectualcrafters.plot.object.PlotCluster;
|
||||
import com.intellectualcrafters.plot.object.PlotWorld;
|
||||
import com.intellectualcrafters.plot.object.SetupObject;
|
||||
|
||||
@ -19,4 +20,6 @@ public abstract class SetupUtils {
|
||||
public abstract String getGenerator(PlotWorld plotworld);
|
||||
|
||||
public abstract String setupWorld(final SetupObject object);
|
||||
|
||||
public abstract void removePopulator(String world, PlotCluster cluster);
|
||||
}
|
||||
|
@ -88,9 +88,11 @@ import com.sk89q.worldedit.bukkit.WorldEditPlugin;
|
||||
public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
|
||||
|
||||
public static BukkitMain THIS;
|
||||
public static WorldEditPlugin worldEdit;
|
||||
|
||||
private int[] version;
|
||||
|
||||
|
||||
@Override
|
||||
public int[] getServerVersion() {
|
||||
if (version == null) {
|
||||
@ -345,8 +347,8 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
|
||||
@Override
|
||||
public void registerWorldEditEvents() {
|
||||
if (getServer().getPluginManager().getPlugin("WorldEdit") != null) {
|
||||
PS.get().worldEdit = (WorldEditPlugin) getServer().getPluginManager().getPlugin("WorldEdit");
|
||||
final String version = PS.get().worldEdit.getDescription().getVersion();
|
||||
BukkitMain.worldEdit = (WorldEditPlugin) getServer().getPluginManager().getPlugin("WorldEdit");
|
||||
final String version = BukkitMain.worldEdit.getDescription().getVersion();
|
||||
if ((version != null) && version.startsWith("5.")) {
|
||||
log("&cThis version of WorldEdit does not support PlotSquared.");
|
||||
log("&cPlease use WorldEdit 6+ for masking support");
|
||||
|
@ -42,6 +42,7 @@ public class AugmentedPopulator extends BlockPopulator {
|
||||
|
||||
public AugmentedPopulator(final String world, final BukkitPlotGenerator generator, final PlotCluster cluster, final boolean p, final boolean b) {
|
||||
MainUtil.initCache();
|
||||
PS.log("== NEW AUGMENTED POPULATOR FOR: " + world);
|
||||
this.cluster = cluster;
|
||||
this.generator = generator;
|
||||
this.plotworld = PS.get().getPlotWorld(world);
|
||||
@ -99,6 +100,7 @@ public class AugmentedPopulator extends BlockPopulator {
|
||||
public void populate(final World world, final Random rand, final Chunk chunk) {
|
||||
final int cx = chunk.getX();
|
||||
final int cz = chunk.getZ();
|
||||
PS.log("== POPULATING FOR: " + world + " | " + cx + "," + cz);
|
||||
final int bx = cx << 4;
|
||||
final int bz = cz << 4;
|
||||
final int tx = bx + 15;
|
||||
@ -257,8 +259,4 @@ public class AugmentedPopulator extends BlockPopulator {
|
||||
populator.populate(world, this.r, chunk);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isIn(final RegionWrapper plot, final int x, final int z) {
|
||||
return ((x >= plot.minX) && (x <= plot.maxX) && (z >= plot.minZ) && (z <= plot.maxZ));
|
||||
}
|
||||
}
|
||||
|
@ -139,6 +139,7 @@ import com.intellectualcrafters.plot.util.RegExUtil;
|
||||
import com.intellectualcrafters.plot.util.StringMan;
|
||||
import com.intellectualcrafters.plot.util.TaskManager;
|
||||
import com.intellectualcrafters.plot.util.UUIDHandler;
|
||||
import com.plotsquared.bukkit.BukkitMain;
|
||||
import com.plotsquared.bukkit.listeners.worldedit.WEManager;
|
||||
import com.plotsquared.bukkit.object.BukkitLazyBlock;
|
||||
import com.plotsquared.bukkit.object.BukkitPlayer;
|
||||
@ -454,7 +455,7 @@ public class PlayerEvents extends com.plotsquared.listener.PlotListener implemen
|
||||
final UUID uuid = pp.getUUID();
|
||||
UUIDHandler.add(name, uuid);
|
||||
ExpireManager.dates.put(uuid, System.currentTimeMillis());
|
||||
if (PS.get().worldEdit != null) {
|
||||
if (BukkitMain.worldEdit != null) {
|
||||
if (Permissions.hasPermission(pp, PERMISSION_WORLDEDIT_BYPASS)) {
|
||||
WEManager.bypass.add(pp.getName());
|
||||
}
|
||||
@ -741,7 +742,7 @@ public class PlayerEvents extends com.plotsquared.listener.PlotListener implemen
|
||||
BukkitUtil.getPlayer(event.getPlayer()).deleteMeta("location");
|
||||
BukkitUtil.getPlayer(event.getPlayer()).deleteMeta("lastplot");
|
||||
|
||||
if (PS.get().worldEdit != null) {
|
||||
if (BukkitMain.worldEdit != null) {
|
||||
if (!Permissions.hasPermission(pp, PERMISSION_WORLDEDIT_BYPASS)) {
|
||||
WEManager.bypass.remove(pp.getName());
|
||||
}
|
||||
@ -1613,7 +1614,7 @@ public class PlayerEvents extends com.plotsquared.listener.PlotListener implemen
|
||||
PlotPlayer pp = BukkitUtil.getPlayer(event.getPlayer());
|
||||
ExpireManager.dates.put(pp.getUUID(), System.currentTimeMillis());
|
||||
EventUtil.unregisterPlayer(pp);
|
||||
if (PS.get().worldEdit != null) {
|
||||
if (BukkitMain.worldEdit != null) {
|
||||
WEManager.bypass.remove(pp.getName());
|
||||
}
|
||||
if (Settings.DELETE_PLOTS_ON_BAN && event.getPlayer().isBanned()) {
|
||||
|
@ -19,6 +19,7 @@ import com.intellectualcrafters.plot.object.PlotPlayer;
|
||||
import com.intellectualcrafters.plot.object.RegionWrapper;
|
||||
import com.intellectualcrafters.plot.util.MainUtil;
|
||||
import com.intellectualcrafters.plot.util.Permissions;
|
||||
import com.plotsquared.bukkit.BukkitMain;
|
||||
import com.plotsquared.bukkit.util.BukkitUtil;
|
||||
import com.sk89q.worldedit.BlockVector;
|
||||
import com.sk89q.worldedit.bukkit.selections.Selection;
|
||||
@ -93,7 +94,7 @@ public class WEListener implements Listener {
|
||||
}
|
||||
|
||||
public boolean checkSelection(Player p, PlotPlayer pp, int modifier, long max, Cancellable e) {
|
||||
final Selection selection = PS.get().worldEdit.getSelection(p);
|
||||
final Selection selection = BukkitMain.worldEdit.getSelection(p);
|
||||
if (selection == null) {
|
||||
return true;
|
||||
}
|
||||
|
@ -29,9 +29,6 @@ public class BukkitCommand implements CommandExecutor, TabCompleter {
|
||||
|
||||
public BukkitCommand() {
|
||||
MainCommand.getInstance().addCommand(new DebugUUID());
|
||||
if (Settings.ENABLE_CLUSTERS) {
|
||||
MainCommand.getInstance().addCommand(new Cluster());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -13,9 +13,11 @@ import org.bukkit.plugin.Plugin;
|
||||
import com.intellectualcrafters.plot.PS;
|
||||
import com.intellectualcrafters.plot.config.ConfigurationNode;
|
||||
import com.intellectualcrafters.plot.generator.PlotGenerator;
|
||||
import com.intellectualcrafters.plot.object.PlotCluster;
|
||||
import com.intellectualcrafters.plot.object.PlotWorld;
|
||||
import com.intellectualcrafters.plot.object.SetupObject;
|
||||
import com.intellectualcrafters.plot.util.SetupUtils;
|
||||
import com.plotsquared.bukkit.generator.AugmentedPopulator;
|
||||
import com.plotsquared.bukkit.generator.BukkitGeneratorWrapper;
|
||||
import com.plotsquared.bukkit.generator.BukkitPlotGenerator;
|
||||
|
||||
@ -33,11 +35,7 @@ public class BukkitSetupUtils extends SetupUtils {
|
||||
if (generator != null) {
|
||||
PS.get().removePlotWorld(testWorld);
|
||||
final String name = plugin.getDescription().getName();
|
||||
// final PlotGenerator pgen = (PlotGenerator) generator;
|
||||
// if (pgen.getPlotManager() instanceof SquarePlotManager) {
|
||||
SetupUtils.generators.put(name, new BukkitGeneratorWrapper("CheckingPlotSquaredGenerator", generator));
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -115,4 +113,9 @@ public class BukkitSetupUtils extends SetupUtils {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removePopulator(String world, PlotCluster cluster) {
|
||||
AugmentedPopulator.removePopulator(world, cluster);
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import com.intellectualcrafters.plot.PS;
|
||||
import com.intellectualcrafters.plot.object.Location;
|
||||
import com.intellectualcrafters.plot.object.PlotId;
|
||||
import com.intellectualcrafters.plot.util.MainUtil;
|
||||
import com.plotsquared.bukkit.BukkitMain;
|
||||
import com.sk89q.worldedit.CuboidClipboard;
|
||||
import com.sk89q.worldedit.EditSession;
|
||||
import com.sk89q.worldedit.Vector;
|
||||
@ -22,7 +23,7 @@ public class WorldEditSchematic {
|
||||
CuboidClipboard clipboard = new CuboidClipboard(size, origin);
|
||||
Vector pos1 = new Vector(bot.getX(), bot.getY(), bot.getZ());
|
||||
Vector pos2 = new Vector(top.getX(), top.getY(), top.getZ());
|
||||
EditSession session = PS.get().worldEdit.getWorldEdit().getEditSessionFactory().getEditSession(new BukkitWorld(Bukkit.getWorld(world)), 999999999);
|
||||
EditSession session = BukkitMain.worldEdit.getWorldEdit().getEditSessionFactory().getEditSession(new BukkitWorld(Bukkit.getWorld(world)), 999999999);
|
||||
clipboard.copy(session);
|
||||
try {
|
||||
clipboard.saveSchematic(new File(file));
|
||||
|
@ -50,6 +50,7 @@ import com.intellectualcrafters.plot.config.Settings;
|
||||
import com.intellectualcrafters.plot.generator.HybridUtils;
|
||||
import com.intellectualcrafters.plot.object.PlotBlock;
|
||||
import com.intellectualcrafters.plot.object.PlotPlayer;
|
||||
import com.intellectualcrafters.plot.object.PlotWorld;
|
||||
import com.intellectualcrafters.plot.util.AbstractTitle;
|
||||
import com.intellectualcrafters.plot.util.BlockManager;
|
||||
import com.intellectualcrafters.plot.util.ChunkManager;
|
||||
@ -240,14 +241,27 @@ public class SpongeMain implements IPlotMain, PluginContainer {
|
||||
ConfigurationSection worldSection = PS.get().config.getConfigurationSection("worlds");
|
||||
if (worldSection != null) {
|
||||
for (String world : worldSection.getKeys(false)) {
|
||||
|
||||
SpongeBasicGen generator = new SpongeBasicGen(world);
|
||||
PS.get().loadWorld(world, new SpongeGeneratorWrapper(world, generator));
|
||||
|
||||
this.modify = new WorldModify(generator);
|
||||
Game game = event.getGame();
|
||||
createWorldFromConfig(world);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public World createWorldFromConfig(String world) {
|
||||
SpongeBasicGen generator = new SpongeBasicGen(world);
|
||||
PlotWorld plotworld = generator.getNewPlotWorld(world);
|
||||
SpongeGeneratorWrapper wrapper;
|
||||
if (plotworld.TYPE == 0) {
|
||||
wrapper = new SpongeGeneratorWrapper(world, generator);
|
||||
}
|
||||
else {
|
||||
wrapper = new SpongeGeneratorWrapper(world, null);
|
||||
}
|
||||
PS.get().loadWorld(world, wrapper);
|
||||
switch (plotworld.TYPE) {
|
||||
// Normal
|
||||
case 0: {
|
||||
this.modify = new WorldModify(generator, false);
|
||||
game.getRegistry().registerWorldGeneratorModifier(modify);
|
||||
|
||||
Optional<World> builder = game.getRegistry().getWorldBuilder()
|
||||
.name(world)
|
||||
.enabled(true)
|
||||
@ -255,11 +269,26 @@ public class SpongeMain implements IPlotMain, PluginContainer {
|
||||
.keepsSpawnLoaded(true)
|
||||
.dimensionType(DimensionTypes.OVERWORLD)
|
||||
.generator(GeneratorTypes.FLAT)
|
||||
.gameMode(GameModes.CREATIVE)
|
||||
.usesMapFeatures(false)
|
||||
.generatorModifiers(modify)
|
||||
.build();
|
||||
World worldObj = builder.get();
|
||||
return builder.get();
|
||||
}
|
||||
// Augmented
|
||||
default: {
|
||||
this.modify = new WorldModify(generator, true);
|
||||
game.getRegistry().registerWorldGeneratorModifier(modify);
|
||||
Optional<World> builder = game.getRegistry().getWorldBuilder()
|
||||
.name(world)
|
||||
.enabled(true)
|
||||
.loadsOnStartup(true)
|
||||
.keepsSpawnLoaded(true)
|
||||
.dimensionType(DimensionTypes.OVERWORLD)
|
||||
.generator(GeneratorTypes.OVERWORLD)
|
||||
.usesMapFeatures(false)
|
||||
.generatorModifiers(modify)
|
||||
.build();
|
||||
return builder.get();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -433,7 +462,7 @@ public class SpongeMain implements IPlotMain, PluginContainer {
|
||||
return new SpongeGeneratorWrapper(world, null);
|
||||
}
|
||||
if (name.equals("PlotSquared")) {
|
||||
return new SpongeGeneratorWrapper(world, null);
|
||||
return new SpongeGeneratorWrapper(world, new SpongeBasicGen(world));
|
||||
}
|
||||
else {
|
||||
throw new UnsupportedOperationException("NOT IMPLEMENTED YET");
|
||||
@ -465,8 +494,7 @@ public class SpongeMain implements IPlotMain, PluginContainer {
|
||||
|
||||
@Override
|
||||
public SetupUtils initSetupUtils() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
return new SpongeSetupUtils();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -585,7 +613,7 @@ public class SpongeMain implements IPlotMain, PluginContainer {
|
||||
|
||||
@Override
|
||||
public void setGenerator(String world) {
|
||||
// THIS IS DONE DURING STARTUP ALREADY
|
||||
// TODO THIS IS DONE DURING STARTUP ALREADY
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -14,6 +14,7 @@ import com.intellectualcrafters.jnbt.ListTag;
|
||||
import com.intellectualcrafters.jnbt.ShortTag;
|
||||
import com.intellectualcrafters.jnbt.StringTag;
|
||||
import com.intellectualcrafters.jnbt.Tag;
|
||||
import com.intellectualcrafters.plot.PS;
|
||||
import com.intellectualcrafters.plot.object.ChunkLoc;
|
||||
import com.intellectualcrafters.plot.object.Location;
|
||||
import com.intellectualcrafters.plot.object.PlotBlock;
|
||||
@ -85,8 +86,10 @@ public class SpongeSchematicHandler extends SchematicHandler {
|
||||
// save schematics
|
||||
ChunkLoc chunk = chunks.remove(0);
|
||||
|
||||
if (!worldObj.loadChunk(chunk.x << 4, 0, chunk.z << 4, false).isPresent()) {
|
||||
continue;
|
||||
if (!worldObj.loadChunk(chunk.x << 4, 1, chunk.z << 4, false).isPresent()) {
|
||||
System.out.println("COULD NOT LOAD CHUNK AT: " + chunk.x + "," + chunk.z);
|
||||
// TODO continue - right now sponge chunk api seems to be broken :(
|
||||
// continue;
|
||||
}
|
||||
|
||||
int X = chunk.x;
|
||||
|
88
src/main/java/com/plotsquared/sponge/SpongeSetupUtils.java
Normal file
88
src/main/java/com/plotsquared/sponge/SpongeSetupUtils.java
Normal file
@ -0,0 +1,88 @@
|
||||
package com.plotsquared.sponge;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.spongepowered.api.world.World;
|
||||
import org.spongepowered.api.world.gen.WorldGenerator;
|
||||
|
||||
import com.intellectualcrafters.plot.PS;
|
||||
import com.intellectualcrafters.plot.config.ConfigurationNode;
|
||||
import com.intellectualcrafters.plot.generator.PlotGenerator;
|
||||
import com.intellectualcrafters.plot.object.PlotCluster;
|
||||
import com.intellectualcrafters.plot.object.PlotWorld;
|
||||
import com.intellectualcrafters.plot.object.SetupObject;
|
||||
import com.intellectualcrafters.plot.util.SetupUtils;
|
||||
import com.plotsquared.sponge.generator.AugmentedPopulator;
|
||||
import com.plotsquared.sponge.generator.SpongeBasicGen;
|
||||
import com.plotsquared.sponge.generator.SpongeGeneratorWrapper;
|
||||
import com.plotsquared.sponge.generator.SpongePlotGenerator;
|
||||
import com.plotsquared.sponge.util.SpongeUtil;
|
||||
|
||||
public class SpongeSetupUtils extends SetupUtils {
|
||||
|
||||
@Override
|
||||
public void updateGenerators() {
|
||||
if (SetupUtils.generators.size() > 0) {
|
||||
return;
|
||||
}
|
||||
// TODO get external world generators
|
||||
final String testWorld = "CheckingPlotSquaredGenerator";
|
||||
SetupUtils.generators.put("PlotSquared", new SpongeGeneratorWrapper(testWorld, new SpongeBasicGen(testWorld)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGenerator(PlotWorld plotworld) {
|
||||
if (SetupUtils.generators.size() == 0) {
|
||||
updateGenerators();
|
||||
}
|
||||
World world = SpongeUtil.getWorld(plotworld.worldname);
|
||||
if (world == null) {
|
||||
return null;
|
||||
}
|
||||
WorldGenerator generator = world.getWorldGenerator();
|
||||
if (!(generator instanceof SpongePlotGenerator)) {
|
||||
return null;
|
||||
}
|
||||
for (Entry<String, PlotGenerator<?>> entry : generators.entrySet()) {
|
||||
if (entry.getValue().generator.getClass().getName().equals(generator.getClass().getName())) {
|
||||
return entry.getKey();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String setupWorld(SetupObject object) {
|
||||
SetupUtils.manager.updateGenerators();
|
||||
final ConfigurationNode[] steps = object.step;
|
||||
final String world = object.world;
|
||||
for (final ConfigurationNode step : steps) {
|
||||
PS.get().config.set("worlds." + world + "." + step.getConstant(), step.getValue());
|
||||
}
|
||||
if (object.type != 0) {
|
||||
PS.get().config.set("worlds." + world + "." + "generator.type", object.type);
|
||||
PS.get().config.set("worlds." + world + "." + "generator.terrain", object.terrain);
|
||||
PS.get().config.set("worlds." + world + "." + "generator.plugin", object.plotManager);
|
||||
if (object.setupGenerator != null && !object.setupGenerator.equals(object.plotManager)) {
|
||||
PS.get().config.set("worlds." + world + "." + "generator.init", object.setupGenerator);
|
||||
}
|
||||
PlotGenerator<WorldGenerator> gen = (PlotGenerator<WorldGenerator>) generators.get(object.setupGenerator);
|
||||
if (gen != null && gen.generator instanceof SpongePlotGenerator) {
|
||||
object.setupGenerator = null;
|
||||
}
|
||||
}
|
||||
try {
|
||||
PS.get().config.save(PS.get().configFile);
|
||||
} catch (final IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
SpongeMain.THIS.createWorldFromConfig(world);
|
||||
return object.world;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removePopulator(String world, PlotCluster cluster) {
|
||||
AugmentedPopulator.removePopulator(world, cluster);
|
||||
}
|
||||
}
|
@ -0,0 +1,291 @@
|
||||
package com.plotsquared.sponge.generator;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Random;
|
||||
|
||||
import org.spongepowered.api.block.BlockState;
|
||||
import org.spongepowered.api.block.BlockType;
|
||||
import org.spongepowered.api.world.Chunk;
|
||||
import org.spongepowered.api.world.World;
|
||||
import org.spongepowered.api.world.extent.MutableBlockVolume;
|
||||
import org.spongepowered.api.world.gen.GeneratorPopulator;
|
||||
import org.spongepowered.api.world.gen.Populator;
|
||||
import org.spongepowered.api.world.gen.WorldGenerator;
|
||||
|
||||
import com.flowpowered.math.vector.Vector3i;
|
||||
import com.intellectualcrafters.plot.PS;
|
||||
import com.intellectualcrafters.plot.object.Location;
|
||||
import com.intellectualcrafters.plot.object.PlotBlock;
|
||||
import com.intellectualcrafters.plot.object.PlotCluster;
|
||||
import com.intellectualcrafters.plot.object.PlotId;
|
||||
import com.intellectualcrafters.plot.object.PlotLoc;
|
||||
import com.intellectualcrafters.plot.object.PlotManager;
|
||||
import com.intellectualcrafters.plot.object.PlotWorld;
|
||||
import com.intellectualcrafters.plot.util.ChunkManager;
|
||||
import com.intellectualcrafters.plot.util.SetBlockQueue;
|
||||
import com.intellectualcrafters.plot.util.TaskManager;
|
||||
import com.plotsquared.sponge.SpongeMain;
|
||||
import com.plotsquared.sponge.util.SpongeUtil;
|
||||
|
||||
public class AugmentedPopulator implements Populator {
|
||||
|
||||
public final PlotWorld plotworld;
|
||||
public final PlotManager manager;
|
||||
public final SpongePlotGenerator generator;
|
||||
public final GeneratorPopulator populator;
|
||||
public final PlotCluster cluster;
|
||||
public final Random r = new Random();
|
||||
public final boolean p;
|
||||
public final boolean b;
|
||||
public final boolean o;
|
||||
private final int bx;
|
||||
private final int bz;
|
||||
private final int tx;
|
||||
private final int tz;
|
||||
|
||||
public AugmentedPopulator(String worldname, WorldGenerator gen, final SpongePlotGenerator generator, final PlotCluster cluster, final boolean p, final boolean b) {
|
||||
// MainUtil.initCache();
|
||||
// Initialize any chach that's needed
|
||||
this.cluster = cluster;
|
||||
this.generator = generator;
|
||||
this.populator = generator.getBaseGeneratorPopulator();
|
||||
this.plotworld = generator.getNewPlotWorld(worldname);
|
||||
this.manager = generator.getPlotManager();
|
||||
this.p = p;
|
||||
this.b = b;
|
||||
this.o = (this.plotworld.TERRAIN == 1) || (this.plotworld.TERRAIN == 2);
|
||||
if (cluster != null) {
|
||||
final Location bl = this.manager.getPlotBottomLocAbs(this.plotworld, cluster.getP1());
|
||||
final Location tl = this.manager.getPlotTopLocAbs(this.plotworld, cluster.getP2()).add(1, 0, 1);
|
||||
this.bx = bl.getX();
|
||||
this.bz = bl.getZ();
|
||||
this.tx = tl.getX();
|
||||
this.tz = tl.getZ();
|
||||
} else {
|
||||
this.bx = Integer.MIN_VALUE;
|
||||
this.bz = Integer.MIN_VALUE;
|
||||
this.tx = Integer.MAX_VALUE;
|
||||
this.tz = Integer.MAX_VALUE;
|
||||
}
|
||||
// Add the populator
|
||||
List<Populator> populators = gen.getPopulators();
|
||||
if (this.o) {
|
||||
populators.add(0, this);
|
||||
} else {
|
||||
populators.add(this);
|
||||
}
|
||||
}
|
||||
|
||||
public static void removePopulator(final String worldname, final PlotCluster cluster) {
|
||||
final World world = SpongeUtil.getWorld(worldname);
|
||||
List<Populator> populators = world.getWorldGenerator().getPopulators();
|
||||
for (final Iterator<Populator> iterator = populators.iterator(); iterator.hasNext();) {
|
||||
final Populator populator = iterator.next();
|
||||
if (populator instanceof AugmentedPopulator) {
|
||||
if (((AugmentedPopulator) populator).cluster.equals(cluster)) {
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void populate(final Chunk chunk, Random r_unused) {
|
||||
Vector3i min = chunk.getBlockMin();
|
||||
final World worldObj = chunk.getWorld();
|
||||
final String world = worldObj.getName();
|
||||
final int cx = min.getX() >> 4;
|
||||
final int cz = min.getZ() >> 4;
|
||||
final int bx = cx << 4;
|
||||
final int bz = cz << 4;
|
||||
final int tx = bx + 15;
|
||||
final int tz = bz + 15;
|
||||
final boolean inX1 = ((bx >= this.bx) && (bx <= this.tx));
|
||||
final boolean inX2 = ((tx >= this.bx) && (tx <= this.tx));
|
||||
final boolean inZ1 = ((bz >= this.bz) && (bz <= this.tz));
|
||||
final boolean inZ2 = ((tz >= this.bz) && (tz <= this.tz));
|
||||
final boolean inX = inX1 || inX2;
|
||||
final boolean inZ = inZ1 || inZ2;
|
||||
if (!inX || !inZ) {
|
||||
return;
|
||||
}
|
||||
if (this.plotworld.TERRAIN == 3) {
|
||||
int X = min.getX();
|
||||
int Z = min.getZ();
|
||||
if (ChunkManager.FORCE_PASTE) {
|
||||
for (short x = 0; x < 16; x++) {
|
||||
for (short z = 0; z < 16; z++) {
|
||||
final PlotLoc loc = new PlotLoc((short) (X + x), (short) (Z + z));
|
||||
final HashMap<Short, Short> blocks = ChunkManager.GENERATE_BLOCKS.get(loc);
|
||||
HashMap<Short, Byte> datas = ChunkManager.GENERATE_DATA.get(loc);
|
||||
for (final Entry<Short, Short> entry : blocks.entrySet()) {
|
||||
int y = entry.getKey();
|
||||
if (datas != null) {
|
||||
SetBlockQueue.setBlock(world, x, y, z, new PlotBlock(blocks.get(y), datas.get(y)));
|
||||
}
|
||||
else {
|
||||
SetBlockQueue.setBlock(world, x, y, z, blocks.get(y));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (ChunkManager.CURRENT_PLOT_CLEAR != null) {
|
||||
PlotLoc loc;
|
||||
for (Entry<PlotLoc, HashMap<Short, Byte>> entry : ChunkManager.GENERATE_DATA.entrySet()) {
|
||||
HashMap<Short, Byte> datas = ChunkManager.GENERATE_DATA.get(entry.getKey());
|
||||
for (Entry<Short, Byte> entry2 : entry.getValue().entrySet()) {
|
||||
Short y = entry2.getKey();
|
||||
byte data;
|
||||
if (datas != null) {
|
||||
data = datas.get(y);
|
||||
}
|
||||
else {
|
||||
data = 0;
|
||||
}
|
||||
loc = entry.getKey();
|
||||
int xx = loc.x - X;
|
||||
int zz = loc.z - Z;
|
||||
if (xx >= 0 && xx < 16) {
|
||||
if (zz >= 0 && zz < 16) {
|
||||
SetBlockQueue.setBlock(world, xx, y, zz, new PlotBlock(entry2.getValue(), data));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
final boolean check;
|
||||
check = !inX1 || !inX2 || !inZ1 || !inZ2;
|
||||
if (this.plotworld.TERRAIN > 1) {
|
||||
final PlotId plot1 = this.manager.getPlotIdAbs(this.plotworld, bx, 0, bz);
|
||||
final PlotId plot2 = this.manager.getPlotIdAbs(this.plotworld, tx, 0, tz);
|
||||
if ((plot1 != null) && (plot2 != null) && plot1.equals(plot2)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (this.o) {
|
||||
populateBlocks(worldObj, chunk, cx, cz, bx, bz, check);
|
||||
} else {
|
||||
TaskManager.runTaskLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
// TODO populate biome
|
||||
}
|
||||
}, 20 + r.nextInt(10));
|
||||
TaskManager.runTaskLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
populateBlocks(worldObj, chunk, cx, cz, bx, bz, check);
|
||||
}
|
||||
}, 40 + r.nextInt(40));
|
||||
}
|
||||
}
|
||||
|
||||
private void populateBlocks(final World world, final Chunk chunk, final int X, final int Z, final int x, final int z, final boolean check) {
|
||||
final String worldname = world.getName();
|
||||
MutableBlockVolume blocks = new MutableBlockVolume() {
|
||||
@Override
|
||||
public void setBlock(int x, int y, int z, BlockState t) {
|
||||
if (check && (((z) < bz) || ((z) > tz) || ((x) < bx) || ((x) > tx))) {
|
||||
return;
|
||||
}
|
||||
if (p) {
|
||||
if (ChunkManager.CURRENT_PLOT_CLEAR != null) {
|
||||
if (ChunkManager.CURRENT_PLOT_CLEAR.isIn(x, z)) {
|
||||
return;
|
||||
}
|
||||
} else if (manager.getPlotIdAbs(plotworld, x, 0, z) != null) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
PlotBlock block = SpongeMain.THIS.getPlotBlock(t);
|
||||
if (block != null) {
|
||||
SetBlockQueue.setBlock(worldname, x, y, z, block);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlock(Vector3i v, BlockState t) {
|
||||
setBlock(v.getX(), v.getY(), v.getZ(), t);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockType getBlockType(int x, int y, int z) {
|
||||
return world.getBlockType(x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockType getBlockType(Vector3i v) {
|
||||
return getBlockType(v.getX(), v.getY(), v.getZ());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vector3i getBlockSize() {
|
||||
return chunk.getBlockSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vector3i getBlockMin() {
|
||||
return chunk.getBlockMin();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vector3i getBlockMax() {
|
||||
return chunk.getBlockMax();
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getBlock(int x, int y, int z) {
|
||||
return world.getBlock(x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getBlock(Vector3i v) {
|
||||
return getBlock(v.getX(), v.getY(), v.getZ());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsBlock(int x, int y, int z) {
|
||||
return ((x) >= bz) && ((z) <= tz) && ((x) >= bx) && ((z) <= tx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsBlock(Vector3i v) {
|
||||
return containsBlock(v.getX(), v.getY(), v.getZ());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockType(int x, int y, int z, BlockType t) {
|
||||
if (check && (((z) < bz) || ((z) > tz) || ((x) < bx) || ((x) > tx))) {
|
||||
return;
|
||||
}
|
||||
if (p) {
|
||||
if (ChunkManager.CURRENT_PLOT_CLEAR != null) {
|
||||
if (ChunkManager.CURRENT_PLOT_CLEAR.isIn(x, z)) {
|
||||
return;
|
||||
}
|
||||
} else if (manager.getPlotIdAbs(plotworld, x, 0, z) != null) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
PlotBlock block = SpongeMain.THIS.getPlotBlock(t.getDefaultState());
|
||||
if (block != null) {
|
||||
SetBlockQueue.setBlock(worldname, x, y, z, block);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockType(Vector3i v, BlockType t) {
|
||||
setBlockType(v.getX(), v.getY(), v.getZ(), t);
|
||||
}
|
||||
};
|
||||
this.populator.populate(world, blocks , null);
|
||||
}
|
||||
|
||||
}
|
@ -7,6 +7,7 @@ import org.spongepowered.api.block.BlockState;
|
||||
import org.spongepowered.api.block.BlockTypes;
|
||||
import org.spongepowered.api.world.gen.BiomeGenerator;
|
||||
|
||||
import com.intellectualcrafters.plot.PS;
|
||||
import com.intellectualcrafters.plot.generator.HybridPlotManager;
|
||||
import com.intellectualcrafters.plot.generator.HybridPlotWorld;
|
||||
import com.intellectualcrafters.plot.object.PlotManager;
|
||||
@ -15,11 +16,7 @@ import com.plotsquared.sponge.SpongeMain;
|
||||
|
||||
public class SpongeBasicGen extends SpongePlotGenerator {
|
||||
|
||||
public final BlockState ROAD_BLOCK = BlockTypes.QUARTZ_BLOCK.getDefaultState(); // Quartz
|
||||
public final BlockState MAIN_BLOCK = BlockTypes.STONE.getDefaultState(); // Stone
|
||||
public final BlockState WALL_BLOCK = BlockTypes.BEDROCK.getDefaultState(); // Bedrock
|
||||
public final BlockState BORDER_BLOCK = BlockTypes.STONE_SLAB.getDefaultState(); // Stone slab
|
||||
public final BlockState[] FLOOR_BLOCK = new BlockState[] {BlockTypes.GRASS.getDefaultState(), BlockTypes.SPONGE.getDefaultState(), BlockTypes.PLANKS.getDefaultState() }; // Grass and sponge
|
||||
public final BlockState AIR = BlockTypes.AIR.getDefaultState();
|
||||
|
||||
private static HybridPlotManager manager;
|
||||
public HybridPlotWorld plotworld;
|
||||
@ -93,7 +90,10 @@ public class SpongeBasicGen extends SpongePlotGenerator {
|
||||
@Override
|
||||
public PlotWorld getNewPlotWorld(String world) {
|
||||
if (this.plotworld == null) {
|
||||
this.plotworld = new HybridPlotWorld(world);
|
||||
this.plotworld = (HybridPlotWorld) PS.get().getPlotWorld(world);
|
||||
if (this.plotworld == null) {
|
||||
this.plotworld = new HybridPlotWorld(world);
|
||||
}
|
||||
}
|
||||
return this.plotworld;
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.plotsquared.sponge.generator;
|
||||
|
||||
import org.spongepowered.api.world.World;
|
||||
import org.spongepowered.api.world.gen.WorldGenerator;
|
||||
|
||||
import com.intellectualcrafters.plot.PS;
|
||||
@ -8,6 +9,7 @@ import com.intellectualcrafters.plot.object.PlotCluster;
|
||||
import com.intellectualcrafters.plot.object.PlotManager;
|
||||
import com.intellectualcrafters.plot.object.PlotWorld;
|
||||
import com.intellectualcrafters.plot.object.SetupObject;
|
||||
import com.plotsquared.sponge.util.SpongeUtil;
|
||||
|
||||
public class SpongeGeneratorWrapper extends PlotGenerator<WorldGenerator>{
|
||||
|
||||
@ -29,13 +31,14 @@ public class SpongeGeneratorWrapper extends PlotGenerator<WorldGenerator>{
|
||||
public void augment(PlotCluster cluster, PlotWorld plotworld) {
|
||||
if (generator instanceof SpongePlotGenerator) {
|
||||
SpongePlotGenerator plotgen = (SpongePlotGenerator) generator;
|
||||
if (cluster != null) {
|
||||
// TODO Augment partial
|
||||
throw new UnsupportedOperationException("NOT IMPLEMENTED YET");
|
||||
}
|
||||
else {
|
||||
// TODO augment full
|
||||
throw new UnsupportedOperationException("NOT IMPLEMENTED YET");
|
||||
World worldObj = SpongeUtil.getWorld(world);
|
||||
if (worldObj != null) {
|
||||
if (cluster != null) {
|
||||
new AugmentedPopulator(world, worldObj.getWorldGenerator(), plotgen, cluster, plotworld.TERRAIN == 2, plotworld.TERRAIN != 2);
|
||||
}
|
||||
else {
|
||||
new AugmentedPopulator(world, worldObj.getWorldGenerator(), plotgen, null, plotworld.TERRAIN == 2, plotworld.TERRAIN != 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -55,7 +55,6 @@ public abstract class SpongePlotPopulator<T extends SpongePlotGenerator> impleme
|
||||
populate(world, ChunkManager.CURRENT_PLOT_CLEAR, random, cx, cz);
|
||||
}
|
||||
catch (Exception e) {
|
||||
PS.debug("ERROR GENERATING CHUNK!");
|
||||
e.printStackTrace();
|
||||
}
|
||||
};
|
||||
|
@ -5,23 +5,38 @@ import org.spongepowered.api.world.WorldCreationSettings;
|
||||
import org.spongepowered.api.world.gen.WorldGenerator;
|
||||
import org.spongepowered.api.world.gen.WorldGeneratorModifier;
|
||||
|
||||
import com.intellectualcrafters.plot.object.PlotCluster;
|
||||
import com.intellectualcrafters.plot.object.PlotWorld;
|
||||
import com.intellectualcrafters.plot.util.ClusterManager;
|
||||
|
||||
public class WorldModify implements WorldGeneratorModifier {
|
||||
|
||||
private SpongePlotGenerator plotgen;
|
||||
private boolean augment;
|
||||
|
||||
public WorldModify(SpongePlotGenerator plotgen) {
|
||||
public WorldModify(SpongePlotGenerator plotgen, boolean augment) {
|
||||
this.plotgen = plotgen;
|
||||
this.augment = augment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void modifyWorldGenerator(WorldCreationSettings world, DataContainer settings, WorldGenerator gen) {
|
||||
gen.setBaseGeneratorPopulator(plotgen.getBaseGeneratorPopulator());
|
||||
gen.setBiomeGenerator(plotgen.getBiomeGenerator());
|
||||
// if (gen instanceof SpongeWorldGenerator) {
|
||||
// SpongePlotGenerator plotgen = (SpongePlotGenerator) gen;
|
||||
// plotgen.setBaseGeneratorPopulator(plotgen.getGenerator());
|
||||
// plotgen.setBiomeGenerator(plotgen.getPlotBiomeProvider());
|
||||
// }
|
||||
if (augment) {
|
||||
String worldname = plotgen.world;
|
||||
PlotWorld plotworld = plotgen.getNewPlotWorld(worldname);
|
||||
if (plotworld.TYPE == 2) {
|
||||
for (PlotCluster cluster : ClusterManager.getClusters(worldname)) {
|
||||
new AugmentedPopulator(worldname, gen, plotgen, cluster, plotworld.TERRAIN == 2, plotworld.TERRAIN != 2);
|
||||
}
|
||||
}
|
||||
else {
|
||||
new AugmentedPopulator(worldname, gen, plotgen, null, plotworld.TERRAIN == 2, plotworld.TERRAIN != 2);
|
||||
}
|
||||
}
|
||||
else {
|
||||
gen.setBaseGeneratorPopulator(plotgen.getBaseGeneratorPopulator());
|
||||
gen.setBiomeGenerator(plotgen.getBiomeGenerator());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
Reference in New Issue
Block a user