mirror of
https://github.com/TicTicBoooom-Mods/MasterfulMachinery.git
synced 2026-03-18 21:40:34 +01:00
io stuff, anyways, bye
This commit is contained in:
@@ -18,6 +18,8 @@ import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.StringTextComponent;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import vazkii.botania.api.mana.IManaBlock;
|
||||
import vazkii.botania.api.mana.IManaPool;
|
||||
import vazkii.botania.api.mana.IManaReceiver;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
@@ -93,13 +95,24 @@ public class MachinePortBlockEntity extends UpdatableTile implements ITickableTi
|
||||
public void receiveMana(int mana) {
|
||||
if (storage instanceof ManaPortStorage) {
|
||||
ManaPortStorage s = (ManaPortStorage) storage;
|
||||
s.getInv().receiveMana(mana, false);
|
||||
if (this.isInput()) {
|
||||
s.getInv().receiveMana(mana, false);
|
||||
}
|
||||
else {
|
||||
int tiles = s.getValidPools().size();
|
||||
if (tiles != 0) {
|
||||
int manaForEach = mana / tiles;
|
||||
for (IManaReceiver pool : s.getValidPools()) {
|
||||
pool.receiveMana(manaForEach);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canReceiveManaFromBursts() {
|
||||
return true;
|
||||
return this.isInput();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.mojang.serialization.Codec;
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||
import com.ticticboooom.mods.mm.MM;
|
||||
import com.ticticboooom.mods.mm.block.tile.MachinePortBlockEntity;
|
||||
import com.ticticboooom.mods.mm.inventory.PortEnergyInventory;
|
||||
import com.ticticboooom.mods.mm.inventory.botania.PortManaInventory;
|
||||
import lombok.Getter;
|
||||
@@ -11,15 +12,25 @@ import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.AbstractGui;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.energy.CapabilityEnergy;
|
||||
import vazkii.botania.api.mana.IManaPool;
|
||||
import vazkii.botania.api.mana.IManaReceiver;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ManaPortStorage extends PortStorage {
|
||||
public static final Codec<ManaPortStorage> CODEC = RecordCodecBuilder.create(x -> x.group(
|
||||
Codec.INT.fieldOf("capacity").forGetter(z -> z.inv.getMaxManaStored())
|
||||
).apply(x, ManaPortStorage::new));
|
||||
@Getter
|
||||
private final List<IManaReceiver> validPools = new ArrayList<>();
|
||||
|
||||
@Getter
|
||||
private final PortManaInventory inv;
|
||||
@@ -67,4 +78,26 @@ public class ManaPortStorage extends PortStorage {
|
||||
screen.blit(stack, left + barOffsetX, top + barOffsetY, 193, 18, 18, (int) (108 * amount));
|
||||
AbstractGui.drawString(stack, Minecraft.getInstance().fontRenderer, inv.getManaStored() + "Mana", left + 30, top + 60, 0xfefefe);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick(MachinePortBlockEntity tile) {
|
||||
if (tile.getWorld().isRemote) {
|
||||
return;
|
||||
}
|
||||
validPools.clear();
|
||||
for (Direction dir : Direction.Plane.HORIZONTAL) {
|
||||
BlockPos pos = tile.getPos().offset(dir);
|
||||
if (tile.getWorld().isBlockLoaded(pos)) {
|
||||
TileEntity tileAt = tile.getWorld().getTileEntity(pos);
|
||||
if (tileAt instanceof IManaPool && !tileAt.isRemoved()) {
|
||||
IManaReceiver receiver = (IManaReceiver) tileAt;
|
||||
if (!receiver.isFull()) {
|
||||
validPools.add(receiver);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
super.tick(tile);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user