package com.austinv11.peripheralsplusplus.tiles; import com.austinv11.peripheralsplusplus.reference.Config; import dan200.computercraft.api.lua.ILuaContext; import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.peripheral.IComputerAccess; import dan200.computercraft.api.peripheral.IPeripheral; import dan200.computercraft.api.turtle.ITurtleAccess; import net.minecraft.nbt.NBTTagCompound; public class TileEntityEnvironmentScanner extends MountedTileEntity { public static String publicName = "environmentScanner"; private String name = "tileEntityEnvironmentScanner"; private boolean isRaining = false; private String biome; private String temp; private boolean isSnow; private ITurtleAccess turtle; public TileEntityEnvironmentScanner() { super(); } public TileEntityEnvironmentScanner(ITurtleAccess turtle) { this.turtle = turtle; } public String getName() { return name; } @Override public void readFromNBT(NBTTagCompound nbttagcompound) { super.readFromNBT(nbttagcompound); } @Override public void writeToNBT(NBTTagCompound nbttagcompound) { super.writeToNBT(nbttagcompound); } @Override public void updateEntity() { if (worldObj != null) { isRaining = worldObj.isRaining(); biome = worldObj.getBiomeGenForCoords(xCoord, zCoord).biomeName; temp = worldObj.getBiomeGenForCoords(xCoord, zCoord).getTempCategory().name(); isSnow = worldObj.getBiomeGenForCoords(xCoord, zCoord).getEnableSnow(); } if (turtle != null) { this.setWorldObj(turtle.getWorld()); this.xCoord = turtle.getPosition().posX; this.zCoord = turtle.getPosition().posZ; } } @Override public String getType() { return publicName; } @Override public String[] getMethodNames() { return new String[]{"isRaining", "getBiome", "getTemperature", "getTemp", "isSnow"}; } @Override public Object[] callMethod(IComputerAccess computer, ILuaContext context, int method, Object[] arguments) throws LuaException, InterruptedException { if (!Config.enableEnvironmentScanner) throw new LuaException("Environment Scanners have been disabled"); switch (method) { case 0: return new Object[]{isRaining}; case 1: return new Object[]{biome}; case 2: case 3: return new Object[]{temp}; case 4: return new Object[]{isSnow}; } return new Object[0]; } @Override public boolean equals(IPeripheral other) { return (this == other); } }