mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
this is to fix everything that github just broke including removing the shit from that one PR that broke everything
122 lines
4.0 KiB
Java
122 lines
4.0 KiB
Java
package com.hbm.blocks.machine;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import com.hbm.blocks.BlockDummyable;
|
|
import com.hbm.blocks.IPersistentInfoProvider;
|
|
import com.hbm.inventory.fluid.FluidType;
|
|
import com.hbm.inventory.fluid.Fluids;
|
|
import com.hbm.inventory.fluid.tank.FluidTank;
|
|
import com.hbm.items.machine.IItemFluidIdentifier;
|
|
import com.hbm.main.MainRegistry;
|
|
import com.hbm.tileentity.IPersistentNBT;
|
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
|
import com.hbm.tileentity.machine.storage.TileEntityMachineOrbus;
|
|
|
|
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
|
import net.minecraft.block.material.Material;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import net.minecraft.util.ChatComponentText;
|
|
import net.minecraft.util.ChatComponentTranslation;
|
|
import net.minecraft.util.ChatStyle;
|
|
import net.minecraft.util.EnumChatFormatting;
|
|
import net.minecraft.world.World;
|
|
import net.minecraftforge.common.util.ForgeDirection;
|
|
|
|
public class MachineOrbus extends BlockDummyable implements IPersistentInfoProvider {
|
|
|
|
public MachineOrbus(Material mat) {
|
|
super(mat);
|
|
}
|
|
|
|
@Override
|
|
public TileEntity createNewTileEntity(World world, int meta) {
|
|
|
|
if(meta >= 12) return new TileEntityMachineOrbus();
|
|
if(meta >= 6) return new TileEntityProxyCombo(false, false, true);
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public int[] getDimensions() {
|
|
return new int[] {4, 0, 2, 1, 2, 1};
|
|
}
|
|
|
|
@Override
|
|
public int getOffset() {
|
|
return 1;
|
|
}
|
|
|
|
@Override
|
|
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
|
|
|
if(world.isRemote) {
|
|
return true;
|
|
} else if(!player.isSneaking()) {
|
|
|
|
int[] pos = this.findCore(world, x, y, z);
|
|
|
|
if(pos == null)
|
|
return false;
|
|
|
|
FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]);
|
|
return true;
|
|
} else if(player.isSneaking()){
|
|
int[] pos = this.findCore(world, x, y, z);
|
|
|
|
if(pos == null)
|
|
return false;
|
|
|
|
TileEntityMachineOrbus kyleEntity = (TileEntityMachineOrbus) world.getTileEntity(pos[0], pos[1], pos[2]);
|
|
|
|
if(kyleEntity != null) {
|
|
if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) {
|
|
FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem());
|
|
|
|
kyleEntity.tank.setTankType(type);
|
|
kyleEntity.markDirty();
|
|
player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!")));
|
|
}
|
|
}
|
|
|
|
return true;
|
|
} else {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
|
super.fillSpace(world, x, y, z, dir, o);
|
|
|
|
x = x + dir.offsetX * o;
|
|
z = z + dir.offsetZ * o;
|
|
|
|
ForgeDirection d2 = dir.getRotation(ForgeDirection.UP);
|
|
dir = dir.getOpposite();
|
|
|
|
for(int i = 0; i < 5; i += 4) {
|
|
this.makeExtra(world, x, y + i, z);
|
|
this.makeExtra(world, x + dir.offsetX, y + i, z + dir.offsetZ);
|
|
this.makeExtra(world, x + d2.offsetX, y + i, z + d2.offsetZ);
|
|
this.makeExtra(world, x + dir.offsetX + d2.offsetX, y + i, z + dir.offsetZ + d2.offsetZ);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
|
|
return IPersistentNBT.getDrops(world, x, y, z, this);
|
|
}
|
|
|
|
@Override
|
|
public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) {
|
|
FluidTank tank = new FluidTank(Fluids.NONE, 0);
|
|
tank.readFromNBT(persistentTag, "tank");
|
|
list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName());
|
|
}
|
|
}
|