From 3c3e3dafb597831c676a746740674f3d31b8b24e Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 4 Jan 2022 14:32:46 -0700 Subject: [PATCH] create MutatedStructure --- .../structure/mutator/MutatedStructure.java | 44 +++++++++++++++++++ .../mutator/StructureMutatorAddon.java | 21 +++++++++ 2 files changed, 65 insertions(+) create mode 100644 common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java create mode 100644 common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/StructureMutatorAddon.java diff --git a/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java b/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java new file mode 100644 index 000000000..1fa01f06e --- /dev/null +++ b/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java @@ -0,0 +1,44 @@ +package com.dfsek.terra.addons.structure.mutator; + +import com.dfsek.terra.api.registry.key.Keyed; +import com.dfsek.terra.api.registry.key.RegistryKey; +import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.util.Rotation; +import com.dfsek.terra.api.util.vector.Vector3Int; +import com.dfsek.terra.api.world.WritableWorld; +import com.dfsek.terra.api.world.util.ReadInterceptor; +import com.dfsek.terra.api.world.util.WriteInterceptor; + +import java.util.Random; + + +public class MutatedStructure implements Structure, Keyed { + private final RegistryKey key; + private final Structure base; + private final ReadInterceptor readInterceptor; + private final WriteInterceptor writeInterceptor; + + public MutatedStructure(RegistryKey key, Structure base, + ReadInterceptor readInterceptor, WriteInterceptor writeInterceptor) { + this.key = key; + this.base = base; + this.readInterceptor = readInterceptor; + this.writeInterceptor = writeInterceptor; + } + + @Override + public RegistryKey getRegistryKey() { + return key; + } + + @Override + public boolean generate(Vector3Int location, WritableWorld world, Random random, Rotation rotation) { + return base.generate(location, + world + .buffer() + .read(readInterceptor) + .write(writeInterceptor) + .build(), + random, rotation); + } +} diff --git a/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/StructureMutatorAddon.java b/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/StructureMutatorAddon.java new file mode 100644 index 000000000..f0f44dc34 --- /dev/null +++ b/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/StructureMutatorAddon.java @@ -0,0 +1,21 @@ +package com.dfsek.terra.addons.structure.mutator; + +import com.dfsek.terra.addons.manifest.api.AddonInitializer; +import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.addon.BaseAddon; +import com.dfsek.terra.api.inject.annotations.Inject; + + +public class StructureMutatorAddon implements AddonInitializer { + @Inject + private Platform platform; + + @Inject + private BaseAddon addon; + + + @Override + public void initialize() { + + } +}