Move classes implementing Bukkit/Minecraft API to a separate package
These classes don't play nice with the @ParametersAreNonnullByDefault annotation (since the Bukkit/Minecraft code omits those annotations), so those classes had to be moved to a package that does not have that annotation.
This commit is contained in:
parent
0ef5faa3a0
commit
21c5f961fa
@ -1,4 +1,7 @@
|
||||
/**
|
||||
* Decorations are flowers, ores, trees and even villages strongholds.
|
||||
*/
|
||||
@ParametersAreNonnullByDefault
|
||||
package nl.rutgerkok.worldgeneratorapi.decoration;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
|
@ -7,13 +7,14 @@ import org.bukkit.craftbukkit.v1_13_R2.block.CraftBlock;
|
||||
|
||||
import net.minecraft.server.v1_13_R2.BiomeBase;
|
||||
import net.minecraft.server.v1_13_R2.WorldChunkManager;
|
||||
|
||||
import nl.rutgerkok.worldgeneratorapi.BiomeGenerator;
|
||||
|
||||
final class BiomeGeneratorImpl implements BiomeGenerator {
|
||||
public final class BiomeGeneratorImpl implements BiomeGenerator {
|
||||
|
||||
private final WorldChunkManager internal;
|
||||
|
||||
BiomeGeneratorImpl(WorldChunkManager worldChunkManager) {
|
||||
public BiomeGeneratorImpl(WorldChunkManager worldChunkManager) {
|
||||
internal = Objects.requireNonNull(worldChunkManager, "worldChunkManager");
|
||||
}
|
||||
|
||||
|
@ -18,6 +18,7 @@ import nl.rutgerkok.worldgeneratorapi.WorldGenerator;
|
||||
import nl.rutgerkok.worldgeneratorapi.WorldGeneratorApi;
|
||||
import nl.rutgerkok.worldgeneratorapi.WorldRef;
|
||||
import nl.rutgerkok.worldgeneratorapi.event.WorldGeneratorInitEvent;
|
||||
import nl.rutgerkok.worldgeneratorapi.internal.bukkitoverrides.DummyBukkitChunkGenerator;
|
||||
import nl.rutgerkok.worldgeneratorapi.property.PropertyRegistry;
|
||||
|
||||
public class WorldGeneratorApiImpl extends JavaPlugin implements WorldGeneratorApi, Listener {
|
||||
|
@ -18,6 +18,7 @@ import nl.rutgerkok.worldgeneratorapi.BiomeGenerator;
|
||||
import nl.rutgerkok.worldgeneratorapi.WorldGenerator;
|
||||
import nl.rutgerkok.worldgeneratorapi.WorldRef;
|
||||
import nl.rutgerkok.worldgeneratorapi.decoration.WorldDecorator;
|
||||
import nl.rutgerkok.worldgeneratorapi.internal.bukkitoverrides.InjectedChunkGenerator;
|
||||
|
||||
final class WorldGeneratorImpl implements WorldGenerator {
|
||||
|
||||
|
@ -0,0 +1,25 @@
|
||||
package nl.rutgerkok.worldgeneratorapi.internal.bukkitoverrides;
|
||||
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.block.CraftBlock;
|
||||
import org.bukkit.generator.ChunkGenerator.BiomeGrid;
|
||||
|
||||
import net.minecraft.server.v1_13_R2.BiomeBase;
|
||||
|
||||
class CustomBiomeGrid implements BiomeGrid {
|
||||
final BiomeBase[] biomeArray;
|
||||
|
||||
CustomBiomeGrid(BiomeBase[] biome) {
|
||||
this.biomeArray = biome;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Biome getBiome(final int x, final int z) {
|
||||
return CraftBlock.biomeBaseToBiome(this.biomeArray[z << 4 | x]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBiome(final int x, final int z, final Biome bio) {
|
||||
this.biomeArray[z << 4 | x] = CraftBlock.biomeToBiomeBase(bio);
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package nl.rutgerkok.worldgeneratorapi.internal;
|
||||
package nl.rutgerkok.worldgeneratorapi.internal.bukkitoverrides;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -21,11 +21,11 @@ import nl.rutgerkok.worldgeneratorapi.WorldGeneratorApi;
|
||||
* brand new world), {@link #getDefaultPopulators(World)} takes over this task.
|
||||
*
|
||||
*/
|
||||
final class DummyBukkitChunkGenerator extends ChunkGenerator {
|
||||
public final class DummyBukkitChunkGenerator extends ChunkGenerator {
|
||||
|
||||
private final WorldGeneratorApi impl;
|
||||
|
||||
DummyBukkitChunkGenerator(WorldGeneratorApi impl) {
|
||||
public DummyBukkitChunkGenerator(WorldGeneratorApi impl) {
|
||||
this.impl = Objects.requireNonNull(impl);
|
||||
}
|
||||
|
@ -1,11 +1,9 @@
|
||||
package nl.rutgerkok.worldgeneratorapi.internal;
|
||||
package nl.rutgerkok.worldgeneratorapi.internal.bukkitoverrides;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.block.CraftBlock;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.generator.CraftChunkData;
|
||||
import org.bukkit.generator.ChunkGenerator.BiomeGrid;
|
||||
import org.bukkit.generator.ChunkGenerator.ChunkData;
|
||||
@ -34,26 +32,10 @@ import net.minecraft.server.v1_13_R2.WorldServer;
|
||||
import nl.rutgerkok.worldgeneratorapi.BaseChunkGenerator;
|
||||
import nl.rutgerkok.worldgeneratorapi.BaseChunkGenerator.GeneratingChunk;
|
||||
import nl.rutgerkok.worldgeneratorapi.BiomeGenerator;
|
||||
import nl.rutgerkok.worldgeneratorapi.internal.BiomeGeneratorImpl;
|
||||
import nl.rutgerkok.worldgeneratorapi.internal.WorldDecoratorImpl;
|
||||
|
||||
final class InjectedChunkGenerator extends ChunkGeneratorAbstract<GeneratorSettingsDefault> {
|
||||
|
||||
private static class CustomBiomeGrid implements BiomeGrid {
|
||||
private final BiomeBase[] biomeArray;
|
||||
|
||||
private CustomBiomeGrid(BiomeBase[] biome) {
|
||||
this.biomeArray = biome;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Biome getBiome(final int x, final int z) {
|
||||
return CraftBlock.biomeBaseToBiome(this.biomeArray[z << 4 | x]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBiome(final int x, final int z, final Biome bio) {
|
||||
this.biomeArray[z << 4 | x] = CraftBlock.biomeToBiomeBase(bio);
|
||||
}
|
||||
}
|
||||
public final class InjectedChunkGenerator extends ChunkGeneratorAbstract<GeneratorSettingsDefault> {
|
||||
|
||||
private final org.bukkit.World world;
|
||||
|
||||
@ -63,12 +45,12 @@ final class InjectedChunkGenerator extends ChunkGeneratorAbstract<GeneratorSetti
|
||||
private final MobSpawnerPhantom phantomSpawner = new MobSpawnerPhantom();
|
||||
private final GeneratorSettingsDefault defaultSettings = new GeneratorSettingsDefault();
|
||||
private final NoiseGenerator3 surfaceNoise;
|
||||
final WorldDecoratorImpl worldDecorator = new WorldDecoratorImpl();
|
||||
public final WorldDecoratorImpl worldDecorator = new WorldDecoratorImpl();
|
||||
|
||||
private BaseChunkGenerator baseChunkGenerator;
|
||||
private final BiomeGenerator biomeGenerator;
|
||||
|
||||
InjectedChunkGenerator(WorldServer world, BaseChunkGenerator baseChunkGenerator) {
|
||||
public InjectedChunkGenerator(WorldServer world, BaseChunkGenerator baseChunkGenerator) {
|
||||
super(world, world.getChunkProvider().getChunkGenerator().getWorldChunkManager());
|
||||
this.world = world.getWorld();
|
||||
|
||||
@ -182,11 +164,11 @@ final class InjectedChunkGenerator extends ChunkGeneratorAbstract<GeneratorSetti
|
||||
}
|
||||
}
|
||||
|
||||
BaseChunkGenerator getBaseChunkGenerator() {
|
||||
public BaseChunkGenerator getBaseChunkGenerator() {
|
||||
return baseChunkGenerator;
|
||||
}
|
||||
|
||||
BiomeGenerator getBiomeGenerator() {
|
||||
public BiomeGenerator getBiomeGenerator() {
|
||||
return biomeGenerator;
|
||||
}
|
||||
|
||||
@ -212,7 +194,7 @@ final class InjectedChunkGenerator extends ChunkGeneratorAbstract<GeneratorSetti
|
||||
return world.getSeaLevel() + 1;
|
||||
}
|
||||
|
||||
void setBaseChunkGenerator(BaseChunkGenerator baseChunkGenerator) {
|
||||
public void setBaseChunkGenerator(BaseChunkGenerator baseChunkGenerator) {
|
||||
this.baseChunkGenerator = Objects.requireNonNull(baseChunkGenerator, "baseChunkGenerator");
|
||||
}
|
||||
|
@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Classes that implement Bukkit or Minecraft API themselves. This package is
|
||||
* not annotated as {@code @ParametersAreNonnullByDefault}, as this would make
|
||||
* it annoying to implement the unannotated Bukkit API.
|
||||
*/
|
||||
package nl.rutgerkok.worldgeneratorapi.internal.bukkitoverrides;
|
@ -3,4 +3,7 @@
|
||||
* author; then we can try to design a public API for it, or find some
|
||||
* alternative.
|
||||
*/
|
||||
@ParametersAreNonnullByDefault
|
||||
package nl.rutgerkok.worldgeneratorapi.internal;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
|
Loading…
x
Reference in New Issue
Block a user