mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-04-13 03:06:10 +00:00
Fabric stuff still doesnt work, but eh
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -138,4 +138,3 @@ build
|
||||
!lib/*.jar
|
||||
.idea/Terra.iml
|
||||
/run/
|
||||
/run/
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
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.generic.Entity;
|
||||
import com.dfsek.terra.api.generic.TerraPlugin;
|
||||
@@ -13,11 +12,10 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
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 List<EntitySpawnHolder> entities = new GlueList<>();
|
||||
private final Location origin;
|
||||
@@ -111,14 +109,4 @@ public abstract class FractalTree implements Tree {
|
||||
public MaterialData getMaterial(Location l) {
|
||||
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) {
|
||||
boolean valid = true;
|
||||
File packsFolder = new File(main.getDataFolder(), "packs");
|
||||
packsFolder.mkdirs();
|
||||
for(File dir : packsFolder.listFiles(File::isDirectory)) {
|
||||
try {
|
||||
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.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> {
|
||||
private final TerraPlugin main;
|
||||
|
||||
public TreeRegistry(TerraPlugin main) {
|
||||
this.main = main;
|
||||
addTree("ACACIA");
|
||||
addTree("BIRCH");
|
||||
addTree("BROWN_MUSHROOM");
|
||||
}
|
||||
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
||||
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.config.base.PluginConfig;
|
||||
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 net.fabricmc.api.ModInitializer;
|
||||
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 java.io.File;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
@@ -40,10 +40,12 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
||||
};
|
||||
private final Logger logger = Logger.getLogger("Terra");
|
||||
private final ItemHandle itemHandle = new FabricItemHandle();
|
||||
private final WorldHandle worldHandle = new FabricWorldHandle();
|
||||
private final ConfigRegistry registry = new ConfigRegistry();
|
||||
|
||||
@Override
|
||||
public WorldHandle getWorldHandle() {
|
||||
return null;
|
||||
return worldHandle;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -68,7 +70,12 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
||||
|
||||
@Override
|
||||
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
|
||||
@@ -83,7 +90,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
||||
|
||||
@Override
|
||||
public ConfigRegistry getRegistry() {
|
||||
return null;
|
||||
return registry;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -93,7 +100,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
||||
|
||||
@Override
|
||||
public ItemHandle getItemHandle() {
|
||||
return null;
|
||||
return itemHandle;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -101,24 +108,11 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
||||
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,9 +7,9 @@ import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
import java.util.List;
|
||||
|
||||
@Mixin(GeneratorType.class)
|
||||
public class GeneratorAccessor {
|
||||
public interface GeneratorTypeAccessor {
|
||||
@Accessor("VALUES")
|
||||
public static List<GeneratorType> getValues() {
|
||||
static List<GeneratorType> getValues() {
|
||||
throw new AssertionError();
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@
|
||||
"mixins": [],
|
||||
"client": [],
|
||||
"server": [
|
||||
"GeneratorAccessor"
|
||||
"GeneratorTypeAccessor"
|
||||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
|
||||
Reference in New Issue
Block a user