more fabric stuff

This commit is contained in:
dfsek 2021-02-22 22:23:57 -07:00
parent 415df211ed
commit 98c1fea7fd
11 changed files with 57 additions and 18 deletions

View File

@ -21,6 +21,7 @@ public class BufferedStateManipulator implements BufferedItem {
state.update(false); state.update(false);
} catch(Exception e) { } catch(Exception e) {
main.getLogger().warning("Could not apply BlockState at " + origin + ": " + e.getMessage()); main.getLogger().warning("Could not apply BlockState at " + origin + ": " + e.getMessage());
main.getDebugLogger().stack(e);
} }
} }
} }

View File

@ -21,7 +21,6 @@ import com.dfsek.terra.api.registry.LockedRegistry;
import com.dfsek.terra.api.transform.NotNullValidator; import com.dfsek.terra.api.transform.NotNullValidator;
import com.dfsek.terra.api.transform.Transformer; import com.dfsek.terra.api.transform.Transformer;
import com.dfsek.terra.api.util.DebugLogger; import com.dfsek.terra.api.util.DebugLogger;
import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.api.world.tree.Tree; import com.dfsek.terra.api.world.tree.Tree;
import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.GenericLoaders;
@ -31,7 +30,6 @@ import com.dfsek.terra.config.lang.Language;
import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.ConfigPack;
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.mixin.GeneratorTypeAccessor;
import com.dfsek.terra.fabric.world.FabricAdapter;
import com.dfsek.terra.fabric.world.FabricBiome; import com.dfsek.terra.fabric.world.FabricBiome;
import com.dfsek.terra.fabric.world.FabricTree; import com.dfsek.terra.fabric.world.FabricTree;
import com.dfsek.terra.fabric.world.FabricWorldHandle; import com.dfsek.terra.fabric.world.FabricWorldHandle;
@ -103,6 +101,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
LogManager.getLogManager().addLogger(logger); LogManager.getLogManager().addLogger(logger);
this.logger = logger; this.logger = logger;
debugLogger = new DebugLogger(logger); debugLogger = new DebugLogger(logger);
debugLogger.setDebug(true);
} }
private final ItemHandle itemHandle = new FabricItemHandle(); private final ItemHandle itemHandle = new FabricItemHandle();
@ -148,7 +147,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
@Override @Override
public boolean isDebug() { public boolean isDebug() {
return false; return true;
} }
@Override @Override
@ -256,7 +255,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
@Override @Override
public void onInitialize() { public void onInitialize() {
logger.setLevel(Level.INFO); logger.setLevel(Level.INFO);
MaterialSet set = MaterialSet.get(FabricAdapter.adapt(Blocks.GRASS_BLOCK), FabricAdapter.adapt(Blocks.STONE));
instance = this; instance = this;

View File

@ -9,10 +9,12 @@ import com.dfsek.terra.fabric.world.block.data.FabricOrientable;
import com.dfsek.terra.fabric.world.block.data.FabricSlab; import com.dfsek.terra.fabric.world.block.data.FabricSlab;
import com.dfsek.terra.fabric.world.block.data.FabricStairs; import com.dfsek.terra.fabric.world.block.data.FabricStairs;
import com.dfsek.terra.fabric.world.block.data.FabricWaterlogged; import com.dfsek.terra.fabric.world.block.data.FabricWaterlogged;
import com.dfsek.terra.fabric.world.handles.world.FabricWorldHandle;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.state.property.Properties; import net.minecraft.state.property.Properties;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.WorldAccess;
import java.util.Arrays; import java.util.Arrays;
@ -42,4 +44,8 @@ public final class FabricAdapter {
return new FabricBlockType(block); return new FabricBlockType(block);
} }
public WorldAccess adapt(FabricWorldHandle worldHandle) {
return worldHandle.getWorld();
}
} }

View File

