mirror of
https://github.com/RoBaertschi/EnvironmentTech.git
synced 2025-04-19 23:03:28 +00:00
Get capabilities working (not tested)
This commit is contained in:
parent
351d05cbf5
commit
8fdca464a6
@ -19,6 +19,7 @@ import robaertschi.environmenttech.data.attachments.ETAttachments;
|
||||
import robaertschi.environmenttech.data.capabilities.ETCapabilities;
|
||||
import robaertschi.environmenttech.data.recipes.ETRecipes;
|
||||
import robaertschi.environmenttech.level.block.ETBlocks;
|
||||
import robaertschi.environmenttech.level.block.entity.ETBlockEntities;
|
||||
import robaertschi.environmenttech.level.item.ETItems;
|
||||
|
||||
@Mod(EnvironmentTech.MODID)
|
||||
@ -39,11 +40,12 @@ public class EnvironmentTech
|
||||
|
||||
modContainer.registerConfig(ModConfig.Type.COMMON, Config.SPEC);
|
||||
|
||||
ETAttachments.init(modEventBus);
|
||||
ETCapabilities.init(modEventBus);
|
||||
ETBlocks.init(modEventBus);
|
||||
ETBlockEntities.init(modEventBus);
|
||||
ETItems.init(modEventBus);
|
||||
ETRecipes.init(modEventBus);
|
||||
ETAttachments.init(modEventBus);
|
||||
ETCapabilities.init(modEventBus);
|
||||
|
||||
NeoForge.EVENT_BUS.register(this);
|
||||
|
||||
|
@ -2,8 +2,10 @@ package robaertschi.environmenttech.data.capabilities;
|
||||
|
||||
import net.neoforged.bus.api.IEventBus;
|
||||
import net.neoforged.neoforge.capabilities.BlockCapability;
|
||||
import net.neoforged.neoforge.capabilities.Capabilities;
|
||||
import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent;
|
||||
import robaertschi.environmenttech.EnvironmentTech;
|
||||
import robaertschi.environmenttech.level.block.entity.ETBlockEntities;
|
||||
|
||||
public class ETCapabilities {
|
||||
public static final BlockCapability<IEnvStorage, EnvCapabilityContext> ENV_STORAGE_BLOCK =
|
||||
@ -17,6 +19,17 @@ public class ETCapabilities {
|
||||
}
|
||||
|
||||
private static void registerCapabilities(RegisterCapabilitiesEvent event) {
|
||||
event.registerBlockEntity(
|
||||
Capabilities.ItemHandler.BLOCK,
|
||||
ETBlockEntities.ENV_COLLECTOR_BLOCK_ENTITY.get(),
|
||||
(object, context) -> object.getInventory()
|
||||
);
|
||||
|
||||
event.registerBlockEntity(
|
||||
ENV_STORAGE_BLOCK,
|
||||
ETBlockEntities.ENV_COLLECTOR_BLOCK_ENTITY.get(),
|
||||
(object, context) -> object.getEnvStorage()
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -34,8 +34,10 @@ public class EnvStorage implements IEnvStorage {
|
||||
@Override
|
||||
public long receiveEnv(long amount, boolean simulate) {
|
||||
long received = Mth.clamp(this.maxEnv - this.env, 0, Math.min(amount, maxTransfer));
|
||||
if (!simulate)
|
||||
if (!simulate) {
|
||||
onContentsChanged();
|
||||
env += received;
|
||||
}
|
||||
|
||||
return received;
|
||||
}
|
||||
@ -45,6 +47,10 @@ public class EnvStorage implements IEnvStorage {
|
||||
return env;
|
||||
}
|
||||
|
||||
public void setEnvStored(long env) {
|
||||
this.env = env;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMaxEnv() {
|
||||
return maxEnv;
|
||||
@ -54,4 +60,6 @@ public class EnvStorage implements IEnvStorage {
|
||||
public EnvType[] canAcceptEnvType() {
|
||||
return acceptedEnvTypes;
|
||||
}
|
||||
|
||||
public void onContentsChanged() {}
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ public interface IEnvStorage {
|
||||
long getEnvStored();
|
||||
long getMaxEnv();
|
||||
|
||||
|
||||
/**
|
||||
* @return Which ENVType's that are supported.
|
||||
*/
|
||||
|
@ -1,11 +1,40 @@
|
||||
package robaertschi.environmenttech.level.block.entity;
|
||||
|
||||
import lombok.Getter;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.HolderLookup;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.neoforged.neoforge.items.ItemStackHandler;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import robaertschi.environmenttech.data.capabilities.EnvStorage;
|
||||
import robaertschi.environmenttech.data.capabilities.EnvType;
|
||||
|
||||
import static robaertschi.environmenttech.EnvironmentTech.MODID;
|
||||
|
||||
public class EnvCollectorBlockEntity extends BlockEntity {
|
||||
|
||||
@Getter
|
||||
private final ItemStackHandler inventory = new ItemStackHandler(2) {
|
||||
@Override
|
||||
protected void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
EnvCollectorBlockEntity.this.setChanged();
|
||||
}
|
||||
};
|
||||
|
||||
@Getter
|
||||
private final EnvStorage envStorage = new EnvStorage(EnvType.Chunk, 64, 0, 1) {
|
||||
@Override
|
||||
public void onContentsChanged() {
|
||||
super.onContentsChanged();
|
||||
EnvCollectorBlockEntity.this.setChanged();
|
||||
}
|
||||
};
|
||||
|
||||
private int progress = 0;
|
||||
|
||||
|
||||
@ -13,6 +42,40 @@ public class EnvCollectorBlockEntity extends BlockEntity {
|
||||
super(ETBlockEntities.ENV_COLLECTOR_BLOCK_ENTITY.get(), pos, state);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadAdditional(@NotNull CompoundTag pTag, HolderLookup.@NotNull Provider provider) {
|
||||
super.loadAdditional(pTag, provider);
|
||||
CompoundTag modData = pTag.getCompound(MODID);
|
||||
this.inventory.deserializeNBT(provider, modData.getCompound("Inventory"));
|
||||
this.envStorage.setEnvStored(modData.getLong("ENV"));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveAdditional(@NotNull CompoundTag pTag, HolderLookup.@NotNull Provider provider) {
|
||||
super.saveAdditional(pTag, provider);
|
||||
CompoundTag modData = new CompoundTag();
|
||||
modData.put("Inventory", inventory.serializeNBT(provider));
|
||||
modData.putLong("ENV", envStorage.getEnvStored());
|
||||
pTag.put(MODID, modData);
|
||||
}
|
||||
|
||||
public ItemStack getInputItem() {
|
||||
return this.inventory.getStackInSlot(0);
|
||||
}
|
||||
|
||||
public ItemStack getOutputItem() {
|
||||
return this.inventory.getStackInSlot(1);
|
||||
}
|
||||
|
||||
public void setInputItem(ItemStack itemStack) {
|
||||
this.inventory.setStackInSlot(0, itemStack);
|
||||
}
|
||||
|
||||
|
||||
public void setOutputItem(ItemStack itemStack) {
|
||||
this.inventory.setStackInSlot(1, itemStack);
|
||||
}
|
||||
|
||||
public static void tick(Level level, BlockPos blockPos, BlockState blockState, EnvCollectorBlockEntity envCollectorBlockEntity) {
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user