put vector3 in class in API

This commit is contained in:
dfsek
2021-06-30 10:39:03 -07:00
parent abd3683a49
commit bf5e8d903c
107 changed files with 552 additions and 544 deletions

View File

@@ -1,8 +1,11 @@
package com.dfsek.terra.fabric;
import com.dfsek.tectonic.abstraction.TemplateProvider;
import com.dfsek.tectonic.exception.ConfigException;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.TypeLoader;
import com.dfsek.tectonic.loading.TypeRegistry;
import com.dfsek.tectonic.loading.object.ObjectTemplate;
import com.dfsek.terra.api.Logger;
import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.addon.TerraAddon;
@@ -77,8 +80,13 @@ import org.apache.logging.log4j.LogManager;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.BiConsumer;
import java.util.function.Supplier;
public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
@@ -88,6 +96,9 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
private static TerraFabricPlugin instance;
private final Map<DimensionType, Pair<ServerWorld, TerraWorld>> worldMap = new HashMap<>();
private final Map<Type, TypeLoader<?>> loaders = new HashMap<>();
private final Map<Type, TemplateProvider<ObjectTemplate<?>>> objectLoaders = new HashMap<>();
public Map<DimensionType, Pair<ServerWorld, TerraWorld>> getWorldMap() {
return worldMap;
}
@@ -231,6 +242,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
return debugLogger;
}
@SuppressWarnings("unchecked")
@Override
public void register(TypeRegistry registry) {
genericLoaders.register(registry);
@@ -242,6 +254,8 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
if(identifier == null) throw new LoadException("Invalid identifier: " + o);
return identifier;
});
loaders.forEach(registry::registerLoader);
objectLoaders.forEach((t, l) -> registry.registerLoader(t, (TemplateProvider<ObjectTemplate<Object>>) ((Object) l)));
}
@Override
@@ -290,6 +304,19 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
return profiler;
}
@Override
public <T> TerraFabricPlugin applyLoader(Type type, TypeLoader<T> loader) {
loaders.put(type, loader);
return this;
}
@SuppressWarnings("unchecked")
@Override
public <T> TerraFabricPlugin applyLoader(Type type, TemplateProvider<ObjectTemplate<T>> loader) {
objectLoaders.put(type, (TemplateProvider<ObjectTemplate<?>>) ((Object) loader));
return this;
}
@Addon("Terra-Fabric")
@Author("Terra")
@Version("1.0.0")

View File

@@ -7,7 +7,6 @@ import com.dfsek.terra.api.block.state.properties.enums.RedstoneConnection;
import com.dfsek.terra.api.block.state.properties.enums.WallHeight;
import com.dfsek.terra.api.vector.Vector3;
import com.dfsek.terra.fabric.block.FabricBlockState;
import com.dfsek.terra.vector.Vector3Impl;
import net.minecraft.block.BlockState;
import net.minecraft.block.enums.BlockHalf;
import net.minecraft.block.enums.WallShape;
@@ -21,7 +20,7 @@ public final class FabricAdapter {
}
public static Vector3 adapt(BlockPos pos) {
return new Vector3Impl(pos.getX(), pos.getY(), pos.getZ());
return new Vector3(pos.getX(), pos.getY(), pos.getZ());
}
public static FabricBlockState adapt(BlockState state) {

View File

@@ -3,7 +3,6 @@ package com.dfsek.terra.fabric.util;
import com.dfsek.terra.api.entity.Player;
import com.dfsek.terra.api.util.generic.pair.Pair;
import com.dfsek.terra.api.vector.Vector3;
import com.dfsek.terra.vector.Vector3Impl;
import com.sk89q.worldedit.IncompleteRegionException;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.math.BlockVector3;
@@ -20,8 +19,8 @@ public final class WorldEditUtil {
.getSelection(com.sk89q.worldedit.fabric.FabricAdapter.adapt((World) player.world()));
BlockVector3 min = selection.getMinimumPoint();
BlockVector3 max = selection.getMaximumPoint();
Vector3 l1 = new Vector3Impl(min.getBlockX(), min.getBlockY(), min.getBlockZ());
Vector3 l2 = new Vector3Impl(max.getBlockX(), max.getBlockY(), max.getBlockZ());
Vector3 l1 = new Vector3(min.getBlockX(), min.getBlockY(), min.getBlockZ());
Vector3 l2 = new Vector3(max.getBlockX(), max.getBlockY(), max.getBlockZ());
return Pair.of(l1, l2);
} catch(IncompleteRegionException e) {
throw new IllegalStateException("No selection has been made", e);