refactor API

This commit is contained in:
dfsek
2021-02-22 16:13:53 -07:00
parent 46a08e49f5
commit a328ff2f2a
177 changed files with 399 additions and 311 deletions

View File

@@ -1,78 +0,0 @@
package com.dfsek.terra.registry;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.terra.registry.exception.DuplicateEntryException;
import java.lang.reflect.Type;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
/**
* Wrapper for a registry that ensures checked additions.
*
* @param <T> Type in registry
*/
public class CheckedRegistry<T> implements Registry<T> {
private final OpenRegistry<T> registry;
public CheckedRegistry(OpenRegistry<T> registry) {
this.registry = registry;
}
/**
* Add a value to this registry, checking whether it is present first.
*
* @param identifier Identifier to assign value.
* @param value Value to add.
* @throws DuplicateEntryException If an entry with the same identifier is already present.
*/
public void add(String identifier, T value) throws DuplicateEntryException {
registry.addChecked(identifier, value);
}
/**
* Add a value to the registry, without checking presence beforehand.
* <p>
* Use of this method is generally discouraged, as it is bad practice to overwrite registry values.
*
* @param identifier Identifier to assign value.
* @param value Value to add.
* @deprecated Use of {@link #add(String, Object)} is encouraged.
*/
@Deprecated
public void addUnchecked(String identifier, T value) {
registry.add(identifier, value);
}
@Override
public T get(String identifier) {
return registry.get(identifier);
}
@Override
public boolean contains(String identifier) {
return registry.contains(identifier);
}
@Override
public void forEach(Consumer<T> consumer) {
registry.forEach(consumer);
}
@Override
public void forEach(BiConsumer<String, T> consumer) {
registry.forEach(consumer);
}
@Override
public Set<T> entries() {
return registry.entries();
}
@Override
public T load(Type t, Object c, ConfigLoader loader) throws LoadException {
return registry.load(t, c, loader);
}
}

View File

@@ -1,52 +0,0 @@
package com.dfsek.terra.registry;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.ConfigLoader;
import java.lang.reflect.Type;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
/**
* Wrapper for a registry that forbids all write access.
*
* @param <T> Type in registry
*/
public class LockedRegistry<T> implements Registry<T> {
private final OpenRegistry<T> registry;
public LockedRegistry(OpenRegistry<T> registry) {
this.registry = registry;
}
@Override
public T get(String identifier) {
return registry.get(identifier);
}
@Override
public boolean contains(String identifier) {
return registry.contains(identifier);
}
@Override
public void forEach(Consumer<T> consumer) {
registry.forEach(consumer);
}
@Override
public void forEach(BiConsumer<String, T> consumer) {
registry.forEach(consumer);
}
@Override
public Set<T> entries() {
return registry.entries();
}
@Override
public T load(Type t, Object c, ConfigLoader loader) throws LoadException {
return registry.load(t, c, loader);
}
}

View File

@@ -2,7 +2,7 @@ package com.dfsek.terra.registry;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeLoader;
import com.dfsek.terra.api.registry.Registry;
import com.dfsek.terra.registry.exception.DuplicateEntryException;
import java.lang.reflect.Type;

View File

@@ -1,46 +0,0 @@
package com.dfsek.terra.registry;
import com.dfsek.tectonic.loading.TypeLoader;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
public interface Registry<T> extends TypeLoader<T> {
/**
* Get a value from the registry.
*
* @param identifier Identifier of value.
* @return Value matching the identifier, {@code null} if no value is present.
*/
T get(String identifier);
/**
* Check if the registry contains a value.
*
* @param identifier Identifier of value.
* @return Whether the registry contains the value.
*/
boolean contains(String identifier);
/**
* Perform the given action for every value in the registry.
*
* @param consumer Action to perform on value.
*/
void forEach(Consumer<T> consumer);
/**
* Perform an action for every key-value pair in the registry.
*
* @param consumer Action to perform on pair.
*/
void forEach(BiConsumer<String, T> consumer);
/**
* Get the entries of this registry as a {@link Set}.
*
* @return Set containing all entries.
*/
Set<T> entries();
}

View File

@@ -1,9 +1,9 @@
package com.dfsek.terra.registry.config;
import com.dfsek.terra.api.core.TerraPlugin;
import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.util.world.MaterialSet;
import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.world.flora.Flora;
import com.dfsek.terra.registry.OpenRegistry;
import com.dfsek.terra.world.population.items.flora.ConstantFlora;

View File

@@ -1,6 +1,6 @@
package com.dfsek.terra.registry.config;
import com.dfsek.terra.api.core.TerraPlugin;
import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.world.palette.Palette;
import com.dfsek.terra.api.world.palette.SinglePalette;

View File

@@ -1,6 +1,6 @@
package com.dfsek.terra.registry.config;
import com.dfsek.terra.api.core.TerraPlugin;
import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.block.MaterialData;

View File

@@ -1,13 +1,13 @@
package com.dfsek.terra.registry.master;
import com.dfsek.terra.addons.addon.TerraAddon;
import com.dfsek.terra.addons.injection.InjectionException;
import com.dfsek.terra.addons.injection.Injector;
import com.dfsek.terra.addons.loading.AddonClassLoader;
import com.dfsek.terra.addons.loading.AddonLoadException;
import com.dfsek.terra.addons.loading.pre.AddonPool;
import com.dfsek.terra.addons.loading.pre.PreLoadAddon;
import com.dfsek.terra.api.core.TerraPlugin;
import com.dfsek.terra.addon.AddonClassLoader;
import com.dfsek.terra.addon.AddonPool;
import com.dfsek.terra.addon.PreLoadAddon;
import com.dfsek.terra.addon.exception.AddonLoadException;
import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.addons.TerraAddon;
import com.dfsek.terra.api.injection.Injector;
import com.dfsek.terra.api.injection.exception.InjectionException;
import com.dfsek.terra.registry.OpenRegistry;
import com.dfsek.terra.registry.exception.DuplicateEntryException;

View File

@@ -1,7 +1,7 @@
package com.dfsek.terra.registry.master;
import com.dfsek.tectonic.exception.ConfigException;
import com.dfsek.terra.api.core.TerraPlugin;
import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.config.pack.ConfigPack;
import com.dfsek.terra.registry.OpenRegistry;