mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-04-20 23:30:29 +00:00
refactor API
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user