Fixed a few recipes, also started work on Digital Miner visual

This commit is contained in:
Aidan C. Brady 2014-07-20 23:29:35 -04:00
parent c1b317dcde
commit 7e525e10c6
17 changed files with 222 additions and 84 deletions

View file

@ -579,4 +579,16 @@ public class ClientProxy extends CommonProxy
return Minecraft.getMinecraft().thePlayer;
}
}
@Override
public void toggleMinerRender(Coord4D coord)
{
if(MekanismClient.renderingMiners.contains(coord))
{
MekanismClient.renderingMiners.remove(coord);
}
else {
MekanismClient.renderingMiners.add(coord);
}
}
}

View file

@ -1,5 +1,9 @@
package mekanism.client;
import java.util.HashSet;
import java.util.Set;
import mekanism.api.Coord4D;
import mekanism.api.MekanismAPI;
import mekanism.api.MekanismAPI.BoxBlacklistEvent;
import mekanism.client.sound.SoundHandler;
@ -9,9 +13,6 @@ import mekanism.common.network.PacketKey.KeyMessage;
import net.minecraft.client.Minecraft;
import net.minecraft.client.settings.KeyBinding;
import net.minecraftforge.common.MinecraftForge;
import org.lwjgl.input.Keyboard;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@ -22,6 +23,8 @@ public class MekanismClient extends Mekanism
public static SoundHandler audioHandler;
public static VoiceClient voiceClient;
public static Set<Coord4D> renderingMiners = new HashSet<Coord4D>();
//General Configuration
public static boolean enableSounds = true;
@ -61,7 +64,10 @@ public class MekanismClient extends Mekanism
Mekanism.jetpackOn.clear();
Mekanism.gasmaskOn.clear();
Mekanism.flamethrowerActive.clear();
Mekanism.activeVibrators.clear();
renderingMiners.clear();
Mekanism.proxy.loadConfiguration();

View file

@ -0,0 +1,43 @@
package mekanism.client.render;
import java.util.HashMap;
import java.util.Map;
import mekanism.client.render.MekanismRenderer.DisplayInteger;
public final class MinerVisualRenderer
{
private Map<MinerRenderData, DisplayInteger> cachedVisuals = new HashMap<MinerRenderData, DisplayInteger>();
public class MinerRenderData
{
public int minY;
public int maxY;
public int radius;
public MinerRenderData(int min, int max, int rad)
{
minY = min;
maxY = max;
radius = rad;
}
@Override
public boolean equals(Object data)
{
return data instanceof MinerRenderData && super.equals(data) && ((MinerRenderData)data).minY == minY &&
((MinerRenderData)data).maxY == maxY && ((MinerRenderData)data).radius == radius;
}
@Override
public int hashCode()
{
int code = 1;
code = 31 * code + super.hashCode();
code = 31 * code + minY;
code = 31 * code + maxY;
code = 31 * code + radius;
return code;
}
}
}

View file

@ -1,17 +1,22 @@
package mekanism.client.render;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.Set;
import org.lwjgl.opengl.GL11;
import mekanism.api.Coord4D;
import mekanism.api.EnumColor;
import mekanism.api.Pos3D;
import mekanism.client.MekanismClient;
import mekanism.common.Mekanism;
import mekanism.common.item.ItemFlamethrower;
import mekanism.common.item.ItemJetpack;
import mekanism.common.item.ItemScubaTank;
import mekanism.common.tile.TileEntityDigitalMiner;
import mekanism.common.util.MekanismUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
@ -208,9 +213,32 @@ public class RenderTickHandler
}
}
}
for(Iterator<Coord4D> iter = MekanismClient.renderingMiners.iterator(); iter.hasNext();)
{
Coord4D coord = iter.next();
if(coord.exists(mc.theWorld))
{
if(coord.getTileEntity(mc.theWorld) instanceof TileEntityDigitalMiner)
{
}
else {
iter.remove();
}
}
}
}
}
}
public void renderMinerVisual(TileEntityDigitalMiner tileEntity)
{
GL11.glPushMatrix();
GL11.glPopMatrix();
}
public void spawnAndSetParticle(String s, World world, double x, double y, double z, double velX, double velY, double velZ)
{

View file

@ -2,6 +2,7 @@ package mekanism.common;
import java.io.File;
import mekanism.api.Coord4D;
import mekanism.api.MekanismAPI;
import mekanism.common.EnergyDisplay.EnergyType;
import mekanism.common.entity.EntityRobit;
@ -468,4 +469,6 @@ public class CommonProxy
{
return context.getServerHandler().playerEntity;
}
public void toggleMinerRender(Coord4D coord) {}
}

