mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-17 22:31:52 +00:00
Fabric stuff still doesnt work, but eh
This commit is contained in:
@@ -138,4 +138,3 @@ build
|
|||||||
!lib/*.jar
|
!lib/*.jar
|
||||||
.idea/Terra.iml
|
.idea/Terra.iml
|
||||||
/run/
|
/run/
|
||||||
/run/
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.dfsek.terra.api.gaea.tree.fractal;
|
package com.dfsek.terra.api.gaea.tree.fractal;
|
||||||
|
|
||||||
import com.dfsek.terra.api.gaea.tree.Tree;
|
|
||||||
import com.dfsek.terra.api.gaea.util.GlueList;
|
import com.dfsek.terra.api.gaea.util.GlueList;
|
||||||
import com.dfsek.terra.api.generic.Entity;
|
import com.dfsek.terra.api.generic.Entity;
|
||||||
import com.dfsek.terra.api.generic.TerraPlugin;
|
import com.dfsek.terra.api.generic.TerraPlugin;
|
||||||
@@ -13,11 +12,10 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
|
||||||
public abstract class FractalTree implements Tree {
|
public abstract class FractalTree {
|
||||||
private final Map<Location, BlockData> treeAssembler = new HashMap<>();
|
private final Map<Location, BlockData> treeAssembler = new HashMap<>();
|
||||||
private final List<EntitySpawnHolder> entities = new GlueList<>();
|
private final List<EntitySpawnHolder> entities = new GlueList<>();
|
||||||
private final Location origin;
|
private final Location origin;
|
||||||
@@ -111,14 +109,4 @@ public abstract class FractalTree implements Tree {
|
|||||||
public MaterialData getMaterial(Location l) {
|
public MaterialData getMaterial(Location l) {
|
||||||
return treeAssembler.getOrDefault(l, main.getWorldHandle().createBlockData("minecraft:air")).getMaterial();
|
return treeAssembler.getOrDefault(l, main.getWorldHandle().createBlockData("minecraft:air")).getMaterial();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean plant(Location l, Random r) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Set<MaterialData> getSpawnable() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ public class ConfigRegistry extends TerraRegistry<ConfigPack> {
|
|||||||
public boolean loadAll(TerraPlugin main) {
|
public boolean loadAll(TerraPlugin main) {
|
||||||
boolean valid = true;
|
boolean valid = true;
|
||||||
File packsFolder = new File(main.getDataFolder(), "packs");
|
File packsFolder = new File(main.getDataFolder(), "packs");
|
||||||
|
packsFolder.mkdirs();
|
||||||
for(File dir : packsFolder.listFiles(File::isDirectory)) {
|
for(File dir : packsFolder.listFiles(File::isDirectory)) {
|
||||||
try {
|
try {
|
||||||
load(dir, main);
|
load(dir, main);
|
||||||
|
|||||||
@@ -2,12 +2,20 @@ package com.dfsek.terra.registry;
|
|||||||
|
|
||||||
import com.dfsek.terra.api.gaea.tree.Tree;
|
import com.dfsek.terra.api.gaea.tree.Tree;
|
||||||
import com.dfsek.terra.api.generic.TerraPlugin;
|
import com.dfsek.terra.api.generic.TerraPlugin;
|
||||||
|
import com.dfsek.terra.api.generic.world.block.MaterialData;
|
||||||
|
import com.dfsek.terra.api.generic.world.vector.Location;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
public class TreeRegistry extends TerraRegistry<Tree> {
|
public class TreeRegistry extends TerraRegistry<Tree> {
|
||||||
private final TerraPlugin main;
|
private final TerraPlugin main;
|
||||||
|
|
||||||
public TreeRegistry(TerraPlugin main) {
|
public TreeRegistry(TerraPlugin main) {
|
||||||
this.main = main;
|
this.main = main;
|
||||||
|
addTree("ACACIA");
|
||||||
|
addTree("BIRCH");
|
||||||
|
addTree("BROWN_MUSHROOM");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addTree(String id) {
|
private void addTree(String id) {
|
||||||
@@ -17,4 +25,17 @@ public class TreeRegistry extends TerraRegistry<Tree> {
|
|||||||
main.getLogger().warning("Unable to load tree " + id + ": " + e.getMessage());
|
main.getLogger().warning("Unable to load tree " + id + ": " + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final class FractalTreeHolder implements Tree {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean plant(Location l, Random r) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<MaterialData> getSpawnable() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ import com.dfsek.terra.api.generic.world.World;
|
|||||||
import com.dfsek.terra.api.generic.world.WorldHandle;
|
import com.dfsek.terra.api.generic.world.WorldHandle;
|
||||||
import com.dfsek.terra.config.base.PluginConfig;
|
import com.dfsek.terra.config.base.PluginConfig;
|
||||||
import com.dfsek.terra.fabric.inventory.FabricItemHandle;
|
import com.dfsek.terra.fabric.inventory.FabricItemHandle;
|
||||||
|
import com.dfsek.terra.fabric.mixin.GeneratorTypeAccessor;
|
||||||
|
import com.dfsek.terra.fabric.world.FabricWorldHandle;
|
||||||
import com.dfsek.terra.registry.ConfigRegistry;
|
import com.dfsek.terra.registry.ConfigRegistry;
|
||||||
import net.fabricmc.api.ModInitializer;
|
import net.fabricmc.api.ModInitializer;
|
||||||
import net.minecraft.client.world.GeneratorType;
|
import net.minecraft.client.world.GeneratorType;
|
||||||
@@ -21,10 +23,8 @@ import net.minecraft.world.gen.chunk.FlatChunkGeneratorConfig;
|
|||||||
import net.minecraft.world.gen.chunk.StructuresConfig;
|
import net.minecraft.world.gen.chunk.StructuresConfig;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.lang.reflect.Field;
|
import java.net.URISyntaxException;
|
||||||
import java.lang.reflect.Modifier;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
@@ -40,10 +40,12 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
|||||||
};
|
};
|
||||||
private final Logger logger = Logger.getLogger("Terra");
|
private final Logger logger = Logger.getLogger("Terra");
|
||||||
private final ItemHandle itemHandle = new FabricItemHandle();
|
private final ItemHandle itemHandle = new FabricItemHandle();
|
||||||
|
private final WorldHandle worldHandle = new FabricWorldHandle();
|
||||||
|
private final ConfigRegistry registry = new ConfigRegistry();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorldHandle getWorldHandle() {
|
public WorldHandle getWorldHandle() {
|
||||||
return null;
|
return worldHandle;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -68,7 +70,12 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public File getDataFolder() {
|
public File getDataFolder() {
|
||||||
return null;
|
try {
|
||||||
|
return new File(new File(TerraFabricPlugin.class.getProtectionDomain().getCodeSource().getLocation()
|
||||||
|
.toURI()), "terra");
|
||||||
|
} catch(URISyntaxException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -83,7 +90,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ConfigRegistry getRegistry() {
|
public ConfigRegistry getRegistry() {
|
||||||
return null;
|
return registry;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -93,7 +100,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemHandle getItemHandle() {
|
public ItemHandle getItemHandle() {
|
||||||
return null;
|
return itemHandle;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -101,24 +108,11 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
@Override
|
||||||
public void onInitialize() {
|
public void onInitialize() {
|
||||||
logger.info("Initializing Terra...");
|
logger.info("Initializing Terra...");
|
||||||
Class<GeneratorType> generatorTypeClass = GeneratorType.class;
|
GeneratorTypeAccessor.getValues().add(TERRA);
|
||||||
|
registry.loadAll(this);
|
||||||
|
|
||||||
try {
|
|
||||||
Field values = generatorTypeClass.getDeclaredField("VALUES");
|
|
||||||
values.setAccessible(true);
|
|
||||||
|
|
||||||
Field modifiersField = Field.class.getDeclaredField("modifiers");
|
|
||||||
|
|
||||||
modifiersField.setAccessible(true);
|
|
||||||
modifiersField.setInt(values, values.getModifiers() & ~Modifier.FINAL);
|
|
||||||
|
|
||||||
((List<GeneratorType>) values.get(null)).add(TERRA); // TODO: This is incredibly yucky and should be replaced by Mixin as soon as possible.
|
|
||||||
} catch(NoSuchFieldException | IllegalAccessException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -7,9 +7,9 @@ import org.spongepowered.asm.mixin.gen.Accessor;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Mixin(GeneratorType.class)
|
@Mixin(GeneratorType.class)
|
||||||
public class GeneratorAccessor {
|
public interface GeneratorTypeAccessor {
|
||||||
@Accessor("VALUES")
|
@Accessor("VALUES")
|
||||||
public static List<GeneratorType> getValues() {
|
static List<GeneratorType> getValues() {
|
||||||
throw new AssertionError();
|
throw new AssertionError();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
"mixins": [],
|
"mixins": [],
|
||||||
"client": [],
|
"client": [],
|
||||||
"server": [
|
"server": [
|
||||||
"GeneratorAccessor"
|
"GeneratorTypeAccessor"
|
||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
|
|||||||
Reference in New Issue
Block a user