mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-02-16 10:30:42 +00:00
annotate WorldHandle methods with nullability and contract
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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)));
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user