View file

@ -2,16 +2,16 @@ package mekanism.common;
import ic2.api.energy.tile.IEnergySink;
import mekanism.api.Coord4D;
import mekanism.api.IConfigurable;
import mekanism.api.IFilterAccess;
import mekanism.api.energy.IStrictEnergyAcceptor;
import mekanism.api.energy.IStrictEnergyStorage;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import cpw.mods.fml.common.Optional.Interface;
import cpw.mods.fml.common.Optional.InterfaceList;
import buildcraft.api.power.IPowerReceptor;
import cofh.api.energy.IEnergyHandler;
import cpw.mods.fml.common.Optional.Interface;
import cpw.mods.fml.common.Optional.InterfaceList;
import dan200.computercraft.api.peripheral.IPeripheral;
@InterfaceList({
@ -20,7 +20,7 @@ import dan200.computercraft.api.peripheral.IPeripheral;
@Interface(iface = "cofh.api.energy.IEnergyHandler", modid = "CoFHAPI|energy"),
@Interface(iface = "dan200.computercraft.api.peripheral.IPeripheral", modid = "ComputerCraft")
})
public interface IAdvancedBoundingBlock extends IBoundingBlock, ISidedInventory, IEnergySink, IStrictEnergyAcceptor, IPowerReceptor, IStrictEnergyStorage, IEnergyHandler, IPeripheral, IFilterAccess
public interface IAdvancedBoundingBlock extends IBoundingBlock, ISidedInventory, IEnergySink, IStrictEnergyAcceptor, IPowerReceptor, IStrictEnergyStorage, IEnergyHandler, IPeripheral, IFilterAccess, IConfigurable
{
public int[] getBoundSlots(Coord4D location, int side);

View file

@ -674,10 +674,10 @@ public class Mekanism
"TTT", "TET", "TTT", Character.valueOf('E'), "alloyAdvanced", Character.valueOf('T'), new ItemStack(PartTransmitter, 1, 4)
}));
CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(PartTransmitter, 8, 6), new Object[] {
"TTT", "TRT", "TTT", Character.valueOf('R'), "alloyElite", Character.valueOf('T'), new ItemStack(PartTransmitter, 1, 9)
"TTT", "TRT", "TTT", Character.valueOf('R'), "alloyElite", Character.valueOf('T'), new ItemStack(PartTransmitter, 1, 5)
}));
CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(PartTransmitter, 8, 7), new Object[] {
"TTT", "TAT", "TTT", Character.valueOf('A'), "alloyUltimate", Character.valueOf('T'), new ItemStack(PartTransmitter, 1, 10)
"TTT", "TAT", "TTT", Character.valueOf('A'), "alloyUltimate", Character.valueOf('T'), new ItemStack(PartTransmitter, 1, 6)
}));
CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(PartTransmitter, 8, 8), new Object[] {
"SGS", Character.valueOf('S'), "ingotSteel", Character.valueOf('G'), "blockGlass"

View file

@ -22,11 +22,10 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.tools.IToolWrench;
import cpw.mods.fml.common.Optional.Interface;
import cpw.mods.fml.common.Optional.Method;
import buildcraft.api.tools.IToolWrench;
@Interface(iface = "buildcraft.api.tools.IToolWrench", modid = "BuildCraftAPI|tools")
public class ItemConfigurator extends ItemEnergized implements IToolWrench
{
@ -63,23 +62,23 @@ public class ItemConfigurator extends ItemEnergized implements IToolWrench
@Override
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ)
{
TileEntity tile = world.getTileEntity(x, y, z);
if(tile instanceof IConfigurable)
{
IConfigurable config = (IConfigurable)tile;
if(player.isSneaking())
{
config.onSneakRightClick(player, side);
}
else {
config.onRightClick(player, side);
}
}
if(!world.isRemote)
{
TileEntity tile = world.getTileEntity(x, y, z);
if(tile instanceof IConfigurable)
{
IConfigurable config = (IConfigurable)tile;
if(player.isSneaking())
{
config.onSneakRightClick(player, side);
}
else {
config.onRightClick(player, side);
}
}
if(getState(stack) == 0)
{
if(tile instanceof IInvConfiguration)

View file

@ -590,25 +590,30 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
@Override
public boolean onSneakRightClick(EntityPlayer player, int side)
{
ExtendedMOP hit = (ExtendedMOP)RayTracer.retraceBlock(world(), player, x(), y(), z());
if(hit == null)
if(!world().isRemote)
{
return false;
}
else if(hit.subHit < 6)
{
connectionTypes[hit.subHit] = connectionTypes[hit.subHit].next();
sendDesc = true;
onModeChange(ForgeDirection.getOrientation(side));
player.addChatMessage(new ChatComponentText("Connection type changed to " + connectionTypes[hit.subHit].toString()));
return true;
}
else {
return onConfigure(player, hit.subHit, side);
ExtendedMOP hit = (ExtendedMOP)RayTracer.retraceBlock(world(), player, x(), y(), z());
if(hit == null)
{
return false;
}
else if(hit.subHit < 6)
{
connectionTypes[hit.subHit] = connectionTypes[hit.subHit].next();
sendDesc = true;
onModeChange(ForgeDirection.getOrientation(side));
player.addChatMessage(new ChatComponentText("Connection type changed to " + connectionTypes[hit.subHit].toString()));
return true;
}
else {
return onConfigure(player, hit.subHit, side);
}
}
return true;
}
protected boolean onConfigure(EntityPlayer player, int part, int side)
@ -624,11 +629,15 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
@Override
public boolean onRightClick(EntityPlayer player, int side)
{
redstoneReactive ^= true;
refreshConnections();
tile().notifyPartChange(this);
player.addChatMessage(new ChatComponentText(EnumColor.DARK_BLUE + "[Mekanism]" + EnumColor.GREY + " Redstone sensitivity turned " + EnumColor.INDIGO + (redstoneReactive ? "on." : "off.")));
if(!world().isRemote)
{
redstoneReactive ^= true;
refreshConnections();
tile().notifyPartChange(this);
player.addChatMessage(new ChatComponentText(EnumColor.DARK_BLUE + "[Mekanism]" + EnumColor.GREY + " Redstone sensitivity turned " + EnumColor.INDIGO + (redstoneReactive ? "on." : "off.")));
}
return true;
}

View file

@ -4,7 +4,6 @@ import java.util.HashSet;
import java.util.Set;
import mekanism.api.Coord4D;
import mekanism.api.IConfigurable;
import mekanism.api.transmitters.DynamicNetwork;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.TransmissionType;
@ -17,7 +16,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
import codechicken.multipart.TileMultipart;
public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends PartSidedPipe implements IGridTransmitter<N>, IConfigurable
public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends PartSidedPipe implements IGridTransmitter<N>
{
public N theNetwork;

View file

@ -2,6 +2,7 @@ package mekanism.common.tile;
import ic2.api.energy.tile.IEnergySink;
import mekanism.api.Coord4D;
import mekanism.api.IConfigurable;
import mekanism.api.IFilterAccess;
import mekanism.api.energy.IStrictEnergyAcceptor;
import mekanism.api.energy.IStrictEnergyStorage;
@ -14,14 +15,13 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.common.Optional.Interface;
import cpw.mods.fml.common.Optional.InterfaceList;
import cpw.mods.fml.common.Optional.Method;
import buildcraft.api.power.IPowerReceptor;
import buildcraft.api.power.PowerHandler;
import buildcraft.api.power.PowerHandler.PowerReceiver;
import cofh.api.energy.IEnergyHandler;
import cpw.mods.fml.common.Optional.Interface;
import cpw.mods.fml.common.Optional.InterfaceList;
import cpw.mods.fml.common.Optional.Method;
import dan200.computercraft.api.lua.ILuaContext;
import dan200.computercraft.api.peripheral.IComputerAccess;
import dan200.computercraft.api.peripheral.IPeripheral;
@ -32,7 +32,7 @@ import dan200.computercraft.api.peripheral.IPeripheral;
@Interface(iface = "cofh.api.energy.IEnergyHandler", modid = "CoFHAPI|energy"),
@Interface(iface = "dan200.computercraft.api.peripheral.IPeripheral", modid = "ComputerCraft")
})
public class TileEntityAdvancedBoundingBlock extends TileEntityBoundingBlock implements ISidedInventory, IEnergySink, IStrictEnergyAcceptor, IPowerReceptor, IStrictEnergyStorage, IEnergyHandler, IPeripheral, IFilterAccess
public class TileEntityAdvancedBoundingBlock extends TileEntityBoundingBlock implements ISidedInventory, IEnergySink, IStrictEnergyAcceptor, IPowerReceptor, IStrictEnergyStorage, IEnergyHandler, IPeripheral, IFilterAccess, IConfigurable
{
@Override
public int getSizeInventory()
@ -527,4 +527,26 @@ public class TileEntityAdvancedBoundingBlock extends TileEntityBoundingBlock imp
return getInv().getDataType();
}
@Override
public boolean onSneakRightClick(EntityPlayer player, int side)
{
if(getInv() == null)
{
return false;
}
return getInv().onSneakRightClick(player, side);
}
@Override
public boolean onRightClick(EntityPlayer player, int side)
{
if(getInv() == null)
{
return false;
}
return getInv().onRightClick(player, side);
}
}

View file

@ -562,8 +562,12 @@ public class TileEntityBin extends TileEntityBasicBlock implements ISidedInvento
@Override
public boolean onSneakRightClick(EntityPlayer player, int side)
{
setActive(!getActive());
worldObj.playSoundEffect(xCoord, yCoord, zCoord, "random.click", 0.3F, 1);
if(!worldObj.isRemote)
{
setActive(!getActive());
worldObj.playSoundEffect(xCoord, yCoord, zCoord, "random.click", 0.3F, 1);
}
return true;
}

View file

@ -1373,4 +1373,21 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I
{
return "tooltip.filterCard.digitalMiner";
}
@Override
public boolean onSneakRightClick(EntityPlayer player, int side)
{
if(worldObj.isRemote)
{
Mekanism.proxy.toggleMinerRender(Coord4D.get(this));
}
return true;
}
@Override
public boolean onRightClick(EntityPlayer player, int side)
{
return false;
}
}

View file

@ -549,10 +549,13 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
@Override
public boolean onSneakRightClick(EntityPlayer player, int side)
{
recurringNodes.clear();
cleaningNodes.clear();
player.addChatMessage(new ChatComponentText(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.GREY + MekanismUtils.localize("tooltip.configurator.pumpReset")));
if(!worldObj.isRemote)
{
recurringNodes.clear();
cleaningNodes.clear();
player.addChatMessage(new ChatComponentText(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.GREY + MekanismUtils.localize("tooltip.configurator.pumpReset")));
}
return true;
}

View file

@ -469,11 +469,14 @@ public class TileEntityFluidicPlenisher extends TileEntityElectricBlock implemen
@Override
public boolean onSneakRightClick(EntityPlayer player, int side)
{
activeNodes.clear();
usedNodes.clear();
finishedCalc = false;
player.addChatMessage(new ChatComponentText(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.GREY + MekanismUtils.localize("tooltip.configurator.plenisherReset")));
if(!worldObj.isRemote)
{
activeNodes.clear();
usedNodes.clear();
finishedCalc = false;
player.addChatMessage(new ChatComponentText(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.GREY + MekanismUtils.localize("tooltip.configurator.plenisherReset")));
}
return true;
}

View file

@ -12,8 +12,8 @@ import mekanism.common.IFluidContainerManager;
import mekanism.common.ISustainedTank;
import mekanism.common.Mekanism;
import mekanism.common.network.PacketTileEntity.TileEntityMessage;
import mekanism.common.util.FluidContainerUtils.ContainerEditMode;
import mekanism.common.util.FluidContainerUtils;
import mekanism.common.util.FluidContainerUtils.ContainerEditMode;
import mekanism.common.util.InventoryUtils;
import mekanism.common.util.MekanismUtils;
import net.minecraft.entity.player.EntityPlayer;
@ -474,8 +474,12 @@ public class TileEntityPortableTank extends TileEntityContainerBlock implements
@Override
public boolean onSneakRightClick(EntityPlayer player, int side)
{
setActive(!getActive());
worldObj.playSoundEffect(xCoord, yCoord, zCoord, "random.click", 0.3F, 1);
if(!worldObj.isRemote)
{
setActive(!getActive());
worldObj.playSoundEffect(xCoord, yCoord, zCoord, "random.click", 0.3F, 1);
}
return true;
}

View file

@ -7,14 +7,12 @@ import java.util.HashSet;
import java.util.Set;
import mekanism.api.Coord4D;
import mekanism.api.IConfigurable;
import mekanism.api.ISalinationSolar;
import mekanism.common.Mekanism;
import mekanism.common.network.PacketTileEntity.TileEntityMessage;
import mekanism.common.tank.TankUpdateProtocol;
import mekanism.common.util.MekanismUtils;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
@ -27,7 +25,7 @@ import net.minecraftforge.fluids.FluidTank;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class TileEntitySalinationController extends TileEntitySalinationTank implements IConfigurable
public class TileEntitySalinationController extends TileEntitySalinationTank
{
public static final int MAX_BRINE = 10000;
public static final int MAX_SOLARS = 4;
@ -629,18 +627,6 @@ public class TileEntitySalinationController extends TileEntitySalinationTank imp
return startPoint;
}
@Override
public boolean onSneakRightClick(EntityPlayer player, int side)
{
return false;
}
@Override
public boolean onRightClick(EntityPlayer player, int side)
{
return false;
}
@Override
public void handlePacketData(ByteBuf dataStream)