package com.someluigi.slperiph.tileentity; import java.io.PrintStream; import java.util.LinkedList; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import com.someluigi.slperiph.ComputerManipulation; import com.someluigi.slperiph.SLPMod; import com.someluigi.slperiph.server.SLPHTTPServer; import dan200.computer.api.IComputerAccess; import dan200.computer.api.IPeripheral; public class TileEntityHTTPD extends TileEntity implements IPeripheral { public static String[] methods = new String[] { "isActive", "respond", "start", "stop" }; public LinkedList<Object> reqsw = new LinkedList<Object>(); @Override public String getType() { return "http-server"; } @Override public String[] getMethodNames() { return TileEntityHTTPD.methods; } @Override public Object[] callMethod(IComputerAccess computer, int method, Object[] args) throws Exception { String mn = methods[method]; if (mn.equals("isActive")) return new Object[] { SLPMod.httpdEnabled }; if (mn.equals("respond")) { Object pso = this.reqsw.get((int) ((Double) args[0]).doubleValue()); if (pso instanceof PrintStream) { PrintStream ps = (PrintStream) pso; ps.print(args[1]); ps.close(); } } if (mn.equals("start")) { SLPHTTPServer.services.put(computer.getID(), new Object[] { computer, this }); } if (mn.equals("stop")) { SLPHTTPServer.services.remove(computer.getID()); } return null; } @Override public boolean canAttachToSide(int side) { if (SLPMod.debugM) { System.out.print("can attach?"); } return true; } @Override public void attach(IComputerAccess computer) { if (SLPMod.debugM) { System.out.print("attach"); } ComputerManipulation.mountDemoDir(computer); } @Override public void detach(IComputerAccess computer) { if (SLPMod.debugM) { System.out.print("detach"); } } @Override public void writeToNBT(NBTTagCompound nbttagcompound) { super.writeToNBT(nbttagcompound); } @Override public void readFromNBT(NBTTagCompound nbttagcompound) { super.readFromNBT(nbttagcompound); } }