Basic Capability management implementation

This commit is contained in:
2022-09-24 13:23:56 +02:00
parent 28e649f4e4
commit ab33e57245
8 changed files with 155 additions and 49 deletions

View File

@@ -0,0 +1,11 @@
package me.hypherionmc.craterlib.api.blockentities.caps;
/**
* @author HypherionSA
* @date 24/09/2022
*/
public enum ForgeCapability {
ENERGY,
ITEM,
FLUID
}

View File

@@ -0,0 +1,15 @@
package me.hypherionmc.craterlib.api.blockentities.caps;
import net.minecraft.core.Direction;
import java.util.Optional;
/**
* @author HypherionSA
* @date 24/09/2022
*/
public interface IForgeCapProvider {
<T> Optional<T> getForgeCapability(ForgeCapability capability, Direction side);
}

View File

@@ -0,0 +1,47 @@
package me.hypherionmc.craterlib.common.blockentity;
import me.hypherionmc.craterlib.api.blockentities.caps.ForgeCapability;
import me.hypherionmc.craterlib.api.blockentities.caps.IForgeCapProvider;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import java.util.Optional;
/**
* @author HypherionSA
* @date 24/09/2022
*/
public class CraterBlockEntity extends BlockEntity implements IForgeCapProvider {
public CraterBlockEntity(BlockEntityType<?> blockEntityType, BlockPos pos, BlockState state) {
super(blockEntityType, pos, state);
}
public void sendUpdates() {
level.blockEntityChanged(this.getBlockPos());
level.sendBlockUpdated(this.getBlockPos(), level.getBlockState(this.getBlockPos()), level.getBlockState(this.getBlockPos()), 3);
setChanged();
}
@Override
public ClientboundBlockEntityDataPacket getUpdatePacket() {
return ClientboundBlockEntityDataPacket.create(this);
}
@Override
public CompoundTag getUpdateTag() {
CompoundTag compoundTag = new CompoundTag();
saveAdditional(compoundTag);
return compoundTag;
}
@Override
public <T> Optional<T> getForgeCapability(ForgeCapability capability, Direction side) {
return Optional.empty();
}
}