BlockData -> BlockState

This commit is contained in:
dfsek
2021-06-25 19:13:42 -07:00
parent 002c7037f1
commit a3cbf9a945
90 changed files with 318 additions and 326 deletions

View File

@@ -9,7 +9,7 @@ import com.dfsek.terra.api.addon.TerraAddon;
import com.dfsek.terra.api.addon.annotations.Addon;
import com.dfsek.terra.api.addon.annotations.Author;
import com.dfsek.terra.api.addon.annotations.Version;
import com.dfsek.terra.api.block.BlockData;
import com.dfsek.terra.api.block.BlockState;
import com.dfsek.terra.api.command.CommandManager;
import com.dfsek.terra.api.command.TerraCommandManager;
import com.dfsek.terra.api.command.exception.MalformedCommandException;
@@ -235,7 +235,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
public void register(TypeRegistry registry) {
genericLoaders.register(registry);
registry
.registerLoader(BlockData.class, (t, o, l) -> worldHandle.createBlockData((String) o))
.registerLoader(BlockState.class, (t, o, l) -> worldHandle.createBlockData((String) o))
.registerLoader(com.dfsek.terra.api.world.biome.Biome.class, (t, o, l) -> parseBiome((String) o))
.registerLoader(Identifier.class, (t, o, l) -> {
Identifier identifier = Identifier.tryParse((String) o);

View File

@@ -1,18 +1,17 @@
package com.dfsek.terra.fabric.block;
import com.dfsek.terra.api.block.BlockData;
import com.dfsek.terra.api.block.BlockState;
import com.dfsek.terra.api.block.BlockType;
import com.dfsek.terra.fabric.mixin.access.StateAccessor;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.util.registry.Registry;
import java.util.stream.Collectors;
public class FabricBlockData implements BlockData {
protected BlockState delegate;
public class FabricBlockState implements BlockState {
protected net.minecraft.block.BlockState delegate;
public FabricBlockData(BlockState delegate) {
public FabricBlockState(net.minecraft.block.BlockState delegate) {
this.delegate = delegate;
}
@@ -22,14 +21,14 @@ public class FabricBlockData implements BlockData {
}
@Override
public boolean matches(BlockData other) {
return delegate.getBlock() == ((FabricBlockData) other).delegate.getBlock();
public boolean matches(BlockState other) {
return delegate.getBlock() == ((FabricBlockState) other).delegate.getBlock();
}
@Override
public BlockData clone() {
public BlockState clone() {
try {
return (FabricBlockData) super.clone();
return (FabricBlockState) super.clone();
} catch(CloneNotSupportedException e) {
throw new Error(e);
}
@@ -57,7 +56,7 @@ public class FabricBlockData implements BlockData {
}
@Override
public BlockState getHandle() {
public net.minecraft.block.BlockState getHandle() {
return delegate;
}
}

View File

@@ -1,13 +1,13 @@
package com.dfsek.terra.fabric.block.data;
import com.dfsek.terra.api.block.data.AnaloguePowerable;
import com.dfsek.terra.fabric.block.FabricBlockData;
import com.dfsek.terra.fabric.block.FabricBlockState;
import net.minecraft.block.BlockState;
/**
* None of this actually has implementation, TODO: implement this if we ever end up needing it.
*/
public class FabricAnaloguePowerable extends FabricBlockData implements AnaloguePowerable {
public class FabricAnaloguePowerable extends FabricBlockState implements AnaloguePowerable {
public FabricAnaloguePowerable(BlockState delegate) {
super(delegate);
}

View File

@@ -2,12 +2,12 @@ package com.dfsek.terra.fabric.block.data;
import com.dfsek.terra.api.block.BlockFace;
import com.dfsek.terra.api.block.data.Directional;
import com.dfsek.terra.fabric.block.FabricBlockData;
import com.dfsek.terra.fabric.block.FabricBlockState;
import com.dfsek.terra.fabric.util.FabricAdapter;
import net.minecraft.block.BlockState;
import net.minecraft.state.property.DirectionProperty;
public class FabricDirectional extends FabricBlockData implements Directional {
public class FabricDirectional extends FabricBlockState implements Directional {
private final DirectionProperty property;
public FabricDirectional(BlockState delegate, DirectionProperty property) {

View File

@@ -2,14 +2,14 @@ package com.dfsek.terra.fabric.block.data;
import com.dfsek.terra.api.block.BlockFace;
import com.dfsek.terra.api.block.data.MultipleFacing;
import com.dfsek.terra.fabric.block.FabricBlockData;
import com.dfsek.terra.fabric.block.FabricBlockState;
import net.minecraft.block.BlockState;
import net.minecraft.state.property.Properties;
import java.util.HashSet;
import java.util.Set;
public class FabricMultipleFacing extends FabricBlockData implements MultipleFacing {
public class FabricMultipleFacing extends FabricBlockState implements MultipleFacing {
public FabricMultipleFacing(BlockState delegate) {
super(delegate);
}

View File

@@ -2,7 +2,7 @@ package com.dfsek.terra.fabric.block.data;
import com.dfsek.terra.api.block.Axis;
import com.dfsek.terra.api.block.data.Orientable;
import com.dfsek.terra.fabric.block.FabricBlockData;
import com.dfsek.terra.fabric.block.FabricBlockState;
import com.dfsek.terra.fabric.util.FabricAdapter;
import net.minecraft.block.BlockState;
import net.minecraft.state.property.EnumProperty;
@@ -12,7 +12,7 @@ import java.util.Arrays;
import java.util.Set;
import java.util.stream.Collectors;
public class FabricOrientable extends FabricBlockData implements Orientable {
public class FabricOrientable extends FabricBlockState implements Orientable {
private final EnumProperty<Direction.Axis> property;
public FabricOrientable(BlockState delegate, EnumProperty<Direction.Axis> property) {

View File

@@ -2,11 +2,11 @@ package com.dfsek.terra.fabric.block.data;
import com.dfsek.terra.api.block.BlockFace;
import com.dfsek.terra.api.block.data.Rotatable;
import com.dfsek.terra.fabric.block.FabricBlockData;
import com.dfsek.terra.fabric.block.FabricBlockState;
import net.minecraft.block.BlockState;
import net.minecraft.state.property.Properties;
public class FabricRotatable extends FabricBlockData implements Rotatable {
public class FabricRotatable extends FabricBlockState implements Rotatable {
public FabricRotatable(BlockState delegate) {
super(delegate);
}

View File

@@ -1,11 +1,11 @@
package com.dfsek.terra.fabric.block.data;
import com.dfsek.terra.api.block.data.Waterlogged;
import com.dfsek.terra.fabric.block.FabricBlockData;
import com.dfsek.terra.fabric.block.FabricBlockState;
import net.minecraft.block.BlockState;
import net.minecraft.state.property.Properties;
public class FabricWaterlogged extends FabricBlockData implements Waterlogged {
public class FabricWaterlogged extends FabricBlockState implements Waterlogged {
public FabricWaterlogged(BlockState delegate) {
super(delegate);
}

View File

@@ -10,7 +10,7 @@ import com.dfsek.terra.api.world.generator.GeneratorWrapper;
import com.dfsek.terra.api.world.generator.TerraChunkGenerator;
import com.dfsek.terra.api.world.locate.AsyncStructureFinder;
import com.dfsek.terra.fabric.TerraFabricPlugin;
import com.dfsek.terra.fabric.block.FabricBlockData;
import com.dfsek.terra.fabric.block.FabricBlockState;
import com.dfsek.terra.fabric.mixin.StructureAccessorAccessor;
import com.dfsek.terra.fabric.util.FabricAdapter;
import com.dfsek.terra.world.generation.generators.DefaultChunkGenerator3D;
@@ -177,7 +177,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener
public int getHeight(int x, int z, Heightmap.Type heightmap, HeightLimitView heightmapType) {
TerraWorld world = TerraFabricPlugin.getInstance().getWorld(dimensionType);
int height = world.getWorld().getMaxHeight();
while(height >= world.getWorld().getMinHeight() && !heightmap.getBlockPredicate().test(((FabricBlockData) world.getUngeneratedBlock(x, height - 1, z)).getHandle())) {
while(height >= world.getWorld().getMinHeight() && !heightmap.getBlockPredicate().test(((FabricBlockState) world.getUngeneratedBlock(x, height - 1, z)).getHandle())) {
height--;
}
return height;
@@ -188,7 +188,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener
TerraWorld world = TerraFabricPlugin.getInstance().getWorld(dimensionType);
BlockState[] array = new BlockState[view.getHeight()];
for(int y = view.getBottomY() + view.getHeight() - 1; y >= view.getBottomY(); y--) {
array[y] = ((FabricBlockData) world.getUngeneratedBlock(x, y, z)).getHandle();
array[y] = ((FabricBlockState) world.getUngeneratedBlock(x, y, z)).getHandle();
}
return new VerticalBlockSample(view.getBottomY(), array);
}

View File

@@ -5,7 +5,7 @@ import com.dfsek.terra.api.entity.Player;
import com.dfsek.terra.api.handle.WorldHandle;
import com.dfsek.terra.api.util.generic.pair.Pair;
import com.dfsek.terra.api.vector.Vector3;
import com.dfsek.terra.fabric.block.FabricBlockData;
import com.dfsek.terra.fabric.block.FabricBlockState;
import com.dfsek.terra.fabric.util.FabricAdapter;
import com.dfsek.terra.fabric.util.WorldEditUtil;
import com.mojang.brigadier.StringReader;
@@ -20,7 +20,7 @@ import java.util.Locale;
public class FabricWorldHandle implements WorldHandle {
@Override
public FabricBlockData createBlockData(String data) {
public FabricBlockState createBlockData(String data) {
BlockArgumentParser parser = new BlockArgumentParser(new StringReader(data), true);
try {
BlockState state = parser.parse(true).getBlockState();

View File

@@ -1,6 +1,6 @@
package com.dfsek.terra.fabric.mixin.implementations.block;
import com.dfsek.terra.api.block.BlockData;
import com.dfsek.terra.api.block.BlockState;
import com.dfsek.terra.api.block.state.BlockEntity;
import com.dfsek.terra.fabric.util.FabricAdapter;
import net.minecraft.util.math.BlockPos;
@@ -46,7 +46,7 @@ public abstract class BlockEntityMixin {
return pos.getZ();
}
public BlockData terra$getBlockData() {
public BlockState terra$getBlockData() {
return FabricAdapter.adapt(getCachedState());
}

View File

@@ -1,10 +1,9 @@
package com.dfsek.terra.fabric.mixin.implementations.block;
import com.dfsek.terra.api.block.BlockData;
import com.dfsek.terra.api.block.BlockState;
import com.dfsek.terra.api.block.BlockType;
import com.dfsek.terra.fabric.util.FabricAdapter;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import org.spongepowered.asm.mixin.Implements;
import org.spongepowered.asm.mixin.Interface;
@@ -16,14 +15,14 @@ import org.spongepowered.asm.mixin.Shadow;
@Implements(@Interface(iface = BlockType.class, prefix = "terra$", remap = Interface.Remap.NONE))
public abstract class BlockMixin {
@Shadow
private BlockState defaultState;
private net.minecraft.block.BlockState defaultState;
@Intrinsic
public Object terra$getHandle() {
return this;
}
public BlockData terra$getDefaultData() {
public BlockState terra$getDefaultData() {
return FabricAdapter.adapt(defaultState);
}

View File

@@ -1,9 +1,9 @@
package com.dfsek.terra.fabric.mixin.implementations.chunk;
import com.dfsek.terra.api.block.BlockData;
import com.dfsek.terra.api.block.BlockState;
import com.dfsek.terra.api.world.Chunk;
import com.dfsek.terra.api.world.World;
import com.dfsek.terra.fabric.block.FabricBlockData;
import com.dfsek.terra.fabric.block.FabricBlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.ChunkPos;
import net.minecraft.world.ChunkRegion;
@@ -33,12 +33,12 @@ public abstract class ChunkRegionMixin {
return (World) this;
}
public @NotNull BlockData terraChunk$getBlock(int x, int y, int z) {
return new FabricBlockData(((ChunkRegion) (Object) this).getBlockState(new BlockPos(x + (centerPos.x << 4), y, z + (centerPos.z << 4))));
public @NotNull BlockState terraChunk$getBlock(int x, int y, int z) {
return new FabricBlockState(((ChunkRegion) (Object) this).getBlockState(new BlockPos(x + (centerPos.x << 4), y, z + (centerPos.z << 4))));
}
public void terraChunk$setBlock(int x, int y, int z, @NotNull BlockData blockData, boolean physics) {
((ChunkRegion) (Object) this).setBlockState(new BlockPos(x + (centerPos.x << 4), y, z + (centerPos.z << 4)), ((FabricBlockData) blockData).getHandle(), 0);
public void terraChunk$setBlock(int x, int y, int z, @NotNull BlockState blockState, boolean physics) {
((ChunkRegion) (Object) this).setBlockState(new BlockPos(x + (centerPos.x << 4), y, z + (centerPos.z << 4)), ((FabricBlockState) blockState).getHandle(), 0);
}
// getHandle already added in world/ChunkRegionMixin.

View File

@@ -1,10 +1,9 @@
package com.dfsek.terra.fabric.mixin.implementations.chunk;
import com.dfsek.terra.api.block.BlockData;
import com.dfsek.terra.api.block.BlockState;
import com.dfsek.terra.api.world.Chunk;
import com.dfsek.terra.api.world.World;
import com.dfsek.terra.fabric.block.FabricBlockData;
import net.minecraft.block.BlockState;
import com.dfsek.terra.fabric.block.FabricBlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.chunk.WorldChunk;
import org.jetbrains.annotations.NotNull;
@@ -24,11 +23,11 @@ public abstract class WorldChunkMixin {
private net.minecraft.world.World world;
@Shadow
public abstract BlockState getBlockState(BlockPos pos);
public abstract net.minecraft.block.BlockState getBlockState(BlockPos pos);
@Shadow
@Nullable
public abstract BlockState setBlockState(BlockPos pos, BlockState state, boolean moved);
public abstract net.minecraft.block.BlockState setBlockState(BlockPos pos, net.minecraft.block.BlockState state, boolean moved);
public int terra$getX() {
return ((net.minecraft.world.chunk.Chunk) this).getPos().x;
@@ -42,16 +41,16 @@ public abstract class WorldChunkMixin {
return (World) world;
}
public @NotNull BlockData terra$getBlock(int x, int y, int z) {
return new FabricBlockData(getBlockState(new BlockPos(x, y, z)));
public @NotNull BlockState terra$getBlock(int x, int y, int z) {
return new FabricBlockState(getBlockState(new BlockPos(x, y, z)));
}
public void terra$setBlock(int x, int y, int z, BlockData data, boolean physics) {
setBlockState(new BlockPos(x, y, z), ((FabricBlockData) data).getHandle(), false);
public void terra$setBlock(int x, int y, int z, BlockState data, boolean physics) {
setBlockState(new BlockPos(x, y, z), ((FabricBlockState) data).getHandle(), false);
}
public void terra$setBlock(int x, int y, int z, @NotNull BlockData blockData) {
((net.minecraft.world.chunk.Chunk) this).setBlockState(new BlockPos(x, y, z), ((FabricBlockData) blockData).getHandle(), false);
public void terra$setBlock(int x, int y, int z, @NotNull BlockState blockState) {
((net.minecraft.world.chunk.Chunk) this).setBlockState(new BlockPos(x, y, z), ((FabricBlockState) blockState).getHandle(), false);
}
@Intrinsic

View File

@@ -1,9 +1,8 @@
package com.dfsek.terra.fabric.mixin.implementations.chunk.data;
import com.dfsek.terra.api.block.BlockData;
import com.dfsek.terra.api.block.BlockState;
import com.dfsek.terra.api.world.generator.ChunkData;
import com.dfsek.terra.fabric.block.FabricBlockData;
import net.minecraft.block.BlockState;
import com.dfsek.terra.fabric.block.FabricBlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.chunk.ProtoChunk;
import org.jetbrains.annotations.NotNull;
@@ -17,14 +16,14 @@ import org.spongepowered.asm.mixin.Shadow;
@Implements(@Interface(iface = ChunkData.class, prefix = "terra$", remap = Interface.Remap.NONE))
public abstract class ProtoChunkMixin {
@Shadow
public abstract BlockState getBlockState(BlockPos pos);
public abstract net.minecraft.block.BlockState getBlockState(BlockPos pos);
public @NotNull BlockData terra$getBlock(int x, int y, int z) {
return new FabricBlockData(getBlockState(new BlockPos(x, y, z)));
public @NotNull BlockState terra$getBlock(int x, int y, int z) {
return new FabricBlockState(getBlockState(new BlockPos(x, y, z)));
}
public void terra$setBlock(int x, int y, int z, @NotNull BlockData blockData) {
((net.minecraft.world.chunk.Chunk) this).setBlockState(new BlockPos(x, y, z), ((FabricBlockData) blockData).getHandle(), false);
public void terra$setBlock(int x, int y, int z, @NotNull BlockState blockState) {
((net.minecraft.world.chunk.Chunk) this).setBlockState(new BlockPos(x, y, z), ((FabricBlockState) blockState).getHandle(), false);
}
@Intrinsic

View File

@@ -1,6 +1,6 @@
package com.dfsek.terra.fabric.mixin.implementations.world;
import com.dfsek.terra.api.block.BlockData;
import com.dfsek.terra.api.block.BlockState;
import com.dfsek.terra.api.block.state.BlockEntity;
import com.dfsek.terra.api.entity.Entity;
import com.dfsek.terra.api.entity.EntityType;
@@ -10,10 +10,9 @@ import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.world.generator.ChunkGenerator;
import com.dfsek.terra.api.world.generator.GeneratorWrapper;
import com.dfsek.terra.api.world.generator.TerraChunkGenerator;
import com.dfsek.terra.fabric.block.FabricBlockData;
import com.dfsek.terra.fabric.block.FabricBlockState;
import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper;
import com.dfsek.terra.fabric.util.FabricUtil;
import net.minecraft.block.BlockState;
import net.minecraft.block.FluidBlock;
import net.minecraft.fluid.Fluid;
import net.minecraft.server.world.ServerWorld;
@@ -41,7 +40,7 @@ public abstract class ChunkRegionMixin {
private long seed;
@Shadow
public abstract boolean setBlockState(BlockPos pos, BlockState state, int flags, int maxUpdateDepth);
public abstract boolean setBlockState(BlockPos pos, net.minecraft.block.BlockState state, int flags, int maxUpdateDepth);
@Shadow
public abstract TickScheduler<Fluid> getFluidTickScheduler();
@@ -72,17 +71,17 @@ public abstract class ChunkRegionMixin {
}
@Intrinsic(displace = true)
public BlockData terraWorld$getBlockData(int x, int y, int z) {
public BlockState terraWorld$getBlockData(int x, int y, int z) {
BlockPos pos = new BlockPos(x, y, z);
return new FabricBlockData(((ChunkRegion) (Object) this).getBlockState(pos));
return new FabricBlockState(((ChunkRegion) (Object) this).getBlockState(pos));
}
@Intrinsic(displace = true)
public void terraWorld$setBlockData(int x, int y, int z, BlockData data, boolean physics) {
public void terraWorld$setBlockData(int x, int y, int z, BlockState data, boolean physics) {
BlockPos pos = new BlockPos(x, y, z);
((ChunkRegion) (Object) this).setBlockState(pos, ((FabricBlockData) data).getHandle(), physics ? 3 : 1042);
if(physics && ((FabricBlockData) data).getHandle().getBlock() instanceof FluidBlock) {
getFluidTickScheduler().schedule(pos, ((FluidBlock) ((FabricBlockData) data).getHandle().getBlock()).getFluidState(((FabricBlockData) data).getHandle()).getFluid(), 0);
((ChunkRegion) (Object) this).setBlockState(pos, ((FabricBlockState) data).getHandle(), physics ? 3 : 1042);
if(physics && ((FabricBlockState) data).getHandle().getBlock() instanceof FluidBlock) {
getFluidTickScheduler().schedule(pos, ((FluidBlock) ((FabricBlockState) data).getHandle().getBlock()).getFluidState(((FabricBlockState) data).getHandle()).getFluid(), 0);
}
}

View File

@@ -1,6 +1,6 @@
package com.dfsek.terra.fabric.mixin.implementations.world;
import com.dfsek.terra.api.block.BlockData;
import com.dfsek.terra.api.block.BlockState;
import com.dfsek.terra.api.block.state.BlockEntity;
import com.dfsek.terra.api.entity.Entity;
import com.dfsek.terra.api.entity.EntityType;
@@ -10,7 +10,7 @@ import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.world.generator.ChunkGenerator;
import com.dfsek.terra.api.world.generator.GeneratorWrapper;
import com.dfsek.terra.api.world.generator.TerraChunkGenerator;
import com.dfsek.terra.fabric.block.FabricBlockData;
import com.dfsek.terra.fabric.block.FabricBlockState;
import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper;
import com.dfsek.terra.fabric.util.FabricUtil;
import net.minecraft.server.world.ServerWorld;
@@ -45,13 +45,13 @@ public abstract class ServerWorldMixin {
return FabricUtil.createState((WorldAccess) this, new BlockPos(x, y, z));
}
public BlockData terra$getBlockData(int x, int y, int z) {
return new FabricBlockData(((ServerWorld) (Object) this).getBlockState(new BlockPos(x, y, z)));
public BlockState terra$getBlockData(int x, int y, int z) {
return new FabricBlockState(((ServerWorld) (Object) this).getBlockState(new BlockPos(x, y, z)));
}
public void terra$setBlockData(int x, int y, int z, BlockData data, boolean physics) {
public void terra$setBlockData(int x, int y, int z, BlockState data, boolean physics) {
BlockPos pos = new BlockPos(x, y, z);
((ServerWorld) (Object) this).setBlockState(pos, ((FabricBlockData) data).getHandle(), physics ? 3 : 1042);
((ServerWorld) (Object) this).setBlockState(pos, ((FabricBlockState) data).getHandle(), physics ? 3 : 1042);
}
public Entity terra$spawnEntity(Vector3 location, EntityType entityType) {

View File

@@ -6,7 +6,7 @@ import com.dfsek.terra.api.block.data.Bisected;
import com.dfsek.terra.api.block.data.Slab;
import com.dfsek.terra.api.block.data.Stairs;
import com.dfsek.terra.api.vector.Vector3;
import com.dfsek.terra.fabric.block.FabricBlockData;
import com.dfsek.terra.fabric.block.FabricBlockState;
import com.dfsek.terra.fabric.block.data.FabricDirectional;
import com.dfsek.terra.fabric.block.data.FabricMultipleFacing;
import com.dfsek.terra.fabric.block.data.FabricOrientable;
@@ -34,7 +34,7 @@ public final class FabricAdapter {
return new Vector3Impl(pos.getX(), pos.getY(), pos.getZ());
}
public static FabricBlockData adapt(BlockState state) {
public static FabricBlockState adapt(BlockState state) {
if(state.contains(Properties.STAIR_SHAPE)) return new FabricStairs(state);
if(state.contains(Properties.SLAB_TYPE)) return new FabricSlab(state);
@@ -51,7 +51,7 @@ public final class FabricAdapter {
if(state.getProperties().containsAll(Arrays.asList(Properties.NORTH, Properties.SOUTH, Properties.EAST, Properties.WEST)))
return new FabricMultipleFacing(state);
if(state.contains(Properties.WATERLOGGED)) return new FabricWaterlogged(state);
return new FabricBlockData(state);
return new FabricBlockState(state);
}
public static Direction adapt(BlockFace face) {