mirror of
https://github.com/RoBaertschi/EnvironmentTech.git
synced 2025-04-20 07:03:30 +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.capabilities.ETCapabilities;
|
||||||
import robaertschi.environmenttech.data.recipes.ETRecipes;
|
import robaertschi.environmenttech.data.recipes.ETRecipes;
|
||||||
import robaertschi.environmenttech.level.block.ETBlocks;
|
import robaertschi.environmenttech.level.block.ETBlocks;
|
||||||
|
import robaertschi.environmenttech.level.block.entity.ETBlockEntities;
|
||||||
import robaertschi.environmenttech.level.item.ETItems;
|
import robaertschi.environmenttech.level.item.ETItems;
|
||||||
|
|
||||||
@Mod(EnvironmentTech.MODID)
|
@Mod(EnvironmentTech.MODID)
|
||||||
@ -39,11 +40,12 @@ public class EnvironmentTech
|
|||||||
|
|
||||||
modContainer.registerConfig(ModConfig.Type.COMMON, Config.SPEC);
|
modContainer.registerConfig(ModConfig.Type.COMMON, Config.SPEC);
|
||||||
|
|
||||||
ETAttachments.init(modEventBus);
|
|
||||||
ETCapabilities.init(modEventBus);
|
|
||||||
ETBlocks.init(modEventBus);
|
ETBlocks.init(modEventBus);
|
||||||
|
ETBlockEntities.init(modEventBus);
|
||||||
ETItems.init(modEventBus);
|
ETItems.init(modEventBus);
|
||||||
ETRecipes.init(modEventBus);
|
ETRecipes.init(modEventBus);
|
||||||
|
ETAttachments.init(modEventBus);
|
||||||
|
ETCapabilities.init(modEventBus);
|
||||||
|
|
||||||
NeoForge.EVENT_BUS.register(this);
|
NeoForge.EVENT_BUS.register(this);
|
||||||
|
|
||||||
|
@ -2,8 +2,10 @@ package robaertschi.environmenttech.data.capabilities;
|
|||||||
|
|
||||||
import net.neoforged.bus.api.IEventBus;
|
import net.neoforged.bus.api.IEventBus;
|
||||||
import net.neoforged.neoforge.capabilities.BlockCapability;
|
import net.neoforged.neoforge.capabilities.BlockCapability;
|
||||||
|
import net.neoforged.neoforge.capabilities.Capabilities;
|
||||||
import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent;
|
import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent;
|
||||||
import robaertschi.environmenttech.EnvironmentTech;
|
import robaertschi.environmenttech.EnvironmentTech;
|
||||||
|
import robaertschi.environmenttech.level.block.entity.ETBlockEntities;
|
||||||
|
|
||||||
public class ETCapabilities {
|
public class ETCapabilities {
|
||||||
public static final BlockCapability<IEnvStorage, EnvCapabilityContext> ENV_STORAGE_BLOCK =
|
public static final BlockCapability<IEnvStorage, EnvCapabilityContext> ENV_STORAGE_BLOCK =
|
||||||
@ -17,6 +19,17 @@ public class ETCapabilities {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void registerCapabilities(RegisterCapabilitiesEvent event) {
|
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
|
@Override
|
||||||
public long receiveEnv(long amount, boolean simulate) {
|
public long receiveEnv(long amount, boolean simulate) {
|
||||||
long received = Mth.clamp(this.maxEnv - this.env, 0, Math.min(amount, maxTransfer));
|
long received = Mth.clamp(this.maxEnv - this.env, 0, Math.min(amount, maxTransfer));
|
||||||
if (!simulate)
|
if (!simulate) {
|
||||||
|
onContentsChanged();
|
||||||
env += received;
|
env += received;
|
||||||
|
}
|
||||||
|
|
||||||
return received;
|
return received;
|
||||||
}
|
}
|
||||||
@ -45,6 +47,10 @@ public class EnvStorage implements IEnvStorage {
|
|||||||
return env;
|
return env;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setEnvStored(long env) {
|
||||||
|
this.env = env;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getMaxEnv() {
|
public long getMaxEnv() {
|
||||||
return maxEnv;
|
return maxEnv;
|
||||||
@ -54,4 +60,6 @@ public class EnvStorage implements IEnvStorage {
|
|||||||
public EnvType[] canAcceptEnvType() {
|
public EnvType[] canAcceptEnvType() {
|
||||||
return acceptedEnvTypes;
|
return acceptedEnvTypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onContentsChanged() {}
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ public interface IEnvStorage {
|
|||||||
long getEnvStored();
|
long getEnvStored();
|
||||||
long getMaxEnv();
|
long getMaxEnv();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Which ENVType's that are supported.
|
* @return Which ENVType's that are supported.
|
||||||
*/
|
*/
|
||||||
|
@ -1,11 +1,40 @@
|
|||||||
package robaertschi.environmenttech.level.block.entity;
|
package robaertschi.environmenttech.level.block.entity;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
import net.minecraft.core.BlockPos;
|
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.Level;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
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 {
|
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;
|
private int progress = 0;
|
||||||
|
|
||||||
|
|
||||||
@ -13,6 +42,40 @@ public class EnvCollectorBlockEntity extends BlockEntity {
|
|||||||
super(ETBlockEntities.ENV_COLLECTOR_BLOCK_ENTITY.get(), pos, state);
|
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) {
|
public static void tick(Level level, BlockPos blockPos, BlockState blockState, EnvCollectorBlockEntity envCollectorBlockEntity) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user