@Override public void updateEntity() { oldDishRotation = dishRotation; if (isSensorActive) { dishSpeed = Math.min(dishSpeed + 0.2F, 10); } else { dishSpeed = Math.max(dishSpeed - 0.2F, 0); } dishRotation += dishSpeed; if (worldObj.isRemote) { int sensorRange = getRange(); if (oldSensorRange != sensorRange || oldSensorRange == 0) { oldSensorRange = sensorRange; if (!firstRun) rangeLineRenderer.resetRendering(sensorRange); } rangeLineRenderer.update(); } super.updateEntity(); if (!worldObj.isRemote) { ticksExisted++; ISensorSetting sensor = SensorHandler.instance().getSensorFromPath(sensorSetting); if (sensor != null && getPressure(ForgeDirection.UNKNOWN) > PneumaticValues.MIN_PRESSURE_UNIVERSAL_SENSOR) { isSensorActive = true; addAir(-PneumaticValues.USAGE_UNIVERSAL_SENSOR, ForgeDirection.UNKNOWN); if (sensor instanceof IPollSensorSetting) { if (ticksExisted % ((IPollSensorSetting) sensor).getPollFrequency() == 0) { int newRedstoneStrength = ((IPollSensorSetting) sensor) .getRedstoneValue(worldObj, xCoord, yCoord, zCoord, getRange(), sensorGuiText); if (invertedRedstone) newRedstoneStrength = 15 - newRedstoneStrength; if (newRedstoneStrength != redstoneStrength) { redstoneStrength = newRedstoneStrength; if (requestPollPullEvent) { notifyComputers(redstoneStrength); } updateNeighbours(); } } eventTimer = 0; } else { if (eventTimer > 0) { eventTimer--; if (eventTimer == 0 && redstoneStrength != (invertedRedstone ? 15 : 0)) { redstoneStrength = invertedRedstone ? 15 : 0; updateNeighbours(); } } } } else { isSensorActive = false; if (redstoneStrength != (invertedRedstone ? 15 : 0)) { redstoneStrength = invertedRedstone ? 15 : 0; updateNeighbours(); } } } }
@Override public void handleGUIButtonPress(int buttonID, EntityPlayer player) { if (buttonID >= 10 && buttonID % 10 == 0) { String[] directories = SensorHandler.instance().getDirectoriesAtLocation(getSensorSetting()); if (buttonID / 10 <= directories.length) { // <= because of the redstone button being 0. if (getSensorSetting().equals("")) { setSensorSetting(directories[buttonID / 10 - 1]); } else { setSensorSetting(getSensorSetting() + "/" + directories[buttonID / 10 - 1]); } } } else if (buttonID == 1) { // the 'back' button String[] folders = getSensorSetting().split("/"); String newPath = getSensorSetting().replace(folders[folders.length - 1], ""); if (newPath.endsWith("/")) { newPath = newPath.substring(0, newPath.length() - 1); } setSensorSetting(newPath); } else if (buttonID == 0) { invertedRedstone = !invertedRedstone; redstoneStrength = 15 - redstoneStrength; updateNeighbours(); } }
private boolean setSensorSetting(ISensorSetting sensor) { if (areGivenUpgradesInserted( SensorHandler.instance().getRequiredStacksFromText(sensor.getSensorPath()))) { setSensorSetting(sensor.getSensorPath()); return true; } else { return false; } }
@Override public void setInventorySlotContents(int slot, ItemStack itemStack) { // super.setInventorySlotContents(slot, itemStack); inventory[slot] = itemStack; if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { itemStack.stackSize = getInventoryStackLimit(); } if (!worldObj.isRemote && !getSensorSetting().equals("") && !areGivenUpgradesInserted( SensorHandler.instance().getRequiredStacksFromText(getSensorSetting()))) { setSensorSetting(""); } }
public void onEvent(Event event) { ISensorSetting sensor = SensorHandler.instance().getSensorFromPath(sensorSetting); if (sensor != null && sensor instanceof IEventSensorSetting && getPressure(ForgeDirection.UNKNOWN) > PneumaticValues.MIN_PRESSURE_UNIVERSAL_SENSOR) { int newRedstoneStrength = ((IEventSensorSetting) sensor) .emitRedstoneOnEvent(event, this, getRange(), sensorGuiText); if (newRedstoneStrength != 0) eventTimer = ((IEventSensorSetting) sensor).getRedstonePulseLength(); if (invertedRedstone) newRedstoneStrength = 15 - newRedstoneStrength; if (eventTimer > 0 && ThirdPartyManager.computerCraftLoaded) notifyComputers(newRedstoneStrength); if (newRedstoneStrength != redstoneStrength) { redstoneStrength = newRedstoneStrength; updateNeighbours(); } } }