working FabricSign

This commit is contained in:
dfsek
2021-02-23 17:29:39 -07:00
parent 9c2b844290
commit 533380107b
4 changed files with 30 additions and 12 deletions

View File

@@ -24,12 +24,11 @@ public class BukkitSign extends BukkitBlockState implements Sign {
((org.bukkit.block.Sign) getHandle()).setLine(index, line);
}
@Override
public void applyState(String state) {
SerialState.parse(state).forEach((k, v) -> {
if(!v.startsWith("text")) throw new IllegalArgumentException("Invalid property: " + k);
setLine(Integer.parseInt(k) + 1, v.substring(4));
if(!k.startsWith("text")) throw new IllegalArgumentException("Invalid property: " + k);
setLine(Integer.parseInt(k.substring(4)), v);
});
}
}

View File

@@ -67,6 +67,7 @@ import net.minecraft.world.gen.feature.FeatureConfig;
import net.minecraft.world.gen.surfacebuilder.SurfaceBuilder;
import net.minecraft.world.gen.surfacebuilder.TernarySurfaceConfig;
import org.apache.commons.io.FileUtils;
import org.apache.logging.log4j.LogManager;
import java.io.File;
import java.io.IOException;
@@ -93,19 +94,20 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
private final GenericLoaders genericLoaders = new GenericLoaders(this);
private final Logger logger = new Logger() {
private final org.apache.logging.log4j.Logger logger = LogManager.getLogger();
@Override
public void info(String message) {
logger.info(message);
}
@Override
public void warning(String message) {
logger.warn(message);
}
@Override
public void severe(String message) {
logger.error(message);
}
};
private final DebugLogger debugLogger = new DebugLogger(logger);

View File

@@ -7,7 +7,7 @@ import com.dfsek.terra.fabric.world.FabricAdapter;
import com.dfsek.terra.fabric.world.block.FabricBlock;
import com.dfsek.terra.fabric.world.block.FabricBlockData;
import com.dfsek.terra.fabric.world.handles.world.FabricWorldHandle;
import net.minecraft.block.SignBlock;
import net.minecraft.block.AbstractSignBlock;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.block.entity.SignBlockEntity;
import net.minecraft.world.WorldAccess;
@@ -23,10 +23,11 @@ public class FabricBlockState implements BlockState {
public static FabricBlockState newInstance(Block block) {
net.minecraft.block.Block block1 = ((FabricBlockData) block.getBlockData()).getHandle().getBlock();
if(block1 instanceof SignBlock) {
SignBlockEntity signBlockEntity = (SignBlockEntity) ((SignBlock) block1).createBlockEntity(((FabricWorldHandle) block.getLocation().getWorld()).getWorld());
signBlockEntity.setLocation(null, FabricAdapter.adapt(block.getLocation().toVector()));
return new FabricSign(signBlockEntity, ((FabricWorldHandle) block.getLocation().getWorld()).getWorld());
WorldAccess worldAccess = ((FabricWorldHandle) block.getLocation().getWorld()).getWorld();
if(block1 instanceof AbstractSignBlock) {
SignBlockEntity signBlockEntity = (SignBlockEntity) worldAccess.getBlockEntity(FabricAdapter.adapt(block.getLocation().toVector()));
return new FabricSign(signBlockEntity, worldAccess);
}
return null;
}

View File

@@ -1,5 +1,6 @@
package com.dfsek.terra.fabric.world.block.state;
import com.dfsek.terra.api.platform.block.state.SerialState;
import com.dfsek.terra.api.platform.block.state.Sign;
import net.minecraft.block.entity.SignBlockEntity;
import net.minecraft.text.LiteralText;
@@ -13,7 +14,14 @@ public class FabricSign extends FabricBlockState implements Sign {
@Override
public @NotNull String[] getLines() {
return new String[0];
SignBlockEntity sign = (SignBlockEntity) blockEntity;
return new String[] {
sign.getTextOnRow(0).asString(),
sign.getTextOnRow(1).asString(),
sign.getTextOnRow(2).asString(),
sign.getTextOnRow(3).asString()
};
}
@Override
@@ -25,4 +33,12 @@ public class FabricSign extends FabricBlockState implements Sign {
public void setLine(int index, @NotNull String line) throws IndexOutOfBoundsException {
((SignBlockEntity) blockEntity).setTextOnRow(index, new LiteralText(line));
}
@Override
public void applyState(String state) {
SerialState.parse(state).forEach((k, v) -> {
if(!k.startsWith("text")) throw new IllegalArgumentException("Invalid property: " + k);
setLine(Integer.parseInt(k.substring(4)), v);
});
}
}