@ -7,6 +7,7 @@ import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.block.BlockType; import com.dfsek.terra.api.platform.block.BlockType;
import com.dfsek.terra.api.platform.block.state.BlockState; import com.dfsek.terra.api.platform.block.state.BlockState;
import com.dfsek.terra.fabric.world.FabricAdapter; import com.dfsek.terra.fabric.world.FabricAdapter;
import com.dfsek.terra.fabric.world.block.state.FabricBlockState;
import com.dfsek.terra.fabric.world.handles.world.FabricWorldAccess; import com.dfsek.terra.fabric.world.handles.world.FabricWorldAccess;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.WorldAccess; import net.minecraft.world.WorldAccess;
@ -30,7 +31,7 @@ public class FabricBlock implements Block {
@Override @Override
public BlockState getState() { public BlockState getState() {
return null; return FabricBlockState.newInstance(this);
} }
@Override @Override

View File

@ -6,26 +6,27 @@ import com.dfsek.terra.api.platform.block.state.BlockState;
import com.dfsek.terra.fabric.world.FabricAdapter; import com.dfsek.terra.fabric.world.FabricAdapter;
import com.dfsek.terra.fabric.world.block.FabricBlock; import com.dfsek.terra.fabric.world.block.FabricBlock;
import com.dfsek.terra.fabric.world.block.FabricBlockData; import com.dfsek.terra.fabric.world.block.FabricBlockData;
import com.dfsek.terra.fabric.world.handles.FabricWorld; import com.dfsek.terra.fabric.world.handles.world.FabricWorldHandle;
import net.minecraft.block.ChestBlock;
import net.minecraft.block.SignBlock; import net.minecraft.block.SignBlock;
import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.entity.BlockEntity;
import net.minecraft.block.entity.SignBlockEntity; import net.minecraft.block.entity.SignBlockEntity;
import net.minecraft.world.WorldAccess;
public class FabricBlockState implements BlockState { public class FabricBlockState implements BlockState {
protected final BlockEntity blockEntity; protected final BlockEntity blockEntity;
private final WorldAccess worldAccess;
public FabricBlockState(BlockEntity blockEntity) { public FabricBlockState(BlockEntity blockEntity, WorldAccess worldAccess) {
this.blockEntity = blockEntity; this.blockEntity = blockEntity;
this.worldAccess = worldAccess;
} }
public static FabricBlockState newInstance(Block block) { public static FabricBlockState newInstance(Block block) {
net.minecraft.block.Block block1 = ((FabricBlockData) block.getBlockData()).getHandle().getBlock(); net.minecraft.block.Block block1 = ((FabricBlockData) block.getBlockData()).getHandle().getBlock();
if(block1 instanceof SignBlock) { if(block1 instanceof SignBlock) {
return new FabricSign((SignBlockEntity) ((SignBlock) block1).createBlockEntity(((FabricWorld) block.getLocation().getWorld()).getHandle().getWorld())); SignBlockEntity signBlockEntity = (SignBlockEntity) ((SignBlock) block1).createBlockEntity(((FabricWorldHandle) block.getLocation().getWorld()).getWorld());
} signBlockEntity.setLocation(null, FabricAdapter.adapt(block.getLocation().toVector()));
if(block1 instanceof ChestBlock) { return new FabricSign(signBlockEntity, ((FabricWorldHandle) block.getLocation().getWorld()).getWorld());
return new FabricSign((SignBlockEntity) ((SignBlock) block1).createBlockEntity(((FabricWorld) block.getLocation().getWorld()).getHandle().getWorld()));
} }
return null; return null;
} }
@ -62,6 +63,7 @@ public class FabricBlockState implements BlockState {
@Override @Override
public boolean update(boolean applyPhysics) { public boolean update(boolean applyPhysics) {
(worldAccess).getChunk(blockEntity.getPos()).setBlockEntity(blockEntity.getPos(), blockEntity);
return true; return true;
} }
} }

View File

@ -3,11 +3,12 @@ package com.dfsek.terra.fabric.world.block.state;
import com.dfsek.terra.api.platform.block.state.Sign; import com.dfsek.terra.api.platform.block.state.Sign;
import net.minecraft.block.entity.SignBlockEntity; import net.minecraft.block.entity.SignBlockEntity;
import net.minecraft.text.LiteralText; import net.minecraft.text.LiteralText;
import net.minecraft.world.WorldAccess;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
public class FabricSign extends FabricBlockState implements Sign { public class FabricSign extends FabricBlockState implements Sign {
public FabricSign(SignBlockEntity blockEntity) { public FabricSign(SignBlockEntity blockEntity, WorldAccess worldAccess) {
super(blockEntity); super(blockEntity, worldAccess);
} }
@Override @Override

View File

@ -9,13 +9,15 @@ import com.dfsek.terra.api.platform.world.World;
import com.dfsek.terra.api.platform.world.generator.ChunkGenerator; import com.dfsek.terra.api.platform.world.generator.ChunkGenerator;
import com.dfsek.terra.fabric.world.block.FabricBlock; import com.dfsek.terra.fabric.world.block.FabricBlock;
import com.dfsek.terra.fabric.world.handles.chunk.FabricChunk; import com.dfsek.terra.fabric.world.handles.chunk.FabricChunk;
import com.dfsek.terra.fabric.world.handles.world.FabricWorldHandle;
import net.minecraft.server.world.ServerWorld; import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.WorldAccess;
import java.io.File; import java.io.File;
import java.util.UUID; import java.util.UUID;
public class FabricWorld implements World { public class FabricWorld implements World, FabricWorldHandle {
private final Handle delegate; private final Handle delegate;
@ -95,6 +97,11 @@ public class FabricWorld implements World {
return null; return null;
} }
@Override
public WorldAccess getWorld() {
return delegate.getWorld();
}
public static final class Handle { public static final class Handle {
private final ServerWorld world; private final ServerWorld world;
private final ChunkGenerator generator; private final ChunkGenerator generator;

View File

@ -15,7 +15,7 @@ import net.minecraft.world.WorldAccess;
import java.io.File; import java.io.File;
import java.util.UUID; import java.util.UUID;
public class FabricSeededWorldAccess implements World { public class FabricSeededWorldAccess implements World, FabricWorldHandle {
private final Handle handle; private final Handle handle;
@ -94,6 +94,11 @@ public class FabricSeededWorldAccess implements World {
return handle; return handle;
} }
@Override
public WorldAccess getWorld() {
return handle.worldAccess;
}
public static class Handle { public static class Handle {
private final WorldAccess worldAccess; private final WorldAccess worldAccess;
private final long seed; private final long seed;

View File

@ -17,7 +17,7 @@ import net.minecraft.world.WorldAccess;
import java.io.File; import java.io.File;
import java.util.UUID; import java.util.UUID;
public class FabricWorldAccess implements World { public class FabricWorldAccess implements World, FabricWorldHandle {
private final WorldAccess delegate; private final WorldAccess delegate;
public FabricWorldAccess(WorldAccess delegate) { public FabricWorldAccess(WorldAccess delegate) {
@ -84,4 +84,9 @@ public class FabricWorldAccess implements World {
public WorldAccess getHandle() { public WorldAccess getHandle() {
return delegate; return delegate;
} }
@Override
public WorldAccess getWorld() {
return delegate;
}
} }

View File

@ -11,11 +11,12 @@ import com.dfsek.terra.fabric.world.block.FabricBlock;
import com.dfsek.terra.fabric.world.generator.FabricChunkGenerator; import com.dfsek.terra.fabric.world.generator.FabricChunkGenerator;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.ChunkRegion; import net.minecraft.world.ChunkRegion;
import net.minecraft.world.WorldAccess;
import java.io.File; import java.io.File;
import java.util.UUID; import java.util.UUID;
public class FabricWorldChunkRegion implements World { public class FabricWorldChunkRegion implements World, FabricWorldHandle {
private final Handle delegate; private final Handle delegate;
public FabricWorldChunkRegion(ChunkRegion delegate, net.minecraft.world.gen.chunk.ChunkGenerator generator) { public FabricWorldChunkRegion(ChunkRegion delegate, net.minecraft.world.gen.chunk.ChunkGenerator generator) {
@ -94,6 +95,11 @@ public class FabricWorldChunkRegion implements World {
return null; return null;
} }
@Override
public WorldAccess getWorld() {
return delegate.chunk;
}
public static final class Handle { public static final class Handle {
private final ChunkRegion chunk; private final ChunkRegion chunk;
private final net.minecraft.world.gen.chunk.ChunkGenerator generator; private final net.minecraft.world.gen.chunk.ChunkGenerator generator;

View File

@ -0,0 +1,7 @@
package com.dfsek.terra.fabric.world.handles.world;
import net.minecraft.world.WorldAccess;
public interface FabricWorldHandle {
WorldAccess getWorld();
}