work on inventory stuff

This commit is contained in:
dfsek
2020-12-31 20:37:14 -07:00
parent 166c0f7dfb
commit 356771bcea
16 changed files with 210 additions and 23 deletions

View File

@@ -2,12 +2,15 @@ package com.dfsek.terra.api.platform.block;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.Handle;
import com.dfsek.terra.api.platform.block.state.BlockState;
public interface Block extends Handle {
void setBlockData(BlockData data, boolean physics);
BlockData getBlockData();
BlockState getState();
Block getRelative(BlockFace face);
Block getRelative(BlockFace face, int len);

View File

@@ -1,4 +1,19 @@
package com.dfsek.terra.api.platform.block.state;
public interface BlockState {
import com.dfsek.terra.api.platform.Handle;
import com.dfsek.terra.api.platform.block.Block;
import com.dfsek.terra.api.platform.block.BlockData;
public interface BlockState extends Handle {
Block getBlock();
int getX();
int getY();
int getZ();
BlockData getBlockData();
boolean update(boolean applyPhysics);
}

View File

@@ -0,0 +1,6 @@
package com.dfsek.terra.api.platform.block.state;
import com.dfsek.terra.api.platform.inventory.BlockInventoryHolder;
public interface Container extends BlockState, BlockInventoryHolder {
}

View File

@@ -0,0 +1,7 @@
package com.dfsek.terra.api.platform.inventory;
import com.dfsek.terra.api.platform.block.Block;
public interface BlockInventoryHolder extends InventoryHolder {
Block getBlock();
}

View File

@@ -0,0 +1,7 @@
package com.dfsek.terra.api.platform.inventory;
import com.dfsek.terra.api.platform.Handle;
public interface InventoryHolder extends Handle {
Inventory getInventory();
}

View File

@@ -2,9 +2,10 @@ package com.dfsek.terra.api.platform.inventory.item;
import com.dfsek.terra.api.platform.Handle;
public interface Damageable extends Handle, Cloneable {
Damageable clone();
public interface Damageable extends Handle {
int getDamage();
void setDamage(int damage);
boolean hasDamage();
}

View File

@@ -4,6 +4,7 @@ import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.inventory.ItemHandle;
import com.dfsek.terra.api.platform.inventory.ItemStack;
import com.dfsek.terra.bukkit.world.block.BukkitMaterialData;
import com.dfsek.terra.bukkit.world.inventory.BukkitItemStack;
public class BukkitItemHandle implements ItemHandle {
@Override

View File

@@ -1,16 +0,0 @@
package com.dfsek.terra.bukkit;
import com.dfsek.terra.api.platform.inventory.item.ItemMeta;
public class BukkitItemMeta implements ItemMeta {
private final org.bukkit.inventory.meta.ItemMeta delegate;
public BukkitItemMeta(org.bukkit.inventory.meta.ItemMeta delegate) {
this.delegate = delegate;
}
@Override
public org.bukkit.inventory.meta.ItemMeta getHandle() {
return delegate;
}
}

View File

@@ -5,6 +5,7 @@ import com.dfsek.terra.api.platform.block.Block;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.block.state.BlockState;
import com.dfsek.terra.bukkit.BukkitWorld;
import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData;
import com.dfsek.terra.bukkit.world.block.data.BukkitEnumAdapter;
@@ -26,6 +27,11 @@ public class BukkitBlock implements Block {
return BukkitBlockData.newInstance(delegate.getBlockData());
}
@Override
public BlockState getState() {
return null;
}
@Override
public Block getRelative(BlockFace face) {
return new BukkitBlock(delegate.getRelative(BukkitEnumAdapter.adapt(face)));
@@ -72,7 +78,7 @@ public class BukkitBlock implements Block {
}
@Override
public Object getHandle() {
public org.bukkit.block.Block getHandle() {
return delegate;
}
}

View File

@@ -0,0 +1,54 @@
package com.dfsek.terra.bukkit.world.block.state;
import com.dfsek.terra.api.platform.block.Block;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.state.BlockState;
import com.dfsek.terra.bukkit.world.block.BukkitBlock;
import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData;
public class BukkitBlockState implements BlockState {
private final org.bukkit.block.BlockState delegate;
protected BukkitBlockState(org.bukkit.block.BlockState block) {
this.delegate = block;
}
public static BukkitBlockState newInstance(org.bukkit.block.BlockState block) {
return new BukkitBlockState(block);
}
@Override
public org.bukkit.block.BlockState getHandle() {
return delegate;
}
@Override
public Block getBlock() {
return new BukkitBlock(delegate.getBlock());
}
@Override
public int getX() {
return delegate.getX();
}
@Override
public int getY() {
return delegate.getY();
}
@Override
public int getZ() {
return delegate.getZ();
}
@Override
public BlockData getBlockData() {
return BukkitBlockData.newInstance(delegate.getBlockData());
}
@Override
public boolean update(boolean applyPhysics) {
return delegate.update(true, applyPhysics);
}
}

View File

@@ -0,0 +1,16 @@
package com.dfsek.terra.bukkit.world.block.state;
import com.dfsek.terra.api.platform.block.state.Container;
import com.dfsek.terra.api.platform.inventory.Inventory;
import com.dfsek.terra.bukkit.world.inventory.BukkitInventory;
public class BukkitContainer extends BukkitBlockState implements Container {
protected BukkitContainer(org.bukkit.block.Container block) {
super(block);
}
@Override
public Inventory getInventory() {
return new BukkitInventory(((org.bukkit.block.Container) getHandle()).getInventory());
}
}

View File

@@ -0,0 +1,32 @@
package com.dfsek.terra.bukkit.world.inventory;
import com.dfsek.terra.api.platform.inventory.Inventory;
import com.dfsek.terra.api.platform.inventory.ItemStack;
public class BukkitInventory implements Inventory {
private final org.bukkit.inventory.Inventory delegate;
public BukkitInventory(org.bukkit.inventory.Inventory delegate) {
this.delegate = delegate;
}
@Override
public int getSize() {
return delegate.getSize();
}
@Override
public ItemStack getItem(int slot) {
return new BukkitItemStack(delegate.getItem(slot));
}
@Override
public void setItem(int slot, ItemStack newStack) {
delegate.setItem(slot, ((BukkitItemStack) newStack).getHandle());
}
@Override
public org.bukkit.inventory.Inventory getHandle() {
return delegate;
}
}

View File

@@ -0,0 +1,23 @@
package com.dfsek.terra.bukkit.world.inventory;
import com.dfsek.terra.api.platform.inventory.item.ItemMeta;
import com.dfsek.terra.bukkit.world.inventory.meta.BukkitDamageable;
import org.bukkit.inventory.meta.Damageable;
public class BukkitItemMeta implements ItemMeta {
private final org.bukkit.inventory.meta.ItemMeta delegate;
protected BukkitItemMeta(org.bukkit.inventory.meta.ItemMeta delegate) {
this.delegate = delegate;
}
public static BukkitItemMeta newInstance(org.bukkit.inventory.meta.ItemMeta delegate) {
if(delegate instanceof Damageable) return new BukkitDamageable((Damageable) delegate);
return new BukkitItemMeta(delegate);
}
@Override
public org.bukkit.inventory.meta.ItemMeta getHandle() {
return delegate;
}
}

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit;
package com.dfsek.terra.bukkit.world.inventory;
import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.inventory.ItemStack;
@@ -6,7 +6,7 @@ import com.dfsek.terra.api.platform.inventory.item.ItemMeta;
import com.dfsek.terra.bukkit.world.block.BukkitMaterialData;
public class BukkitItemStack implements ItemStack {
protected org.bukkit.inventory.ItemStack delegate;
private org.bukkit.inventory.ItemStack delegate;
public BukkitItemStack(org.bukkit.inventory.ItemStack delegate) {
this.delegate = delegate;
@@ -41,7 +41,7 @@ public class BukkitItemStack implements ItemStack {
@Override
public ItemMeta getItemMeta() {
return new BukkitItemMeta(delegate.getItemMeta());
return BukkitItemMeta.newInstance(delegate.getItemMeta());
}
@Override

View File

@@ -0,0 +1,26 @@
package com.dfsek.terra.bukkit.world.inventory.meta;
import com.dfsek.terra.api.platform.inventory.item.Damageable;
import com.dfsek.terra.bukkit.world.inventory.BukkitItemMeta;
import org.bukkit.inventory.meta.ItemMeta;
public class BukkitDamageable extends BukkitItemMeta implements Damageable {
public BukkitDamageable(org.bukkit.inventory.meta.Damageable delegate) {
super((ItemMeta) delegate);
}
@Override
public int getDamage() {
return ((org.bukkit.inventory.meta.Damageable) getHandle()).getDamage();
}
@Override
public void setDamage(int damage) {
((org.bukkit.inventory.meta.Damageable) getHandle()).setDamage(damage);
}
@Override
public boolean hasDamage() {
return ((org.bukkit.inventory.meta.Damageable) getHandle()).hasDamage();
}
}

View File

@@ -5,6 +5,7 @@ import com.dfsek.terra.api.platform.block.Block;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.block.state.BlockState;
import com.dfsek.terra.fabric.world.FabricAdapters;
import com.dfsek.terra.fabric.world.handles.world.FabricWorldAccess;
import net.minecraft.util.math.BlockPos;
@@ -27,6 +28,11 @@ public class FabricBlock implements Block {
return new FabricBlockData(delegate.worldAccess.getBlockState(delegate.position));
}
@Override
public BlockState getState() {
return null;
}
@Override
public Block getRelative(BlockFace face) {
return getRelative(face, 1);