Loads of work on Seismic Vibrator
This commit is contained in:
parent
653aa6c30f
commit
7398b21554
78
common/mekanism/api/Chunk3D.java
Normal file
78
common/mekanism/api/Chunk3D.java
Normal file
|
@ -0,0 +1,78 @@
|
|||
package mekanism.api;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.chunk.Chunk;
|
||||
|
||||
public class Chunk3D
|
||||
{
|
||||
public int dimensionId;
|
||||
|
||||
public int xCoord;
|
||||
public int zCoord;
|
||||
|
||||
public Chunk3D(int x, int z, int dimension)
|
||||
{
|
||||
xCoord = x;
|
||||
zCoord = z;
|
||||
|
||||
dimensionId = dimension;
|
||||
}
|
||||
|
||||
public Chunk3D(Entity entity)
|
||||
{
|
||||
xCoord = ((int)entity.posX) >> 4;
|
||||
zCoord = ((int)entity.posZ) >> 4;
|
||||
|
||||
dimensionId = entity.dimension;
|
||||
}
|
||||
|
||||
public Chunk3D(Coord4D coord)
|
||||
{
|
||||
xCoord = coord.xCoord >> 4;
|
||||
zCoord = coord.zCoord >> 4;
|
||||
|
||||
dimensionId = coord.dimensionId;
|
||||
}
|
||||
|
||||
public boolean exists(World world)
|
||||
{
|
||||
return world.getChunkProvider().chunkExists(xCoord, zCoord);
|
||||
}
|
||||
|
||||
public Chunk getChunk(World world)
|
||||
{
|
||||
return world.getChunkFromChunkCoords(xCoord, zCoord);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Coord4D clone()
|
||||
{
|
||||
return new Coord4D(xCoord, zCoord, dimensionId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[Chunk3D: " + xCoord + ", " + zCoord + ", dim=" + dimensionId + "]";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
return obj instanceof Coord4D &&
|
||||
((Coord4D)obj).xCoord == xCoord &&
|
||||
((Coord4D)obj).zCoord == zCoord &&
|
||||
((Coord4D)obj).dimensionId == dimensionId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
int code = 1;
|
||||
code = 31 * code + xCoord;
|
||||
code = 31 * code + zCoord;
|
||||
code = 31 * code + dimensionId;
|
||||
return code;
|
||||
}
|
||||
}
|
|
@ -278,7 +278,16 @@ public class Coord4D
|
|||
*/
|
||||
public Chunk getChunk(World world)
|
||||
{
|
||||
return world.getChunkFromBlockCoords(xCoord >> 4, zCoord >> 4);
|
||||
return world.getChunkFromBlockCoords(xCoord, zCoord);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the Chunk3D object with chunk coordinates correlating to this Coord4D's location
|
||||
* @return Chunk3D with correlating chunk coordinates.
|
||||
*/
|
||||
public Chunk3D getChunk3D()
|
||||
{
|
||||
return new Chunk3D(this);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -300,7 +309,7 @@ public class Coord4D
|
|||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[Object3D: " + xCoord + ", " + yCoord + ", " + zCoord + "]";
|
||||
return "[Coord4D: " + xCoord + ", " + yCoord + ", " + zCoord + ", dim=" + dimensionId + "]";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -3,6 +3,7 @@ package mekanism.client;
|
|||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
|
||||
import mekanism.api.Coord4D;
|
||||
import mekanism.client.gui.GuiChemicalCrystalizer;
|
||||
import mekanism.client.gui.GuiChemicalDissolutionChamber;
|
||||
import mekanism.client.gui.GuiChemicalInfuser;
|
||||
|
@ -38,6 +39,8 @@ import mekanism.client.gui.GuiRobitRepair;
|
|||
import mekanism.client.gui.GuiRobitSmelting;
|
||||
import mekanism.client.gui.GuiRotaryCondensentrator;
|
||||
import mekanism.client.gui.GuiSalinationController;
|
||||
import mekanism.client.gui.GuiSeismicReader;
|
||||
import mekanism.client.gui.GuiSeismicVibrator;
|
||||
import mekanism.client.gui.GuiTeleporter;
|
||||
import mekanism.client.render.MekanismRenderer;
|
||||
import mekanism.client.render.RenderPartTransmitter;
|
||||
|
@ -82,6 +85,7 @@ import mekanism.common.entity.EntityObsidianTNT;
|
|||
import mekanism.common.entity.EntityRobit;
|
||||
import mekanism.common.inventory.InventoryElectricChest;
|
||||
import mekanism.common.item.ItemPortableTeleporter;
|
||||
import mekanism.common.item.ItemSeismicReader;
|
||||
import mekanism.common.tile.TileEntityAdvancedElectricMachine;
|
||||
import mekanism.common.tile.TileEntityAdvancedFactory;
|
||||
import mekanism.common.tile.TileEntityBin;
|
||||
|
@ -117,6 +121,7 @@ import mekanism.common.tile.TileEntityRotaryCondensentrator;
|
|||
import mekanism.common.tile.TileEntitySalinationController;
|
||||
import mekanism.common.tile.TileEntitySalinationTank;
|
||||
import mekanism.common.tile.TileEntitySalinationValve;
|
||||
import mekanism.common.tile.TileEntitySeismicVibrator;
|
||||
import mekanism.common.tile.TileEntityTeleporter;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
|
@ -447,6 +452,15 @@ public class ClientProxy extends CommonProxy
|
|||
return new GuiChemicalWasher(player.inventory, (TileEntityChemicalWasher)tileEntity);
|
||||
case 37:
|
||||
return new GuiChemicalCrystalizer(player.inventory, (TileEntityChemicalCrystalizer)tileEntity);
|
||||
case 38:
|
||||
ItemStack itemStack1 = player.getCurrentEquippedItem().copy();
|
||||
|
||||
if(itemStack1 != null && itemStack1.getItem() instanceof ItemSeismicReader)
|
||||
{
|
||||
return new GuiSeismicReader(new Coord4D(x, y, z, world.provider.dimensionId), itemStack1);
|
||||
}
|
||||
case 39:
|
||||
return new GuiSeismicVibrator(player.inventory, (TileEntitySeismicVibrator)tileEntity);
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
|
@ -62,6 +62,7 @@ public class MekanismClient extends Mekanism
|
|||
|
||||
Mekanism.jetpackOn.clear();
|
||||
Mekanism.gasmaskOn.clear();
|
||||
Mekanism.activeVibrators.clear();
|
||||
|
||||
Mekanism.proxy.loadConfiguration();
|
||||
|
||||
|
|
|
@ -1,20 +1,16 @@
|
|||
package mekanism.client.gui;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import mekanism.api.Coord4D;
|
||||
import mekanism.common.PacketHandler;
|
||||
import mekanism.common.PacketHandler.Transmission;
|
||||
import mekanism.common.network.PacketTileEntity;
|
||||
import mekanism.common.tile.TileEntityFactory;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import mekanism.common.util.MekanismUtils.ResourceType;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class GuiBucket extends GuiElement
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class GuiBucketIO extends GuiElement
|
||||
{
|
||||
public GuiBucket(GuiMekanism gui, TileEntity tile, ResourceLocation def)
|
||||
public GuiBucketIO(GuiMekanism gui, TileEntity tile, ResourceLocation def)
|
||||
{
|
||||
super(MekanismUtils.getResource(ResourceType.GUI_ELEMENT, "GuiBucket.png"), gui, tile, def);
|
||||
}
|
|
@ -11,6 +11,10 @@ import net.minecraft.entity.player.InventoryPlayer;
|
|||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class GuiChanceMachine extends GuiMekanism
|
||||
{
|
||||
public TileEntityChanceMachine tileEntity;
|
||||
|
|
|
@ -34,7 +34,7 @@ public class GuiChemicalWasher extends GuiMekanism
|
|||
tileEntity = tentity;
|
||||
|
||||
guiElements.add(new GuiRedstoneControl(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalWasher.png")));
|
||||
guiElements.add(new GuiBucket(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalWasher.png")));
|
||||
guiElements.add(new GuiBucketIO(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalWasher.png")));
|
||||
guiElements.add(new GuiEnergyInfo(new IInfoHandler() {
|
||||
@Override
|
||||
public List<String> getInfo()
|
||||
|
|
|
@ -31,6 +31,10 @@ import net.minecraftforge.oredict.OreDictionary;
|
|||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class GuiDigitalMinerConfig extends GuiMekanism
|
||||
{
|
||||
public TileEntityDigitalMiner tileEntity;
|
||||
|
|
|
@ -9,7 +9,10 @@ import net.minecraft.client.gui.FontRenderer;
|
|||
import net.minecraft.client.gui.inventory.GuiContainer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public abstract class GuiElement
|
||||
{
|
||||
protected static Minecraft mc = Minecraft.getMinecraft();
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
package mekanism.client.gui;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import mekanism.common.util.MekanismUtils.ResourceType;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class GuiEnergyInfo extends GuiElement
|
||||
{
|
||||
public IInfoHandler infoHandler;
|
||||
|
|
|
@ -1,14 +1,9 @@
|
|||
package mekanism.client.gui;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import mekanism.api.Coord4D;
|
||||
import mekanism.common.PacketHandler;
|
||||
import mekanism.common.PacketHandler.Transmission;
|
||||
import mekanism.common.inventory.container.ContainerNull;
|
||||
import mekanism.common.miner.MItemStackFilter;
|
||||
import mekanism.common.miner.MOreDictFilter;
|
||||
import mekanism.common.miner.MinerFilter;
|
||||
import mekanism.common.network.PacketDigitalMinerGui;
|
||||
import mekanism.common.network.PacketDigitalMinerGui.MinerGuiPacket;
|
||||
import mekanism.common.tile.TileEntityDigitalMiner;
|
||||
|
@ -17,6 +12,12 @@ import mekanism.common.util.MekanismUtils.ResourceType;
|
|||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class GuiMFilterSelect extends GuiMekanism
|
||||
{
|
||||
public TileEntityDigitalMiner tileEntity;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package mekanism.client.gui;
|
||||
|
||||
import mekanism.api.EnumColor;
|
||||
import mekanism.api.Coord4D;
|
||||
import mekanism.api.EnumColor;
|
||||
import mekanism.common.PacketHandler;
|
||||
import mekanism.common.PacketHandler.Transmission;
|
||||
import mekanism.common.inventory.container.ContainerFilter;
|
||||
|
@ -22,6 +22,10 @@ import net.minecraft.item.ItemStack;
|
|||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class GuiMItemStackFilter extends GuiMekanism
|
||||
{
|
||||
public TileEntityDigitalMiner tileEntity;
|
||||
|
|
|
@ -3,10 +3,11 @@ package mekanism.client.gui;
|
|||
import mekanism.common.tile.TileEntityElectricBlock;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import mekanism.common.util.MekanismUtils.ResourceType;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class GuiPowerBar extends GuiElement
|
||||
{
|
||||
private int xLocation;
|
||||
|
|
|
@ -17,6 +17,10 @@ import net.minecraftforge.fluids.FluidStack;
|
|||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class GuiSalinationController extends GuiMekanism
|
||||
{
|
||||
public TileEntitySalinationController tileEntity;
|
||||
|
|
415
common/mekanism/client/gui/GuiSeismicReader.java
Normal file
415
common/mekanism/client/gui/GuiSeismicReader.java
Normal file
|
@ -0,0 +1,415 @@
|
|||
package mekanism.client.gui;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import mekanism.api.Coord4D;
|
||||
import mekanism.common.item.ItemSeismicReader;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import mekanism.common.util.MekanismUtils.ResourceType;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import net.minecraftforge.fluids.IFluidBlock;
|
||||
|
||||
import org.lwjgl.input.Mouse;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class GuiSeismicReader extends GuiScreen
|
||||
{
|
||||
private World worldObj = Minecraft.getMinecraft().theWorld;
|
||||
|
||||
public ItemStack itemStack;
|
||||
|
||||
public int scroll;
|
||||
|
||||
public int prevMouseY;
|
||||
|
||||
public Coord4D pos;
|
||||
|
||||
public boolean prevMouseDown;
|
||||
|
||||
public boolean isDragging = false;
|
||||
|
||||
public List<SeismicType> seismicCalculation = new ArrayList<SeismicType>();
|
||||
|
||||
public int scrollStartX = 10;
|
||||
public int scrollStartY = 12;
|
||||
|
||||
protected int xSize = 118;
|
||||
protected int ySize = 166;
|
||||
|
||||
public GuiSeismicReader(Coord4D coord, ItemStack stack)
|
||||
{
|
||||
pos = coord;
|
||||
pos.yCoord = Math.min(255, pos.yCoord);
|
||||
|
||||
itemStack = stack;
|
||||
|
||||
calculate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float partialTick)
|
||||
{
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiSeismicReader.png"));
|
||||
|
||||
int guiWidth = (width - xSize) / 2;
|
||||
int guiHeight = (height - ySize) / 2;
|
||||
|
||||
int xAxis = mouseX - guiWidth;
|
||||
int yAxis = mouseY - guiHeight;
|
||||
|
||||
if(Mouse.isButtonDown(0))
|
||||
{
|
||||
if(!isDragging && (xAxis >= 10 && xAxis <= 48 && yAxis >= 12 && yAxis <= 154))
|
||||
{
|
||||
if(!prevMouseDown)
|
||||
{
|
||||
prevMouseDown = true;
|
||||
}
|
||||
else {
|
||||
int mouseDiff = prevMouseY-yAxis;
|
||||
|
||||
scroll = Math.max(0, Math.min(scroll+mouseDiff, calcMaxScroll()));
|
||||
}
|
||||
}
|
||||
|
||||
int maxScroll = calcMaxScroll();
|
||||
|
||||
if(!isDragging && maxScroll > 0 && (xAxis >= 49 && xAxis <= 53 && yAxis >= getScrollButtonY() && yAxis <= getScrollButtonY()+4))
|
||||
{
|
||||
if(!prevMouseDown)
|
||||
{
|
||||
prevMouseDown = true;
|
||||
isDragging = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(isDragging)
|
||||
{
|
||||
int relY = Math.max(13, Math.min(149, yAxis))-13;
|
||||
scroll = calcScrollFromButton(relY);
|
||||
}
|
||||
|
||||
prevMouseY = yAxis;
|
||||
}
|
||||
else {
|
||||
prevMouseDown = false;
|
||||
isDragging = false;
|
||||
}
|
||||
|
||||
drawTexturedModalRect(guiWidth + scrollStartX, guiHeight + scrollStartY, xSize, 13, 38, 142);
|
||||
|
||||
drawChartLayer(guiWidth, guiHeight);
|
||||
|
||||
drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize);
|
||||
|
||||
drawTexturedModalRect(guiWidth + scrollStartX + 38 + 1, guiHeight + getScrollButtonY(), xSize, 0, 4, 4);
|
||||
|
||||
fontRenderer.drawString(MekanismUtils.localize("gui.seismicReader.short"), guiWidth + 62, guiHeight + 18, 0x000000);
|
||||
|
||||
fontRenderer.drawString(MekanismUtils.localize("gui.seismicReader.solids"), guiWidth + 70, guiHeight + 40, 0x0404040);
|
||||
fontRenderer.drawString(MekanismUtils.localize("gui.seismicReader.fluids"), guiWidth + 70, guiHeight + 62, 0x0404040);
|
||||
fontRenderer.drawString(MekanismUtils.localize("gui.empty"), guiWidth + 70, guiHeight + 78, 0x0404040);
|
||||
|
||||
fontRenderer.drawString(MekanismUtils.localize("gui.seismicReader.reading"), guiWidth + 62, guiHeight + 114, 0x00CD00);
|
||||
fontRenderer.drawString(MekanismUtils.localize("gui.energy") + ":", guiWidth + 62, guiHeight + 132, 0x00CD00);
|
||||
fontRenderer.drawString(MekanismUtils.getEnergyDisplay(getEnergy()), guiWidth + 62, guiHeight + 141, 0x00CD00);
|
||||
|
||||
super.drawScreen(mouseX, mouseY, partialTick);
|
||||
}
|
||||
|
||||
public double getEnergy()
|
||||
{
|
||||
return ((ItemSeismicReader)itemStack.getItem()).getEnergy(itemStack);
|
||||
}
|
||||
|
||||
public void drawChartLayer(int guiWidth, int guiHeight)
|
||||
{
|
||||
if(scroll <= 5)
|
||||
{
|
||||
drawTexturedModalRect(guiWidth + scrollStartX, guiHeight + scrollStartY+5-scroll, xSize, 4, 38, 1);
|
||||
}
|
||||
|
||||
int amount = Math.min((142/2)+Math.min(0, (scroll/2)-3), pos.yCoord);
|
||||
int start = pos.yCoord-(scroll/2)+Math.min(3, scroll/2);
|
||||
int yStart = scrollStartY + Math.max(0, 6-scroll);
|
||||
|
||||
drawScale(guiWidth, guiHeight, amount, start, yStart, scroll%2==1);
|
||||
|
||||
if(calcMaxScroll() > 0 && scroll == calcMaxScroll())
|
||||
{
|
||||
drawTexturedModalRect(guiWidth + scrollStartX, guiHeight + scrollStartY+142-1, xSize, 4, 38, 1);
|
||||
}
|
||||
else if(calcMaxScroll() <= 0)
|
||||
{
|
||||
int dist = yStart + amount*2;
|
||||
drawTexturedModalRect(guiWidth + scrollStartX, guiHeight + dist, xSize, 4, 38, 1);
|
||||
}
|
||||
}
|
||||
|
||||
public void drawScale(int guiWidth, int guiHeight, int amount, int start, int yStart, boolean half)
|
||||
{
|
||||
int starting = 0;
|
||||
int toRender = amount;
|
||||
int nextRender = guiHeight + yStart;
|
||||
|
||||
if(half)
|
||||
{
|
||||
starting++;
|
||||
}
|
||||
|
||||
if(scroll < 6)
|
||||
{
|
||||
nextRender += (half ? 1 : 0);
|
||||
}
|
||||
|
||||
if(start%4 != 0)
|
||||
{
|
||||
starting += (4-(start%4))*2;
|
||||
drawTexturedModalRect(guiWidth + 30, nextRender, xSize, 5+starting, 3, 8-starting);
|
||||
toRender -= (8-starting)/2;
|
||||
nextRender += (8-starting);
|
||||
|
||||
if(!seismicCalculation.isEmpty())
|
||||
{
|
||||
int rendered = 8-starting+(half && scroll > 6 ? 1 : 0);
|
||||
int nextY = guiHeight + yStart - (half && scroll > 6 ? 1 : 0);
|
||||
|
||||
seismicCalculation.get(start-1).render(this, xSize, guiWidth, nextY);
|
||||
|
||||
if(rendered > 2)
|
||||
{
|
||||
seismicCalculation.get(start-2).render(this, xSize, guiWidth, nextY+2);
|
||||
}
|
||||
|
||||
if(rendered > 4)
|
||||
{
|
||||
seismicCalculation.get(start-3).render(this, xSize, guiWidth, nextY+4);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
nextRender -= half ? 1 : 0;
|
||||
}
|
||||
|
||||
while(toRender >= 4)
|
||||
{
|
||||
toRender -= 4;
|
||||
|
||||
drawTexturedModalRect(guiWidth + 30, nextRender, xSize, 5, 3, 8);
|
||||
|
||||
int index = start-(amount-toRender);
|
||||
|
||||
if((index-1)%2 == 0)
|
||||
{
|
||||
index -= 1;
|
||||
}
|
||||
|
||||
if(index%8 == 0 && pos.yCoord-index > 6)
|
||||
{
|
||||
int yPos = nextRender+2;
|
||||
|
||||
if(index == 0)
|
||||
{
|
||||
yPos -= 2;
|
||||
}
|
||||
|
||||
fontRenderer.drawString(Integer.toString(index), guiWidth + 28-fontRenderer.getStringWidth(Integer.toString(index)), yPos, 0xFFFFFF);
|
||||
mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiSeismicReader.png"));
|
||||
}
|
||||
|
||||
if(!seismicCalculation.isEmpty())
|
||||
{
|
||||
seismicCalculation.get(index+3).render(this, xSize, guiWidth, nextRender);
|
||||
seismicCalculation.get(index+2).render(this, xSize, guiWidth, nextRender+2);
|
||||
seismicCalculation.get(index+1).render(this, xSize, guiWidth, nextRender+4);
|
||||
seismicCalculation.get(index+0).render(this, xSize, guiWidth, nextRender+6);
|
||||
}
|
||||
|
||||
nextRender += 8;
|
||||
}
|
||||
|
||||
if(toRender > 0)
|
||||
{
|
||||
drawTexturedModalRect(guiWidth + 30, nextRender, xSize, 5, 3, toRender*2);
|
||||
|
||||
if(!seismicCalculation.isEmpty())
|
||||
{
|
||||
int index = start-(amount-toRender);
|
||||
|
||||
if((index-1)%2 == 0)
|
||||
{
|
||||
index -= 1;
|
||||
}
|
||||
|
||||
if(index-1 >= 0)
|
||||
{
|
||||
seismicCalculation.get(index-1).render(this, xSize, guiWidth, nextRender);
|
||||
}
|
||||
|
||||
if(toRender > 1 && index-2 >= 0)
|
||||
{
|
||||
seismicCalculation.get(index-2).render(this, xSize, guiWidth, nextRender+2);
|
||||
}
|
||||
|
||||
if(toRender > 2 && index-3 >= 0)
|
||||
{
|
||||
seismicCalculation.get(index-3).render(this, xSize, guiWidth, nextRender+4);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int getScrollButtonY()
|
||||
{
|
||||
int max = calcMaxScroll();
|
||||
|
||||
if(max == 0)
|
||||
{
|
||||
return scrollStartY+1;
|
||||
}
|
||||
|
||||
return scrollStartY+1+(int)(((float)scroll/max)*136);
|
||||
}
|
||||
|
||||
public int calcScrollFromButton(int relButtonY)
|
||||
{
|
||||
return (int)(((float)relButtonY/136)*calcMaxScroll());
|
||||
}
|
||||
|
||||
public int calcMaxScroll()
|
||||
{
|
||||
int ret = 6;
|
||||
|
||||
ret += (pos.yCoord*2); //2 pixels per block
|
||||
ret += 1; //Bottom layer thing
|
||||
ret -= 142; //142 total pixels lengthwise on display
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
public void calculate()
|
||||
{
|
||||
seismicCalculation.clear();
|
||||
|
||||
for(int y = 1; y <= pos.yCoord; y++)
|
||||
{
|
||||
Coord4D coord = new Coord4D(pos.xCoord, y, pos.zCoord, pos.dimensionId);
|
||||
|
||||
if(coord.isAirBlock(worldObj))
|
||||
{
|
||||
seismicCalculation.add(SeismicType.EMPTY);
|
||||
continue;
|
||||
}
|
||||
|
||||
int id = coord.getBlockId(worldObj);
|
||||
int meta = coord.getMetadata(worldObj);
|
||||
Block block = coord.getBlock(worldObj);
|
||||
|
||||
if(id == Block.grass.blockID)
|
||||
{
|
||||
seismicCalculation.add(SeismicType.GRASS);
|
||||
continue;
|
||||
}
|
||||
else if(id == Block.dirt.blockID)
|
||||
{
|
||||
seismicCalculation.add(SeismicType.DIRT);
|
||||
continue;
|
||||
}
|
||||
else if(id == Block.stone.blockID)
|
||||
{
|
||||
seismicCalculation.add(SeismicType.STONE);
|
||||
continue;
|
||||
}
|
||||
else if(id == Block.bedrock.blockID)
|
||||
{
|
||||
seismicCalculation.add(SeismicType.BEDROCK);
|
||||
continue;
|
||||
}
|
||||
|
||||
if(block instanceof IFluidBlock)
|
||||
{
|
||||
Fluid fluid = ((IFluidBlock)block).getFluid();
|
||||
|
||||
if(fluid != null)
|
||||
{
|
||||
String name = fluid.getName().toLowerCase();
|
||||
|
||||
if(name.equals("water"))
|
||||
{
|
||||
seismicCalculation.add(SeismicType.WATER);
|
||||
continue;
|
||||
}
|
||||
else if(name.equals("lava"))
|
||||
{
|
||||
seismicCalculation.add(SeismicType.LAVA);
|
||||
continue;
|
||||
}
|
||||
else if(name.equals("oil"))
|
||||
{
|
||||
seismicCalculation.add(SeismicType.OIL);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<String> oreDictNames = MekanismUtils.getOreDictName(new ItemStack(id, 1, meta));
|
||||
boolean foundName = false;
|
||||
|
||||
if(oreDictNames != null && !oreDictNames.isEmpty())
|
||||
{
|
||||
for(String s : oreDictNames)
|
||||
{
|
||||
if(s.trim().startsWith("ore"))
|
||||
{
|
||||
seismicCalculation.add(SeismicType.ORE);
|
||||
foundName = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(foundName)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
seismicCalculation.add(SeismicType.OTHER);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doesGuiPauseGame()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public static enum SeismicType
|
||||
{
|
||||
GRASS,
|
||||
DIRT,
|
||||
OTHER,
|
||||
ORE,
|
||||
STONE,
|
||||
BEDROCK,
|
||||
WATER,
|
||||
LAVA,
|
||||
OIL,
|
||||
EMPTY;
|
||||
|
||||
public void render(GuiSeismicReader gui, int xSize, int guiWidth, int y)
|
||||
{
|
||||
gui.drawTexturedModalRect(guiWidth + 33, y, xSize, 155+(ordinal()*2), 4, 2);
|
||||
}
|
||||
}
|
||||
}
|
57
common/mekanism/client/gui/GuiSeismicVibrator.java
Normal file
57
common/mekanism/client/gui/GuiSeismicVibrator.java
Normal file
|
@ -0,0 +1,57 @@
|
|||
package mekanism.client.gui;
|
||||
|
||||
import mekanism.common.inventory.container.ContainerSeismicVibrator;
|
||||
import mekanism.common.tile.TileEntitySeismicVibrator;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import mekanism.common.util.MekanismUtils.ResourceType;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class GuiSeismicVibrator extends GuiMekanism
|
||||
{
|
||||
public TileEntitySeismicVibrator tileEntity;
|
||||
|
||||
public GuiSeismicVibrator(InventoryPlayer inventory, TileEntitySeismicVibrator tentity)
|
||||
{
|
||||
super(tentity, new ContainerSeismicVibrator(inventory, tentity));
|
||||
tileEntity = tentity;
|
||||
|
||||
guiElements.add(new GuiRedstoneControl(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiMetallurgicInfuser.png")));
|
||||
guiElements.add(new GuiPowerBar(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiMetallurgicInfuser.png"), 164, 15));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY)
|
||||
{
|
||||
int xAxis = (mouseX - (width - xSize) / 2);
|
||||
int yAxis = (mouseY - (height - ySize) / 2);
|
||||
|
||||
fontRenderer.drawString(tileEntity.getInvName(), 45, 6, 0x404040);
|
||||
fontRenderer.drawString(MekanismUtils.localize("container.inventory"), 8, (ySize - 96) + 2, 0x404040);
|
||||
|
||||
fontRenderer.drawString(tileEntity.isActive ? "Vibrating" : "Idle", 19, 26, 0x00CD00);
|
||||
fontRenderer.drawString("Chunk: " + (tileEntity.xCoord >> 4) + ", " + (tileEntity.zCoord >> 4), 19, 35, 0x00CD00);
|
||||
|
||||
super.drawGuiContainerForegroundLayer(mouseX, mouseY);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(float partialTick, int mouseX, int mouseY)
|
||||
{
|
||||
mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiMetallurgicInfuser.png"));
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
int guiWidth = (width - xSize) / 2;
|
||||
int guiHeight = (height - ySize) / 2;
|
||||
drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize);
|
||||
|
||||
int xAxis = mouseX - guiWidth;
|
||||
int yAxis = mouseY - guiHeight;
|
||||
|
||||
super.drawGuiContainerBackgroundLayer(partialTick, mouseX, mouseY);
|
||||
}
|
||||
}
|
|
@ -9,10 +9,12 @@ import mekanism.common.network.PacketTileEntity;
|
|||
import mekanism.common.tile.TileEntityFactory;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import mekanism.common.util.MekanismUtils.ResourceType;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class GuiSortingTab extends GuiElement
|
||||
{
|
||||
public GuiSortingTab(GuiMekanism gui, TileEntity tile, ResourceLocation def)
|
||||
|
|
|
@ -14,6 +14,10 @@ import net.minecraft.entity.player.EntityPlayer;
|
|||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class GuiTFilterSelect extends GuiMekanism
|
||||
{
|
||||
public TileEntityLogisticalSorter tileEntity;
|
||||
|
|
|
@ -3,10 +3,9 @@ package mekanism.client.gui;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import mekanism.api.EnumColor;
|
||||
import mekanism.api.Coord4D;
|
||||
import mekanism.api.EnumColor;
|
||||
import mekanism.client.render.MekanismRenderer;
|
||||
import mekanism.common.Mekanism;
|
||||
import mekanism.common.PacketHandler;
|
||||
import mekanism.common.PacketHandler.Transmission;
|
||||
import mekanism.common.inventory.container.ContainerFilter;
|
||||
|
@ -15,7 +14,6 @@ import mekanism.common.network.PacketLogisticalSorterGui;
|
|||
import mekanism.common.network.PacketLogisticalSorterGui.SorterGuiPacket;
|
||||
import mekanism.common.network.PacketNewFilter;
|
||||
import mekanism.common.tile.TileEntityLogisticalSorter;
|
||||
import mekanism.common.transporter.TItemStackFilter;
|
||||
import mekanism.common.transporter.TOreDictFilter;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import mekanism.common.util.MekanismUtils.ResourceType;
|
||||
|
@ -30,6 +28,10 @@ import org.lwjgl.input.Keyboard;
|
|||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.opengl.GL12;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class GuiTOreDictFilter extends GuiMekanism
|
||||
{
|
||||
public TileEntityLogisticalSorter tileEntity;
|
||||
|
|
|
@ -30,6 +30,7 @@ import mekanism.common.inventory.container.ContainerRobitRepair;
|
|||
import mekanism.common.inventory.container.ContainerRobitSmelting;
|
||||
import mekanism.common.inventory.container.ContainerRotaryCondensentrator;
|
||||
import mekanism.common.inventory.container.ContainerSalinationController;
|
||||
import mekanism.common.inventory.container.ContainerSeismicVibrator;
|
||||
import mekanism.common.inventory.container.ContainerTeleporter;
|
||||
import mekanism.common.tile.TileEntityAdvancedElectricMachine;
|
||||
import mekanism.common.tile.TileEntityAdvancedFactory;
|
||||
|
@ -68,6 +69,7 @@ import mekanism.common.tile.TileEntityRotaryCondensentrator;
|
|||
import mekanism.common.tile.TileEntitySalinationController;
|
||||
import mekanism.common.tile.TileEntitySalinationTank;
|
||||
import mekanism.common.tile.TileEntitySalinationValve;
|
||||
import mekanism.common.tile.TileEntitySeismicVibrator;
|
||||
import mekanism.common.tile.TileEntityTeleporter;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
|
@ -241,6 +243,7 @@ public class CommonProxy
|
|||
Mekanism.chemicalDissolutionChamberUsage = Mekanism.configuration.get("usage", "ChemicalDissolutionChamberUsage", 400D).getDouble(400D);
|
||||
Mekanism.chemicalWasherUsage = Mekanism.configuration.get("usage", "ChemicalWasherUsage", 200D).getDouble(200D);
|
||||
Mekanism.chemicalCrystalizerUsage = Mekanism.configuration.get("usage", "ChemicalCrystalizerUsage", 400D).getDouble(400D);
|
||||
Mekanism.seismicVibratorUsage = Mekanism.configuration.get("usage", "SeismicVibratorUsage", 50D).getDouble(50D);
|
||||
Mekanism.configuration.save();
|
||||
}
|
||||
|
||||
|
@ -390,6 +393,8 @@ public class CommonProxy
|
|||
return new ContainerChemicalWasher(player.inventory, (TileEntityChemicalWasher)tileEntity);
|
||||
case 37:
|
||||
return new ContainerChemicalCrystalizer(player.inventory, (TileEntityChemicalCrystalizer)tileEntity);
|
||||
case 39:
|
||||
return new ContainerSeismicVibrator(player.inventory, (TileEntitySeismicVibrator)tileEntity);
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
|
@ -238,7 +238,7 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
|
|||
{
|
||||
fluidStored.amount -= tickEmit(fluidStored, true);
|
||||
|
||||
if(fluidStored.amount <= 0)
|
||||
if(fluidStored != null && fluidStored.amount <= 0)
|
||||
{
|
||||
fluidStored = null;
|
||||
}
|
||||
|
|
|
@ -78,6 +78,7 @@ import mekanism.common.item.ItemPortableTeleporter;
|
|||
import mekanism.common.item.ItemProxy;
|
||||
import mekanism.common.item.ItemRobit;
|
||||
import mekanism.common.item.ItemScubaTank;
|
||||
import mekanism.common.item.ItemSeismicReader;
|
||||
import mekanism.common.item.ItemShard;
|
||||
import mekanism.common.item.ItemWalkieTalkie;
|
||||
import mekanism.common.multipart.ItemPartTransmitter;
|
||||
|
@ -117,6 +118,7 @@ import mekanism.common.tile.TileEntityBoundingBlock;
|
|||
import mekanism.common.tile.TileEntityCardboardBox;
|
||||
import mekanism.common.tile.TileEntityElectricBlock;
|
||||
import mekanism.common.tile.TileEntityEnergizedSmelter;
|
||||
import mekanism.common.tile.TileEntitySeismicVibrator;
|
||||
import mekanism.common.transporter.TransporterManager;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import mekanism.common.util.MekanismUtils.ResourceType;
|
||||
|
@ -217,6 +219,8 @@ public class Mekanism
|
|||
public static Set<String> gasmaskOn = new HashSet<String>();
|
||||
|
||||
public static Set<Coord4D> ic2Registered = new HashSet<Coord4D>();
|
||||
|
||||
public static Set<Coord4D> activeVibrators = new HashSet<Coord4D>();
|
||||
|
||||
//Block IDs
|
||||
public static int basicBlockID;
|
||||
|
@ -262,6 +266,7 @@ public class Mekanism
|
|||
public static Item FreeRunners;
|
||||
public static ItemJetpack ArmoredJetpack;
|
||||
public static Item FilterCard;
|
||||
public static ItemSeismicReader SeismicReader;
|
||||
|
||||
//Blocks
|
||||
public static Block BasicBlock;
|
||||
|
@ -339,6 +344,7 @@ public class Mekanism
|
|||
public static double chemicalDissolutionChamberUsage;
|
||||
public static double chemicalWasherUsage;
|
||||
public static double chemicalCrystalizerUsage;
|
||||
public static double seismicVibratorUsage;
|
||||
|
||||
/**
|
||||
* Adds all in-game crafting and smelting recipes.
|
||||
|
@ -797,7 +803,7 @@ public class Mekanism
|
|||
CompressedRedstone = new ItemMekanism(configuration.getItem("CompressedRedstone", ITEM_ID++).getInt()).setUnlocalizedName("CompressedRedstone");
|
||||
SpeedUpgrade = new ItemMachineUpgrade(configuration.getItem("SpeedUpgrade", ITEM_ID++).getInt()).setUnlocalizedName("SpeedUpgrade");
|
||||
EnergyUpgrade = new ItemMachineUpgrade(configuration.getItem("EnergyUpgrade", ITEM_ID++).getInt()).setUnlocalizedName("EnergyUpgrade");
|
||||
EnergyTablet = (ItemEnergized)new ItemEnergized(configuration.getItem("EnergyTablet", ITEM_ID++).getInt(), 1000000, 120).setUnlocalizedName("EnergyTablet");
|
||||
EnergyTablet = (ItemEnergized)new ItemEnergized(configuration.getItem("EnergyTablet", ITEM_ID++).getInt(), 1000000).setUnlocalizedName("EnergyTablet");
|
||||
Dictionary = new ItemDictionary(configuration.getItem("Dictionary", ITEM_ID++).getInt()).setUnlocalizedName("Dictionary");
|
||||
FilterCard = new ItemFilterCard(configuration.getItem("FilterCard", ITEM_ID++).getInt()).setUnlocalizedName("FilterCard");
|
||||
ElectricBow = (ItemElectricBow)new ItemElectricBow(configuration.getItem("ElectricBow", ITEM_ID++).getInt()).setUnlocalizedName("ElectricBow");
|
||||
|
@ -805,6 +811,7 @@ public class Mekanism
|
|||
Configurator = new ItemConfigurator(configuration.getItem("Configurator", ITEM_ID++).getInt()).setUnlocalizedName("Configurator");
|
||||
NetworkReader = new ItemNetworkReader(configuration.getItem("NetworkReader", ITEM_ID++).getInt()).setUnlocalizedName("NetworkReader");
|
||||
WalkieTalkie = new ItemWalkieTalkie(configuration.getItem("WalkieTalkie", ITEM_ID++).getInt()).setUnlocalizedName("WalkieTalkie");
|
||||
SeismicReader = (ItemSeismicReader)new ItemSeismicReader(configuration.getItem("SeismicReader", ITEM_ID++).getInt()).setUnlocalizedName("SeismicReader");
|
||||
AtomicDisassembler = (ItemAtomicDisassembler)new ItemAtomicDisassembler(configuration.getItem("AtomicDisassembler", ITEM_ID++).getInt()).setUnlocalizedName("AtomicDisassembler");
|
||||
GasMask = (ItemGasMask)new ItemGasMask(configuration.getItem("GasMask", ITEM_ID++).getInt()).setUnlocalizedName("GasMask");
|
||||
ScubaTank = (ItemScubaTank)new ItemScubaTank(configuration.getItem("ScubaTank", ITEM_ID++).getInt()).setUnlocalizedName("ScubaTank");
|
||||
|
@ -866,6 +873,7 @@ public class Mekanism
|
|||
GameRegistry.registerItem(FreeRunners, "FrictionBoots");
|
||||
GameRegistry.registerItem(ArmoredJetpack, "ArmoredJetpack");
|
||||
GameRegistry.registerItem(FilterCard, "FilterCard");
|
||||
GameRegistry.registerItem(SeismicReader, "SeismicReader");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1055,6 +1063,7 @@ public class Mekanism
|
|||
GameRegistry.registerTileEntity(TileEntityBoundingBlock.class, "BoundingBlock");
|
||||
GameRegistry.registerTileEntity(TileEntityAdvancedBoundingBlock.class, "AdvancedBoundingBlock");
|
||||
GameRegistry.registerTileEntity(TileEntityCardboardBox.class, "CardboardBox");
|
||||
GameRegistry.registerTileEntity(TileEntitySeismicVibrator.class, "SeismicVibrator");
|
||||
|
||||
//Load tile entities that have special renderers.
|
||||
proxy.registerSpecialTileEntities();
|
||||
|
@ -1099,6 +1108,7 @@ public class Mekanism
|
|||
ic2Registered.clear();
|
||||
jetpackOn.clear();
|
||||
gasmaskOn.clear();
|
||||
activeVibrators.clear();
|
||||
|
||||
TransporterManager.flowingStacks.clear();
|
||||
}
|
||||
|
|
|
@ -53,6 +53,7 @@ import mekanism.common.tile.TileEntityOsmiumCompressor;
|
|||
import mekanism.common.tile.TileEntityPrecisionSawmill;
|
||||
import mekanism.common.tile.TileEntityPurificationChamber;
|
||||
import mekanism.common.tile.TileEntityRotaryCondensentrator;
|
||||
import mekanism.common.tile.TileEntitySeismicVibrator;
|
||||
import mekanism.common.tile.TileEntityTeleporter;
|
||||
import mekanism.common.transporter.TransporterFilter;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
|
@ -172,6 +173,8 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds
|
|||
icons[5][0] = register.registerIcon("mekanism:PrecisionSawmillFrontOff");
|
||||
icons[5][1] = register.registerIcon("mekanism:PrecisionSawmillFrontOn");
|
||||
icons[5][2] = register.registerIcon("mekanism:SteelCasing");
|
||||
icons[9][0] = register.registerIcon("mekanism:SteelBlock");
|
||||
icons[9][1] = register.registerIcon("mekanism:SeismicVibrator");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -437,6 +440,16 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds
|
|||
return icons[meta][2];
|
||||
}
|
||||
}
|
||||
else if(meta == 9)
|
||||
{
|
||||
if(side == 3)
|
||||
{
|
||||
return icons[meta][1];
|
||||
}
|
||||
else {
|
||||
return icons[meta][0];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
|
@ -570,6 +583,16 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds
|
|||
return icons[metadata][2];
|
||||
}
|
||||
}
|
||||
else if(metadata == 9)
|
||||
{
|
||||
if(side == tileEntity.facing)
|
||||
{
|
||||
return icons[metadata][1];
|
||||
}
|
||||
else {
|
||||
return icons[metadata][0];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
|
@ -1102,7 +1125,8 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds
|
|||
PRECISION_SAWMILL(Mekanism.machineBlock2ID, 5, "PrecisionSawmill", 34, Mekanism.precisionSawmillUsage*400, TileEntityPrecisionSawmill.class, false, true),
|
||||
CHEMICAL_DISSOLUTION_CHAMBER(Mekanism.machineBlock2ID, 6, "ChemicalDissolutionChamber", 35, 20000, TileEntityChemicalDissolutionChamber.class, true, false),
|
||||
CHEMICAL_WASHER(Mekanism.machineBlock2ID, 7, "ChemicalWasher", 36, 20000, TileEntityChemicalWasher.class, true, false),
|
||||
CHEMICAL_CRYSTALIZER(Mekanism.machineBlock2ID, 8, "ChemicalCrystalizer", 37, 20000, TileEntityChemicalCrystalizer.class, true, false);
|
||||
CHEMICAL_CRYSTALIZER(Mekanism.machineBlock2ID, 8, "ChemicalCrystalizer", 37, 20000, TileEntityChemicalCrystalizer.class, true, false),
|
||||
SEISMIC_VIBRATOR(Mekanism.machineBlock2ID, 9, "SeismicVibrator", 39, 20000, TileEntitySeismicVibrator.class, false, false);
|
||||
|
||||
public int typeId;
|
||||
public int meta;
|
||||
|
|
|
@ -0,0 +1,123 @@
|
|||
package mekanism.common.inventory.container;
|
||||
|
||||
import mekanism.common.inventory.slot.SlotEnergy.SlotDischarge;
|
||||
import mekanism.common.tile.TileEntitySeismicVibrator;
|
||||
import mekanism.common.util.ChargeUtils;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ContainerSeismicVibrator extends Container
|
||||
{
|
||||
private TileEntitySeismicVibrator tileEntity;
|
||||
|
||||
public ContainerSeismicVibrator(InventoryPlayer inventory, TileEntitySeismicVibrator tentity)
|
||||
{
|
||||
tileEntity = tentity;
|
||||
addSlotToContainer(new SlotDischarge(tentity, 0, 27, 14));
|
||||
int slotX;
|
||||
|
||||
for(slotX = 0; slotX < 3; ++slotX)
|
||||
{
|
||||
for(int slotY = 0; slotY < 9; ++slotY)
|
||||
{
|
||||
addSlotToContainer(new Slot(inventory, slotY + slotX * 9 + 9, 8 + slotY * 18, 84 + slotX * 18));
|
||||
}
|
||||
}
|
||||
|
||||
for(slotX = 0; slotX < 9; ++slotX)
|
||||
{
|
||||
addSlotToContainer(new Slot(inventory, slotX, 8 + slotX * 18, 142));
|
||||
}
|
||||
|
||||
tileEntity.open(inventory.player);
|
||||
tileEntity.openChest();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onContainerClosed(EntityPlayer entityplayer)
|
||||
{
|
||||
super.onContainerClosed(entityplayer);
|
||||
|
||||
tileEntity.close(entityplayer);
|
||||
tileEntity.closeChest();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(EntityPlayer entityplayer)
|
||||
{
|
||||
return tileEntity.isUseableByPlayer(entityplayer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer player, int slotID)
|
||||
{
|
||||
ItemStack stack = null;
|
||||
Slot currentSlot = (Slot)inventorySlots.get(slotID);
|
||||
|
||||
if(currentSlot != null && currentSlot.getHasStack())
|
||||
{
|
||||
ItemStack slotStack = currentSlot.getStack();
|
||||
stack = slotStack.copy();
|
||||
|
||||
if(ChargeUtils.canBeDischarged(slotStack))
|
||||
{
|
||||
if(slotID != 0)
|
||||
{
|
||||
if(!mergeItemStack(slotStack, 0, 1, false))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else if(slotID == 0)
|
||||
{
|
||||
if(!mergeItemStack(slotStack, 1, inventorySlots.size(), true))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(slotID >= 1 && slotID <= 27)
|
||||
{
|
||||
if(!mergeItemStack(slotStack, 28, inventorySlots.size(), false))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else if(slotID > 27)
|
||||
{
|
||||
if(!mergeItemStack(slotStack, 1, 27, false))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(!mergeItemStack(slotStack, 1, inventorySlots.size(), true))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(slotStack.stackSize == 0)
|
||||
{
|
||||
currentSlot.putStack((ItemStack)null);
|
||||
}
|
||||
else {
|
||||
currentSlot.onSlotChanged();
|
||||
}
|
||||
|
||||
if(slotStack.stackSize == stack.stackSize)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
currentSlot.onPickupFromSlot(player, slotStack);
|
||||
}
|
||||
|
||||
return stack;
|
||||
}
|
||||
}
|
|
@ -30,7 +30,7 @@ public class ItemAtomicDisassembler extends ItemEnergized
|
|||
|
||||
public ItemAtomicDisassembler(int id)
|
||||
{
|
||||
super(id, 1000000, 120);
|
||||
super(id, 1000000);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -34,7 +34,7 @@ public class ItemConfigurator extends ItemEnergized implements IToolWrench
|
|||
|
||||
public ItemConfigurator(int id)
|
||||
{
|
||||
super(id, 60000, 120);
|
||||
super(id, 60000);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -17,7 +17,7 @@ public class ItemElectricBow extends ItemEnergized
|
|||
{
|
||||
public ItemElectricBow(int id)
|
||||
{
|
||||
super(id, 120000, 120);
|
||||
super(id, 120000);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -22,7 +22,7 @@ public class ItemEnergized extends ItemMekanism implements IEnergizedItem, ISpec
|
|||
/** The maximum amount of energy this item can hold. */
|
||||
public double MAX_ELECTRICITY;
|
||||
|
||||
public ItemEnergized(int id, double maxElectricity, float voltage)
|
||||
public ItemEnergized(int id, double maxElectricity)
|
||||
{
|
||||
super(id);
|
||||
MAX_ELECTRICITY = maxElectricity;
|
||||
|
|
|
@ -16,7 +16,7 @@ public class ItemNetworkReader extends ItemEnergized
|
|||
|
||||
public ItemNetworkReader(int id)
|
||||
{
|
||||
super(id, 60000, 120);
|
||||
super(id, 60000);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -14,7 +14,7 @@ public class ItemPortableTeleporter extends ItemEnergized
|
|||
{
|
||||
public ItemPortableTeleporter(int id)
|
||||
{
|
||||
super(id, 1000000, 120);
|
||||
super(id, 1000000);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -21,7 +21,7 @@ public class ItemRobit extends ItemEnergized implements ISustainedInventory
|
|||
{
|
||||
public ItemRobit(int id)
|
||||
{
|
||||
super(id, 100000, 120);
|
||||
super(id, 100000);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
52
common/mekanism/common/item/ItemSeismicReader.java
Normal file
52
common/mekanism/common/item/ItemSeismicReader.java
Normal file
|
@ -0,0 +1,52 @@
|
|||
package mekanism.common.item;
|
||||
|
||||
import mekanism.api.Chunk3D;
|
||||
import mekanism.api.EnumColor;
|
||||
import mekanism.common.Mekanism;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class ItemSeismicReader extends ItemEnergized
|
||||
{
|
||||
public static final double ENERGY_USAGE = 250;
|
||||
|
||||
public ItemSeismicReader(int id)
|
||||
{
|
||||
super(id, 12000);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canSend(ItemStack itemStack)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)
|
||||
{
|
||||
Chunk3D chunk = new Chunk3D(entityplayer);
|
||||
|
||||
if(!world.isRemote)
|
||||
{
|
||||
if(getEnergy(itemstack) < ENERGY_USAGE)
|
||||
{
|
||||
entityplayer.addChatMessage(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.RED + MekanismUtils.localize("tooltip.seismicReader.needsEnergy"));
|
||||
}
|
||||
else if(!MekanismUtils.isChunkVibrated(chunk))
|
||||
{
|
||||
entityplayer.addChatMessage(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.RED + MekanismUtils.localize("tooltip.seismicReader.noVibrations"));
|
||||
}
|
||||
|
||||
if(!entityplayer.capabilities.isCreativeMode)
|
||||
{
|
||||
setEnergy(itemstack, getEnergy(itemstack)-ENERGY_USAGE);
|
||||
}
|
||||
}
|
||||
|
||||
entityplayer.openGui(Mekanism.instance, 38, world, (int)entityplayer.posX, (int)entityplayer.posY, (int)entityplayer.posZ);
|
||||
|
||||
return itemstack;
|
||||
}
|
||||
}
|
|
@ -73,6 +73,7 @@ public class PacketConfigSync implements IMekanismPacket
|
|||
Mekanism.chemicalDissolutionChamberUsage = dataStream.readDouble();
|
||||
Mekanism.chemicalWasherUsage = dataStream.readDouble();
|
||||
Mekanism.chemicalCrystalizerUsage = dataStream.readDouble();
|
||||
Mekanism.seismicVibratorUsage = dataStream.readDouble();
|
||||
|
||||
for(IModule module : Mekanism.modulesLoaded)
|
||||
{
|
||||
|
@ -129,6 +130,7 @@ public class PacketConfigSync implements IMekanismPacket
|
|||
dataStream.writeDouble(Mekanism.chemicalDissolutionChamberUsage);
|
||||
dataStream.writeDouble(Mekanism.chemicalWasherUsage);
|
||||
dataStream.writeDouble(Mekanism.chemicalCrystalizerUsage);
|
||||
dataStream.writeDouble(Mekanism.seismicVibratorUsage);
|
||||
|
||||
for(IModule module : Mekanism.modulesLoaded)
|
||||
{
|
||||
|
|
|
@ -230,7 +230,7 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I
|
|||
}
|
||||
}
|
||||
|
||||
if(doEject && delayTicks == 0 && getTopEject(false, null) != null && getEjectInv() != null)
|
||||
if(doEject && delayTicks == 0 && getTopEject(false, null) != null && getEjectInv() != null && getEjectTile() != null)
|
||||
{
|
||||
if(getEjectInv() instanceof IInventory)
|
||||
{
|
||||
|
|
191
common/mekanism/common/tile/TileEntitySeismicVibrator.java
Normal file
191
common/mekanism/common/tile/TileEntitySeismicVibrator.java
Normal file
|
@ -0,0 +1,191 @@
|
|||
package mekanism.common.tile;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import mekanism.api.Coord4D;
|
||||
import mekanism.common.IActiveState;
|
||||
import mekanism.common.IRedstoneControl;
|
||||
import mekanism.common.Mekanism;
|
||||
import mekanism.common.PacketHandler;
|
||||
import mekanism.common.IRedstoneControl.RedstoneControl;
|
||||
import mekanism.common.PacketHandler.Transmission;
|
||||
import mekanism.common.block.BlockMachine.MachineType;
|
||||
import mekanism.common.network.PacketTileEntity;
|
||||
import mekanism.common.util.ChargeUtils;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
|
||||
public class TileEntitySeismicVibrator extends TileEntityElectricBlock implements IActiveState, IRedstoneControl
|
||||
{
|
||||
public boolean isActive;
|
||||
|
||||
public boolean clientActive;
|
||||
|
||||
public int updateDelay;
|
||||
|
||||
public RedstoneControl controlType = RedstoneControl.DISABLED;
|
||||
|
||||
public TileEntitySeismicVibrator()
|
||||
{
|
||||
super("SeismicReader", MachineType.SEISMIC_VIBRATOR.baseEnergy);
|
||||
|
||||
inventory = new ItemStack[1];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate()
|
||||
{
|
||||
super.onUpdate();
|
||||
|
||||
if(worldObj.isRemote)
|
||||
{
|
||||
if(updateDelay > 0)
|
||||
{
|
||||
updateDelay--;
|
||||
|
||||
if(updateDelay == 0 && clientActive != isActive)
|
||||
{
|
||||
isActive = clientActive;
|
||||
MekanismUtils.updateBlock(worldObj, xCoord, yCoord, zCoord);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(updateDelay > 0)
|
||||
{
|
||||
updateDelay--;
|
||||
|
||||
if(updateDelay == 0 && clientActive != isActive)
|
||||
{
|
||||
PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity().setParams(Coord4D.get(this), getNetworkedData(new ArrayList())));
|
||||
}
|
||||
}
|
||||
|
||||
ChargeUtils.discharge(0, this);
|
||||
|
||||
if(MekanismUtils.canFunction(this) && getEnergy() > Mekanism.seismicVibratorUsage)
|
||||
{
|
||||
setActive(true);
|
||||
setEnergy(getEnergy()-Mekanism.seismicVibratorUsage);
|
||||
}
|
||||
else {
|
||||
setActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
if(getActive())
|
||||
{
|
||||
Mekanism.activeVibrators.add(Coord4D.get(this));
|
||||
}
|
||||
else {
|
||||
Mekanism.activeVibrators.remove(Coord4D.get(this));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate()
|
||||
{
|
||||
super.invalidate();
|
||||
|
||||
Mekanism.activeVibrators.remove(Coord4D.get(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbtTags)
|
||||
{
|
||||
super.writeToNBT(nbtTags);
|
||||
|
||||
nbtTags.setBoolean("isActive", isActive);
|
||||
nbtTags.setInteger("controlType", controlType.ordinal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbtTags)
|
||||
{
|
||||
super.readFromNBT(nbtTags);
|
||||
|
||||
clientActive = isActive = nbtTags.getBoolean("isActive");
|
||||
controlType = RedstoneControl.values()[nbtTags.getInteger("controlType")];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handlePacketData(ByteArrayDataInput dataStream)
|
||||
{
|
||||
super.handlePacketData(dataStream);
|
||||
|
||||
clientActive = dataStream.readBoolean();
|
||||
controlType = RedstoneControl.values()[dataStream.readInt()];
|
||||
|
||||
if(updateDelay == 0 && clientActive != isActive)
|
||||
{
|
||||
updateDelay = Mekanism.UPDATE_DELAY;
|
||||
isActive = clientActive;
|
||||
MekanismUtils.updateBlock(worldObj, xCoord, yCoord, zCoord);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ArrayList getNetworkedData(ArrayList data)
|
||||
{
|
||||
super.getNetworkedData(data);
|
||||
|
||||
data.add(isActive);
|
||||
data.add(controlType.ordinal());
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setActive(boolean active)
|
||||
{
|
||||
isActive = active;
|
||||
|
||||
if(clientActive != active && updateDelay == 0)
|
||||
{
|
||||
PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity().setParams(Coord4D.get(this), getNetworkedData(new ArrayList())));
|
||||
|
||||
updateDelay = 10;
|
||||
clientActive = active;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getActive()
|
||||
{
|
||||
return isActive;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderUpdate()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean lightUpdate()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canSetFacing(int facing)
|
||||
{
|
||||
return facing != 0 && facing != 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RedstoneControl getControlType()
|
||||
{
|
||||
return controlType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setControlType(RedstoneControl type)
|
||||
{
|
||||
controlType = type;
|
||||
MekanismUtils.saveChunk(this);
|
||||
}
|
||||
}
|
|
@ -12,6 +12,7 @@ import java.util.Arrays;
|
|||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import mekanism.api.Chunk3D;
|
||||
import mekanism.api.Coord4D;
|
||||
import mekanism.api.EnumColor;
|
||||
import mekanism.api.gas.Gas;
|
||||
|
@ -1265,6 +1266,24 @@ public final class MekanismUtils
|
|||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether or not the provided chunk is being vibrated by a Seismic Vibrator.
|
||||
* @param chunk - chunk to check
|
||||
* @return if the chunk is being vibrated
|
||||
*/
|
||||
public static boolean isChunkVibrated(Chunk3D chunk)
|
||||
{
|
||||
for(Coord4D coord : Mekanism.activeVibrators)
|
||||
{
|
||||
if(coord.getChunk3D().equals(chunk))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static enum ResourceType
|
||||
{
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 3.6 KiB |
BIN
resources/assets/mekanism/gui/GuiSeismicReader.png
Normal file
BIN
resources/assets/mekanism/gui/GuiSeismicReader.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.5 KiB |
BIN
resources/assets/mekanism/gui/GuiSeismicVibrator.png
Normal file
BIN
resources/assets/mekanism/gui/GuiSeismicVibrator.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.6 KiB |
|
@ -34,6 +34,7 @@ item.BrineBucket.name=Brine Bucket
|
|||
item.FreeRunners.name=Free Runners
|
||||
item.ArmoredJetpack.name=Armored Jetpack
|
||||
item.FilterCard.name=Filter Card
|
||||
item.SeismicReader.name=Seismic Reader
|
||||
|
||||
//Gas Tank
|
||||
tile.GasTank.GasTank.name=Gas Tank
|
||||
|
@ -91,6 +92,7 @@ tile.MachineBlock2.PrecisionSawmill.name=Precision Sawmill
|
|||
tile.MachineBlock2.ChemicalDissolutionChamber.name=Chemical Dissolution Chamber
|
||||
tile.MachineBlock2.ChemicalWasher.name=Chemical Washer
|
||||
tile.MachineBlock2.ChemicalCrystalizer.name=Chemical Crystalizer
|
||||
tile.MachineBlock2.SeismicVibrator.name=Seismic Vibrator
|
||||
|
||||
//Infuse types
|
||||
infuse.carbon=Carbon
|
||||
|
@ -270,6 +272,7 @@ gui.filters=Filters
|
|||
gui.idle=Idle
|
||||
gui.data=Data
|
||||
gui.newFilter=New Filter
|
||||
gui.energy=Energy
|
||||
|
||||
gui.chemicalInfuser.short=C. Infuser
|
||||
gui.chemicalDissolutionChamber.short=C. Dissolution Chamber
|
||||
|
@ -292,6 +295,11 @@ gui.factory.purifying=Purifying
|
|||
gui.factory.injecting=Injecting
|
||||
gui.factory.autoSort=Auto-sort
|
||||
|
||||
gui.seismicReader.short=S. Reader
|
||||
gui.seismicReader.solids=Solids
|
||||
gui.seismicReader.fluids=Fluids
|
||||
gui.seismicReader.reading=Reading
|
||||
|
||||
gui.filterSelect.title=Create New Filter
|
||||
|
||||
gui.oredictFilter=OreDict Filter
|
||||
|
@ -377,6 +385,9 @@ tooltip.jetpack.regular=Regular
|
|||
tooltip.jetpack.hover=Hover
|
||||
tooltip.jetpack.disabled=Disabled
|
||||
|
||||
tooltip.seismicReader.needsEnergy=Not enough energy to interpret vibration
|
||||
tooltip.seismicReader.noVibrations=Unable to discover any vibrations
|
||||
|
||||
tooltip.EnrichmentChamber=A simple machine used to enrich ores into !ntwo of their dust counterparts, as well as !nperform many other operations.
|
||||
tooltip.OsmiumCompressor=A fairly advanced machine used to compress !nosmium into various dusts in order to create !ntheir ingot counterparts.
|
||||
tooltip.Combiner=A machine used to combine dusts and cobblestone to !nform their ore counterparts.
|
||||
|
|
BIN
resources/assets/mekanism/textures/blocks/SeismicVibrator.png
Normal file
BIN
resources/assets/mekanism/textures/blocks/SeismicVibrator.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
BIN
resources/assets/mekanism/textures/items/SeismicReader.png
Normal file
BIN
resources/assets/mekanism/textures/items/SeismicReader.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
Loading…
Reference in a new issue