Added a category system and refactored registries

This commit is contained in:
Matthew Miller
2018-06-19 10:53:15 +10:00
parent 484687a49d
commit 282eca7663
47 changed files with 715 additions and 316 deletions

View File

@ -20,26 +20,35 @@
package com.sk89q.worldedit.sponge;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.blocks.BlockType;
import com.sk89q.worldedit.entity.Player;
import com.sk89q.worldedit.event.platform.CommandEvent;
import com.sk89q.worldedit.event.platform.CommandSuggestionEvent;
import com.sk89q.worldedit.extension.platform.*;
import com.sk89q.worldedit.extension.platform.AbstractPlatform;
import com.sk89q.worldedit.extension.platform.Actor;
import com.sk89q.worldedit.extension.platform.Capability;
import com.sk89q.worldedit.extension.platform.MultiUserPlatform;
import com.sk89q.worldedit.extension.platform.Preference;
import com.sk89q.worldedit.sponge.config.SpongeConfiguration;
import com.sk89q.worldedit.util.command.CommandMapping;
import com.sk89q.worldedit.util.command.Dispatcher;
import com.sk89q.worldedit.world.World;
import com.sk89q.worldedit.world.registry.Registries;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.command.CommandException;
import org.spongepowered.api.command.CommandResult;
import org.spongepowered.api.command.CommandSource;
import org.spongepowered.api.entity.EntityType;
import org.spongepowered.api.item.ItemType;
import org.spongepowered.api.scheduler.Task;
import org.spongepowered.api.world.Location;
import java.util.ArrayList;
import java.util.Collection;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import javax.annotation.Nullable;
import java.util.*;
class SpongePlatform extends AbstractPlatform implements MultiUserPlatform {
@ -55,16 +64,8 @@ class SpongePlatform extends AbstractPlatform implements MultiUserPlatform {
}
@Override
public int resolveItem(String name) {
if (name == null) return 0;
Optional<org.spongepowered.api.block.BlockType> optBlock = Sponge.getRegistry().getType(org.spongepowered.api.block.BlockType.class, name);
if (optBlock.isPresent()) {
return optBlock.map(blockType -> SpongeWorldEdit.inst().getAdapter().resolve(blockType)).orElse(0);
} else {
Optional<ItemType> optType = Sponge.getRegistry().getType(ItemType.class, name);
return optType.map(itemType -> SpongeWorldEdit.inst().getAdapter().resolve(itemType)).orElse(0);
}
public Registries getRegistries() {
return SpongeRegistries.getInstance();
}
@Override

View File

@ -20,14 +20,14 @@
package com.sk89q.worldedit.sponge;
import com.sk89q.worldedit.world.registry.BiomeRegistry;
import com.sk89q.worldedit.world.registry.BundledWorldData;
import com.sk89q.worldedit.world.registry.BundledRegistries;
/**
* World data for the Sponge platform.
*/
class SpongeWorldData extends BundledWorldData {
class SpongeRegistries extends BundledRegistries {
private static final SpongeWorldData INSTANCE = new SpongeWorldData();
private static final SpongeRegistries INSTANCE = new SpongeRegistries();
private final BiomeRegistry biomeRegistry = new SpongeBiomeRegistry();
@Override
@ -40,7 +40,7 @@ class SpongeWorldData extends BundledWorldData {
*
* @return an instance
*/
public static SpongeWorldData getInstance() {
public static SpongeRegistries getInstance() {
return INSTANCE;
}

View File

@ -35,7 +35,7 @@ import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.util.Location;
import com.sk89q.worldedit.world.AbstractWorld;
import com.sk89q.worldedit.world.biome.BaseBiome;
import com.sk89q.worldedit.world.registry.WorldData;
import com.sk89q.worldedit.world.registry.Registries;
import com.sk89q.worldedit.world.registry.state.State;
import com.sk89q.worldedit.world.registry.state.value.StateValue;
import org.spongepowered.api.Sponge;
@ -44,7 +44,6 @@ import org.spongepowered.api.block.BlockState;
import org.spongepowered.api.block.BlockType;
import org.spongepowered.api.block.BlockTypes;
import org.spongepowered.api.block.tileentity.TileEntity;
import org.spongepowered.api.block.trait.BlockTrait;
import org.spongepowered.api.data.key.Keys;
import org.spongepowered.api.data.property.block.GroundLuminanceProperty;
import org.spongepowered.api.data.property.block.SkyLuminanceProperty;
@ -59,8 +58,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.google.common.base.Preconditions.checkNotNull;
@ -218,11 +215,6 @@ public abstract class SpongeWorld extends AbstractWorld {
getWorld().spawnEntity(entity);
}
@Override
public WorldData getWorldData() {
return SpongeWorldData.getInstance();
}
@Override
public int hashCode() {
return getWorld().hashCode();