diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java b/common/api/core/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java index b32874428..a44299f05 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java @@ -12,17 +12,22 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.util.vector.Vector3; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.NotNull; + /** * Interface to be implemented for world manipulation. */ public interface WorldHandle { - BlockState createBlockData(String data); + @NotNull + @Contract("_ -> new") + BlockState createBlockData(@NotNull String data); + @NotNull + @Contract(pure = true) BlockState air(); - BlockEntity createBlockEntity(Vector3 location, BlockState block, String snbt); - - EntityType getEntity(String id); - + @NotNull + EntityType getEntity(@NotNull String id); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java index d1b4f9613..17140d77b 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java @@ -23,14 +23,14 @@ import org.bukkit.Material; import java.util.Locale; -import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.handle.WorldHandle; -import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; import com.dfsek.terra.bukkit.world.entity.BukkitEntityType; +import org.jetbrains.annotations.NotNull; + public class BukkitWorldHandle implements WorldHandle { private final BlockState air; @@ -40,23 +40,18 @@ public class BukkitWorldHandle implements WorldHandle { } @Override - public BlockState createBlockData(String data) { + public @NotNull BlockState createBlockData(@NotNull String data) { org.bukkit.block.data.BlockData bukkitData = Bukkit.createBlockData(data); return BukkitBlockState.newInstance(bukkitData); } @Override - public BlockState air() { + public @NotNull BlockState air() { return air; } @Override - public BlockEntity createBlockEntity(Vector3 location, BlockState block, String snbt) { - return null; - } - - @Override - public EntityType getEntity(String id) { + public @NotNull EntityType getEntity(String id) { if(!id.startsWith("minecraft:")) throw new LoadException("Invalid entity identifier " + id); return new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(id.toUpperCase(Locale.ROOT).substring(10))); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java index 94440ad1f..f2eb98dd2 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java @@ -22,24 +22,23 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.command.argument.BlockArgumentParser; -import net.minecraft.nbt.StringNbtReader; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; -import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.handle.WorldHandle; -import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.util.FabricAdapter; +import org.jetbrains.annotations.NotNull; + public class FabricWorldHandle implements WorldHandle { private static final com.dfsek.terra.api.block.state.BlockState AIR = FabricAdapter.adapt(Blocks.AIR.getDefaultState()); @Override - public FabricBlockState createBlockData(String data) { + public @NotNull FabricBlockState createBlockData(@NotNull String data) { BlockArgumentParser parser = new BlockArgumentParser(new StringReader(data), true); try { BlockState state = parser.parse(true).getBlockState(); @@ -51,22 +50,12 @@ public class FabricWorldHandle implements WorldHandle { } @Override - public com.dfsek.terra.api.block.state.BlockState air() { + public com.dfsek.terra.api.block.state.@NotNull BlockState air() { return AIR; } @Override - public BlockEntity createBlockEntity(Vector3 location, com.dfsek.terra.api.block.state.BlockState block, String snbt) { - try { - return (BlockEntity) net.minecraft.block.entity.BlockEntity.createFromNbt(FabricAdapter.adapt(location), (BlockState) block, - StringNbtReader.parse(snbt)); - } catch(CommandSyntaxException e) { - throw new RuntimeException(e); - } - } - - @Override - public EntityType getEntity(String id) { + public @NotNull EntityType getEntity(@NotNull String id) { Identifier identifier = Identifier.tryParse(id); if(identifier == null) identifier = Identifier.tryParse(id); return (EntityType) Registry.ENTITY_TYPE.get(identifier); diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java index 96b56568d..6de1027d1 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java @@ -17,14 +17,13 @@ package com.dfsek.terra.sponge.handle; +import org.jetbrains.annotations.NotNull; import org.spongepowered.api.block.BlockTypes; -import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.util.generic.Lazy; -import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.sponge.block.SpongeBlockState; @@ -36,22 +35,17 @@ public class SpongeWorldHandle implements WorldHandle { } @Override - public BlockState createBlockData(String data) { + public @NotNull BlockState createBlockData(@NotNull String data) { return new SpongeBlockState(org.spongepowered.api.block.BlockState.fromString(data)); } @Override - public BlockState air() { + public @NotNull BlockState air() { return air.value(); } @Override - public BlockEntity createBlockEntity(Vector3 location, BlockState block, String snbt) { - return null; - } - - @Override - public EntityType getEntity(String id) { - return null; + public @NotNull EntityType getEntity(@NotNull String id) { + throw new UnsupportedOperationException(); } }