Use a proper registry for biomes

This commit is contained in:
Matthew Miller
2019-02-16 17:27:00 +10:00
parent d6bc85ccbe
commit 1b101740fe
33 changed files with 314 additions and 326 deletions

View File

@ -26,6 +26,8 @@ import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.math.Vector3;
import com.sk89q.worldedit.util.Location;
import com.sk89q.worldedit.world.World;
import com.sk89q.worldedit.world.biome.BiomeType;
import com.sk89q.worldedit.world.biome.BiomeTypes;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.entity.living.player.Player;
@ -103,6 +105,14 @@ public class SpongeAdapter {
}
}
public static BiomeType adapt(org.spongepowered.api.world.biome.BiomeType biomeType) {
return BiomeTypes.get(biomeType.getId());
}
public static org.spongepowered.api.world.biome.BiomeType adapt(BiomeType biomeType) {
return Sponge.getRegistry().getType(org.spongepowered.api.world.biome.BiomeType.class, biomeType.getId()).orElse(null);
}
/**
* Create a WorldEdit location from a Sponge location.
*

View File

@ -19,15 +19,10 @@
package com.sk89q.worldedit.sponge;
import com.sk89q.worldedit.world.biome.BaseBiome;
import com.sk89q.worldedit.world.biome.BiomeData;
import com.sk89q.worldedit.world.registry.BiomeRegistry;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.world.biome.BiomeType;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nullable;
/**
@ -37,23 +32,8 @@ class SpongeBiomeRegistry implements BiomeRegistry {
@Nullable
@Override
public BaseBiome createFromId(int id) {
return new BaseBiome(id);
}
@Override
public List<BaseBiome> getBiomes() {
List<BaseBiome> list = new ArrayList<>();
for (BiomeType biome : Sponge.getGame().getRegistry().getAllOf(BiomeType.class)) {
list.add(new BaseBiome(SpongeWorldEdit.inst().getAdapter().resolve(biome)));
}
return list;
}
@Nullable
@Override
public BiomeData getData(BaseBiome biome) {
return new SpongeBiomeData(SpongeWorldEdit.inst().getAdapter().resolveBiome(biome.getId()));
public BiomeData getData(com.sk89q.worldedit.world.biome.BiomeType biome) {
return new SpongeBiomeData(SpongeAdapter.adapt(biome));
}
private static class SpongeBiomeData implements BiomeData {

View File

@ -35,7 +35,7 @@ import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.registry.state.Property;
import com.sk89q.worldedit.util.Location;
import com.sk89q.worldedit.world.AbstractWorld;
import com.sk89q.worldedit.world.biome.BaseBiome;
import com.sk89q.worldedit.world.biome.BiomeType;
import com.sk89q.worldedit.world.block.BaseBlock;
import com.sk89q.worldedit.world.block.BlockStateHolder;
import com.sk89q.worldedit.world.item.ItemTypes;
@ -192,17 +192,17 @@ public abstract class SpongeWorld extends AbstractWorld {
}
@Override
public BaseBiome getBiome(BlockVector2 position) {
public BiomeType getBiome(BlockVector2 position) {
checkNotNull(position);
return new BaseBiome(SpongeWorldEdit.inst().getAdapter().resolve(getWorld().getBiome(position.getBlockX(), 0, position.getBlockZ())));
return SpongeAdapter.adapt(getWorld().getBiome(position.getBlockX(), 0, position.getBlockZ()));
}
@Override
public boolean setBiome(BlockVector2 position, BaseBiome biome) {
public boolean setBiome(BlockVector2 position, BiomeType biome) {
checkNotNull(position);
checkNotNull(biome);
getWorld().setBiome(position.getBlockX(), 0, position.getBlockZ(), SpongeWorldEdit.inst().getAdapter().resolveBiome(biome.getId()));
getWorld().setBiome(position.getBlockX(), 0, position.getBlockZ(), SpongeAdapter.adapt(biome));
return true;
}

View File

@ -36,16 +36,6 @@ import org.spongepowered.api.world.biome.BiomeType;
*/
public interface SpongeImplAdapter {
/**
* Resolves the numerical ID from this {@link BiomeType}
*
* @param type The biometype
* @return The numerical ID
*/
int resolve(BiomeType type);
BiomeType resolveBiome(int intID);
BaseEntity createBaseEntity(Entity entity);
ItemStack makeSpongeStack(BaseItemStack itemStack);