io stuff, anyways, bye

This commit is contained in:
OneLemonyBoi
2021-05-23 14:19:24 -07:00
parent b1092788c4
commit 21ba20716f
2 changed files with 48 additions and 2 deletions

View File

@@ -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

View File

@@ -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);
}
}