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.
|
* Decorations are flowers, ores, trees and even villages strongholds.
|
||||||
*/
|
*/
|
||||||
package nl.rutgerkok.worldgeneratorapi.decoration;
|
@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.BiomeBase;
|
||||||
import net.minecraft.server.v1_13_R2.WorldChunkManager;
|
import net.minecraft.server.v1_13_R2.WorldChunkManager;
|
||||||
|
|
||||||
import nl.rutgerkok.worldgeneratorapi.BiomeGenerator;
|
import nl.rutgerkok.worldgeneratorapi.BiomeGenerator;
|
||||||
|
|
||||||
final class BiomeGeneratorImpl implements BiomeGenerator {
|
public final class BiomeGeneratorImpl implements BiomeGenerator {
|
||||||
|
|
||||||
private final WorldChunkManager internal;
|
private final WorldChunkManager internal;
|
||||||
|
|
||||||
BiomeGeneratorImpl(WorldChunkManager worldChunkManager) {
|
public BiomeGeneratorImpl(WorldChunkManager worldChunkManager) {
|
||||||
internal = Objects.requireNonNull(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.WorldGeneratorApi;
|
||||||
import nl.rutgerkok.worldgeneratorapi.WorldRef;
|
import nl.rutgerkok.worldgeneratorapi.WorldRef;
|
||||||
import nl.rutgerkok.worldgeneratorapi.event.WorldGeneratorInitEvent;
|
import nl.rutgerkok.worldgeneratorapi.event.WorldGeneratorInitEvent;
|
||||||
|
import nl.rutgerkok.worldgeneratorapi.internal.bukkitoverrides.DummyBukkitChunkGenerator;
|
||||||
import nl.rutgerkok.worldgeneratorapi.property.PropertyRegistry;
|
import nl.rutgerkok.worldgeneratorapi.property.PropertyRegistry;
|
||||||
|
|
||||||
public class WorldGeneratorApiImpl extends JavaPlugin implements WorldGeneratorApi, Listener {
|
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.WorldGenerator;
|
||||||
import nl.rutgerkok.worldgeneratorapi.WorldRef;
|
import nl.rutgerkok.worldgeneratorapi.WorldRef;
|
||||||
import nl.rutgerkok.worldgeneratorapi.decoration.WorldDecorator;
|
import nl.rutgerkok.worldgeneratorapi.decoration.WorldDecorator;
|
||||||
|
import nl.rutgerkok.worldgeneratorapi.internal.bukkitoverrides.InjectedChunkGenerator;
|
||||||
|
|
||||||
final class WorldGeneratorImpl implements WorldGenerator {
|
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.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -21,11 +21,11 @@ import nl.rutgerkok.worldgeneratorapi.WorldGeneratorApi;
|
|||||||
* brand new world), {@link #getDefaultPopulators(World)} takes over this task.
|
* 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;
|
private final WorldGeneratorApi impl;
|
||||||
|
|
||||||
DummyBukkitChunkGenerator(WorldGeneratorApi impl) {
|
public DummyBukkitChunkGenerator(WorldGeneratorApi impl) {
|
||||||
this.impl = Objects.requireNonNull(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.lang.reflect.Field;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
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.craftbukkit.v1_13_R2.generator.CraftChunkData;
|
||||||
import org.bukkit.generator.ChunkGenerator.BiomeGrid;
|
import org.bukkit.generator.ChunkGenerator.BiomeGrid;
|
||||||
import org.bukkit.generator.ChunkGenerator.ChunkData;
|
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;
|
||||||
import nl.rutgerkok.worldgeneratorapi.BaseChunkGenerator.GeneratingChunk;
|
import nl.rutgerkok.worldgeneratorapi.BaseChunkGenerator.GeneratingChunk;
|
||||||
import nl.rutgerkok.worldgeneratorapi.BiomeGenerator;
|
import nl.rutgerkok.worldgeneratorapi.BiomeGenerator;
|
||||||
|
import nl.rutgerkok.worldgeneratorapi.internal.BiomeGeneratorImpl;
|
||||||
|
import nl.rutgerkok.worldgeneratorapi.internal.WorldDecoratorImpl;
|
||||||
|
|
||||||
final class InjectedChunkGenerator extends ChunkGeneratorAbstract<GeneratorSettingsDefault> {
|
public 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private final org.bukkit.World world;
|
private final org.bukkit.World world;
|
||||||
|
|
||||||
@ -63,12 +45,12 @@ final class InjectedChunkGenerator extends ChunkGeneratorAbstract<GeneratorSetti
|
|||||||
private final MobSpawnerPhantom phantomSpawner = new MobSpawnerPhantom();
|
private final MobSpawnerPhantom phantomSpawner = new MobSpawnerPhantom();
|
||||||
private final GeneratorSettingsDefault defaultSettings = new GeneratorSettingsDefault();
|
private final GeneratorSettingsDefault defaultSettings = new GeneratorSettingsDefault();
|
||||||
private final NoiseGenerator3 surfaceNoise;
|
private final NoiseGenerator3 surfaceNoise;
|
||||||
final WorldDecoratorImpl worldDecorator = new WorldDecoratorImpl();
|
public final WorldDecoratorImpl worldDecorator = new WorldDecoratorImpl();
|
||||||
|
|
||||||
private BaseChunkGenerator baseChunkGenerator;
|
private BaseChunkGenerator baseChunkGenerator;
|
||||||
private final BiomeGenerator biomeGenerator;
|
private final BiomeGenerator biomeGenerator;
|
||||||
|
|
||||||
InjectedChunkGenerator(WorldServer world, BaseChunkGenerator baseChunkGenerator) {
|
public InjectedChunkGenerator(WorldServer world, BaseChunkGenerator baseChunkGenerator) {
|
||||||
super(world, world.getChunkProvider().getChunkGenerator().getWorldChunkManager());
|
super(world, world.getChunkProvider().getChunkGenerator().getWorldChunkManager());
|
||||||
this.world = world.getWorld();
|
this.world = world.getWorld();
|
||||||
|
|
||||||
@ -182,11 +164,11 @@ final class InjectedChunkGenerator extends ChunkGeneratorAbstract<GeneratorSetti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BaseChunkGenerator getBaseChunkGenerator() {
|
public BaseChunkGenerator getBaseChunkGenerator() {
|
||||||
return baseChunkGenerator;
|
return baseChunkGenerator;
|
||||||
}
|
}
|
||||||
|
|
||||||
BiomeGenerator getBiomeGenerator() {
|
public BiomeGenerator getBiomeGenerator() {
|
||||||
return biomeGenerator;
|
return biomeGenerator;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -212,7 +194,7 @@ final class InjectedChunkGenerator extends ChunkGeneratorAbstract<GeneratorSetti
|
|||||||
return world.getSeaLevel() + 1;
|
return world.getSeaLevel() + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setBaseChunkGenerator(BaseChunkGenerator baseChunkGenerator) {
|
public void setBaseChunkGenerator(BaseChunkGenerator baseChunkGenerator) {
|
||||||
this.baseChunkGenerator = Objects.requireNonNull(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
|
* author; then we can try to design a public API for it, or find some
|
||||||
* alternative.
|
* alternative.
|
||||||
*/
|
*/
|
||||||
|
@ParametersAreNonnullByDefault
|
||||||
package nl.rutgerkok.worldgeneratorapi.internal;
|
package nl.rutgerkok.worldgeneratorapi.internal;
|
||||||
|
|
||||||
|
import javax.annotation.ParametersAreNonnullByDefault;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user