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
@@ -24,12 +24,11 @@ public class BukkitSign extends BukkitBlockState implements Sign {
((org.bukkit.block.Sign) getHandle()).setLine(index, line); ((org.bukkit.block.Sign) getHandle()).setLine(index, line);
} }
@Override @Override
public void applyState(String state) { public void applyState(String state) {
SerialState.parse(state).forEach((k, v) -> { SerialState.parse(state).forEach((k, v) -> {
if(!v.startsWith("text")) throw new IllegalArgumentException("Invalid property: " + k); if(!k.startsWith("text")) throw new IllegalArgumentException("Invalid property: " + k);
setLine(Integer.parseInt(k) + 1, v.substring(4)); setLine(Integer.parseInt(k.substring(4)), v);
}); });
} }
} }
@@ -67,6 +67,7 @@ import net.minecraft.world.gen.feature.FeatureConfig;
import net.minecraft.world.gen.surfacebuilder.SurfaceBuilder; import net.minecraft.world.gen.surfacebuilder.SurfaceBuilder;
import net.minecraft.world.gen.surfacebuilder.TernarySurfaceConfig; import net.minecraft.world.gen.surfacebuilder.TernarySurfaceConfig;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import org.apache.logging.log4j.LogManager;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@@ -93,19 +94,20 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
private final GenericLoaders genericLoaders = new GenericLoaders(this); private final GenericLoaders genericLoaders = new GenericLoaders(this);
private final Logger logger = new Logger() { private final Logger logger = new Logger() {
private final org.apache.logging.log4j.Logger logger = LogManager.getLogger();
@Override @Override
public void info(String message) { public void info(String message) {
logger.info(message);
} }
@Override @Override
public void warning(String message) { public void warning(String message) {
logger.warn(message);
} }
@Override @Override
public void severe(String message) { public void severe(String message) {
logger.error(message);
} }
}; };
private final DebugLogger debugLogger = new DebugLogger(logger); private final DebugLogger debugLogger = new DebugLogger(logger);
@@ -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.FabricBlock;
import com.dfsek.terra.fabric.world.block.FabricBlockData; import com.dfsek.terra.fabric.world.block.FabricBlockData;
import com.dfsek.terra.fabric.world.handles.world.FabricWorldHandle; 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.BlockEntity;
import net.minecraft.block.entity.SignBlockEntity; import net.minecraft.block.entity.SignBlockEntity;
import net.minecraft.world.WorldAccess; import net.minecraft.world.WorldAccess;
@@ -23,10 +23,11 @@ public class FabricBlockState implements BlockState {
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) { WorldAccess worldAccess = ((FabricWorldHandle) block.getLocation().getWorld()).getWorld();
SignBlockEntity signBlockEntity = (SignBlockEntity) ((SignBlock) block1).createBlockEntity(((FabricWorldHandle) block.getLocation().getWorld()).getWorld());
signBlockEntity.setLocation(null, FabricAdapter.adapt(block.getLocation().toVector())); if(block1 instanceof AbstractSignBlock) {
return new FabricSign(signBlockEntity, ((FabricWorldHandle) block.getLocation().getWorld()).getWorld()); SignBlockEntity signBlockEntity = (SignBlockEntity) worldAccess.getBlockEntity(FabricAdapter.adapt(block.getLocation().toVector()));
return new FabricSign(signBlockEntity, worldAccess);
} }
return null; return null;
} }
@@ -1,5 +1,6 @@
package com.dfsek.terra.fabric.world.block.state; 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 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;
@@ -13,7 +14,14 @@ public class FabricSign extends FabricBlockState implements Sign {
@Override @Override
public @NotNull String[] getLines() { 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 @Override
@@ -25,4 +33,12 @@ public class FabricSign extends FabricBlockState implements Sign {
public void setLine(int index, @NotNull String line) throws IndexOutOfBoundsException { public void setLine(int index, @NotNull String line) throws IndexOutOfBoundsException {
((SignBlockEntity) blockEntity).setTextOnRow(index, new LiteralText(line)); ((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);
});
}
} }