diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java index 6b90ec18f..fe19fac78 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java @@ -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); }); } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java index 1e99898bb..8dc0a1c06 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java @@ -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); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricBlockState.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricBlockState.java index a076f5ec5..09c09ed95 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricBlockState.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricBlockState.java @@ -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; } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricSign.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricSign.java index c5b3a291f..382e05387 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricSign.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricSign.java @@ -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); + }); + } }