CC-Tweaked/src/main/java/dan200/computercraft/shared/peripheral/modem/wireless/WirelessModemPeripheral.java

67 lines
2.0 KiB
Java

/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2021. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.shared.peripheral.modem.wireless;
import dan200.computercraft.ComputerCraft;
import dan200.computercraft.api.network.IPacketNetwork;
import dan200.computercraft.shared.peripheral.modem.ModemPeripheral;
import dan200.computercraft.shared.peripheral.modem.ModemState;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;
public abstract class WirelessModemPeripheral extends ModemPeripheral
{
private final boolean advanced;
public WirelessModemPeripheral( ModemState state, boolean advanced )
{
super( state );
this.advanced = advanced;
}
@Override
public boolean isInterdimensional()
{
return advanced;
}
@Override
public double getRange()
{
if( advanced )
{
return Integer.MAX_VALUE;
}
else
{
World world = getWorld();
if( world != null )
{
Vec3d position = getPosition();
double minRange = ComputerCraft.modemRange;
double maxRange = ComputerCraft.modemHighAltitudeRange;
if( world.isRaining() && world.isThundering() )
{
minRange = ComputerCraft.modemRangeDuringStorm;
maxRange = ComputerCraft.modemHighAltitudeRangeDuringStorm;
}
if( position.y > 96.0 && maxRange > minRange )
{
return minRange + (position.y - 96.0) * ((maxRange - minRange) / ((world.getMaxBuildHeight() - 1) - 96.0));
}
return minRange;
}
return 0.0;
}
}
@Override
protected IPacketNetwork getNetwork()
{
return WirelessNetwork.getUniversal();
}
}