mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-07-20 22:34:42 +02:00
Updated Gradle
This commit is contained in:
@ -0,0 +1,77 @@
|
||||
package com.plotsquared.sponge.generator;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.spongepowered.api.world.World;
|
||||
import org.spongepowered.api.world.extent.ImmutableBiomeArea;
|
||||
import org.spongepowered.api.world.extent.MutableBlockVolume;
|
||||
import org.spongepowered.api.world.gen.GenerationPopulator;
|
||||
import org.spongepowered.api.world.gen.WorldGenerator;
|
||||
|
||||
import com.flowpowered.math.vector.Vector3i;
|
||||
import com.intellectualcrafters.plot.generator.AugmentedUtils;
|
||||
import com.intellectualcrafters.plot.object.LazyResult;
|
||||
import com.intellectualcrafters.plot.util.PlotChunk;
|
||||
import com.intellectualcrafters.plot.util.SetQueue;
|
||||
import com.intellectualcrafters.plot.util.SetQueue.ChunkWrapper;
|
||||
import com.plotsquared.sponge.util.SpongeUtil;
|
||||
|
||||
public class SpongeAugmentedGenerator implements GenerationPopulator {
|
||||
|
||||
private static SpongeAugmentedGenerator generator;
|
||||
|
||||
private SpongeAugmentedGenerator() {};
|
||||
|
||||
public static SpongeAugmentedGenerator get(World world) {
|
||||
WorldGenerator wg = world.getWorldGenerator();
|
||||
List<GenerationPopulator> populators = wg.getGenerationPopulators();
|
||||
for (GenerationPopulator poplator : populators) {
|
||||
if (poplator instanceof SpongeAugmentedGenerator) {
|
||||
return (SpongeAugmentedGenerator) poplator;
|
||||
}
|
||||
}
|
||||
if (generator == null) {
|
||||
generator = new SpongeAugmentedGenerator();
|
||||
}
|
||||
populators.add(generator);
|
||||
return generator;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void populate(final World world, final MutableBlockVolume terrain, final ImmutableBiomeArea biome) {
|
||||
Vector3i min = terrain.getBlockMin();
|
||||
final int bx = min.getX();
|
||||
final int bz = min.getZ();
|
||||
final int cx = bx >> 4;
|
||||
final int cz = bz >> 4;
|
||||
AugmentedUtils.generate(world.getName(), cx, cz, new LazyResult<PlotChunk<?>>() {
|
||||
@Override
|
||||
public PlotChunk<?> create() {
|
||||
ChunkWrapper wrap = SetQueue.IMP.new ChunkWrapper(world.getName(), cx, cz);
|
||||
return new PlotChunk<ChunkWrapper>(wrap) {
|
||||
@Override
|
||||
public ChunkWrapper getChunkAbs() {
|
||||
return getChunkWrapper();
|
||||
}
|
||||
@Override
|
||||
public void setBlock(int x, int y, int z, int id, byte data) {
|
||||
terrain.setBlock(bx + x, y, bz + z, SpongeUtil.getBlockState(id, data));
|
||||
}
|
||||
@Override
|
||||
public void setBiome(int x, int z, int biome) {
|
||||
world.setBiome(bx + x, bz + z, null);
|
||||
}
|
||||
@Override
|
||||
public PlotChunk clone() {
|
||||
throw new UnsupportedOperationException("NOT IMPLEMENTED YET");
|
||||
}
|
||||
@Override
|
||||
public PlotChunk shallowClone() {
|
||||
throw new UnsupportedOperationException("NOT IMPLEMENTED YET");
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,122 @@
|
||||
package com.plotsquared.sponge.generator;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.spongepowered.api.data.DataContainer;
|
||||
import org.spongepowered.api.world.WorldCreationSettings;
|
||||
import org.spongepowered.api.world.biome.BiomeGenerationSettings;
|
||||
import org.spongepowered.api.world.biome.BiomeType;
|
||||
import org.spongepowered.api.world.biome.BiomeTypes;
|
||||
import org.spongepowered.api.world.extent.MutableBiomeArea;
|
||||
import org.spongepowered.api.world.gen.BiomeGenerator;
|
||||
import org.spongepowered.api.world.gen.GenerationPopulator;
|
||||
import org.spongepowered.api.world.gen.WorldGenerator;
|
||||
import org.spongepowered.api.world.gen.WorldGeneratorModifier;
|
||||
|
||||
import com.flowpowered.math.vector.Vector2i;
|
||||
import com.intellectualcrafters.plot.PS;
|
||||
import com.intellectualcrafters.plot.generator.GeneratorWrapper;
|
||||
import com.intellectualcrafters.plot.generator.IndependentPlotGenerator;
|
||||
import com.intellectualcrafters.plot.object.PlotArea;
|
||||
import com.intellectualcrafters.plot.object.PlotManager;
|
||||
import com.intellectualcrafters.plot.util.MainUtil;
|
||||
import com.intellectualcrafters.plot.util.ReflectionUtils;
|
||||
import com.plotsquared.sponge.util.SpongeUtil;
|
||||
|
||||
public class SpongePlotGenerator implements WorldGeneratorModifier, GeneratorWrapper<WorldGeneratorModifier> {
|
||||
|
||||
private final IndependentPlotGenerator plotGenerator;
|
||||
private final List<GenerationPopulator> populators = new ArrayList<>();
|
||||
private final boolean loaded = false;
|
||||
private PlotManager manager;
|
||||
private final WorldGeneratorModifier platformGenerator;
|
||||
private final boolean full;
|
||||
|
||||
public SpongePlotGenerator(IndependentPlotGenerator generator) {
|
||||
this.plotGenerator = generator;
|
||||
this.platformGenerator = this;
|
||||
this.full = true;
|
||||
MainUtil.initCache();
|
||||
}
|
||||
|
||||
public SpongePlotGenerator(WorldGeneratorModifier wgm) {
|
||||
this.plotGenerator = null;
|
||||
this.platformGenerator = wgm;
|
||||
this.full = false;
|
||||
MainUtil.initCache();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
if (plotGenerator == null) {
|
||||
if (platformGenerator != this) {
|
||||
return platformGenerator.getId();
|
||||
}
|
||||
return "null";
|
||||
}
|
||||
return plotGenerator.getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
if (plotGenerator == null) {
|
||||
if (platformGenerator != this) {
|
||||
return platformGenerator.getName();
|
||||
}
|
||||
return "null";
|
||||
}
|
||||
return plotGenerator.getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void modifyWorldGenerator(WorldCreationSettings settings, DataContainer data, WorldGenerator wg) {
|
||||
final String worldname = settings.getWorldName();
|
||||
wg.setBaseGenerationPopulator(new SpongeTerrainGen(this, plotGenerator));
|
||||
wg.setBiomeGenerator(new BiomeGenerator() {
|
||||
@Override
|
||||
public void generateBiomes(MutableBiomeArea buffer) {
|
||||
PlotArea area = PS.get().getPlotArea(worldname, null);
|
||||
if (area != null) {
|
||||
BiomeType biome = SpongeUtil.getBiome(area.PLOT_BIOME);
|
||||
Vector2i min = buffer.getBiomeMin();
|
||||
Vector2i max = buffer.getBiomeMax();
|
||||
for (int x = min.getX(); x <= max.getX(); x++) {
|
||||
for (int z = min.getY(); z <= max.getY(); z++) {
|
||||
buffer.setBiome(x, z, biome);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
for (BiomeType type : ReflectionUtils.<BiomeType> getStaticFields(BiomeTypes.class)) {
|
||||
BiomeGenerationSettings biomeSettings = wg.getBiomeSettings(type);
|
||||
biomeSettings.getGenerationPopulators().clear();
|
||||
biomeSettings.getPopulators().clear();
|
||||
}
|
||||
wg.getGenerationPopulators().clear();
|
||||
wg.getPopulators().clear();
|
||||
PS.get().loadWorld(worldname, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IndependentPlotGenerator getPlotGenerator() {
|
||||
return plotGenerator;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WorldGeneratorModifier getPlatformGenerator() {
|
||||
return platformGenerator;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void augment(PlotArea area) {
|
||||
SpongeAugmentedGenerator.get(SpongeUtil.getWorld(area.worldname));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFull() {
|
||||
return full;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
package com.plotsquared.sponge.generator;
|
||||
|
||||
import org.spongepowered.api.world.World;
|
||||
import org.spongepowered.api.world.extent.ImmutableBiomeArea;
|
||||
import org.spongepowered.api.world.extent.MutableBlockVolume;
|
||||
import org.spongepowered.api.world.gen.GenerationPopulator;
|
||||
|
||||
import com.flowpowered.math.vector.Vector3i;
|
||||
import com.intellectualcrafters.plot.PS;
|
||||
import com.intellectualcrafters.plot.generator.IndependentPlotGenerator;
|
||||
import com.intellectualcrafters.plot.object.PlotArea;
|
||||
import com.intellectualcrafters.plot.object.PseudoRandom;
|
||||
import com.intellectualcrafters.plot.util.ChunkManager;
|
||||
import com.intellectualcrafters.plot.util.SetQueue;
|
||||
import com.intellectualcrafters.plot.util.SetQueue.ChunkWrapper;
|
||||
import com.plotsquared.sponge.util.block.GenChunk;
|
||||
|
||||
public class SpongeTerrainGen implements GenerationPopulator {
|
||||
|
||||
public final SpongePlotGenerator parent;
|
||||
public final IndependentPlotGenerator child;
|
||||
private final PseudoRandom random = new PseudoRandom();
|
||||
|
||||
public SpongeTerrainGen(SpongePlotGenerator parent, IndependentPlotGenerator ipg) {
|
||||
this.parent = parent;
|
||||
this.child = ipg;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void populate(World world, MutableBlockVolume terrain, ImmutableBiomeArea biomes) {
|
||||
Vector3i size = terrain.getBlockSize();
|
||||
if (size.getX() != 16 || size.getZ() != 16) {
|
||||
throw new UnsupportedOperationException("NON CHUNK POPULATION NOT SUPPORTED");
|
||||
}
|
||||
String worldname = world.getName();
|
||||
Vector3i min = terrain.getBlockMin();
|
||||
int cx = min.getX() >> 4;
|
||||
int cz = min.getZ() >> 4;
|
||||
ChunkWrapper wrap = SetQueue.IMP.new ChunkWrapper(worldname, cx, cz);
|
||||
// Create the result object
|
||||
GenChunk result = new GenChunk(terrain, null, wrap);
|
||||
// Catch any exceptions
|
||||
try {
|
||||
// Set random seed
|
||||
random.state = (cx << 16) | (cz & 0xFFFF);
|
||||
// Process the chunk
|
||||
result.modified = false;
|
||||
ChunkManager.preProcessChunk(result);
|
||||
if (result.modified) {
|
||||
return;
|
||||
}
|
||||
// Fill the result data
|
||||
PlotArea area = PS.get().getPlotArea(world.getName(), null);
|
||||
child.generateChunk(result, area, random);
|
||||
ChunkManager.postProcessChunk(result);
|
||||
return;
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user