Fixed wireless signal starting from Controller instead of per Wireless Transmitter individually, fixes #161
This commit is contained in:
@@ -30,11 +30,6 @@ public interface IWirelessGridHandler {
|
||||
*/
|
||||
void onClose(EntityPlayer player);
|
||||
|
||||
/**
|
||||
* @return The range wireless grids in this network can reach
|
||||
*/
|
||||
int getRange();
|
||||
|
||||
/**
|
||||
* Drains energy from the wireless grid of a player.
|
||||
*
|
||||
|
||||
18
src/main/java/refinedstorage/api/network/IWirelessTransmitter.java
Executable file
18
src/main/java/refinedstorage/api/network/IWirelessTransmitter.java
Executable file
@@ -0,0 +1,18 @@
|
||||
package refinedstorage.api.network;
|
||||
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
|
||||
/**
|
||||
* Represents a node that can send a wireless signal.
|
||||
*/
|
||||
public interface IWirelessTransmitter {
|
||||
/**
|
||||
* @return The range in blocks of this transmitter, starting from {@link IWirelessTransmitter#getOrigin()}
|
||||
*/
|
||||
int getRange();
|
||||
|
||||
/**
|
||||
* @return The position where the wireless signal starts
|
||||
*/
|
||||
BlockPos getOrigin();
|
||||
}
|
||||
@@ -8,12 +8,8 @@ import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.RefinedStorageGui;
|
||||
import refinedstorage.RefinedStorageItems;
|
||||
import refinedstorage.RefinedStorageUtils;
|
||||
import refinedstorage.api.network.INetworkMaster;
|
||||
import refinedstorage.api.network.INetworkNode;
|
||||
import refinedstorage.api.network.IWirelessGridHandler;
|
||||
import refinedstorage.api.network.WirelessGridConsumer;
|
||||
import refinedstorage.api.network.*;
|
||||
import refinedstorage.item.ItemWirelessGrid;
|
||||
import refinedstorage.tile.TileWirelessTransmitter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
@@ -54,9 +50,27 @@ public class WirelessGridHandler implements IWirelessGridHandler {
|
||||
|
||||
@Override
|
||||
public boolean onOpen(EntityPlayer player, EnumHand hand) {
|
||||
int distance = (int) Math.sqrt(Math.pow(network.getPosition().getX() - player.posX, 2) + Math.pow(network.getPosition().getY() - player.posY, 2) + Math.pow(network.getPosition().getZ() - player.posZ, 2));
|
||||
boolean inRange = false;
|
||||
|
||||
if (distance > getRange()) {
|
||||
for (INetworkNode node : network.getNodes()) {
|
||||
if (node instanceof IWirelessTransmitter) {
|
||||
IWirelessTransmitter transmitter = (IWirelessTransmitter) node;
|
||||
|
||||
int distance = (int) Math.sqrt(
|
||||
Math.pow(transmitter.getOrigin().getX() - player.posX, 2) +
|
||||
Math.pow(transmitter.getOrigin().getY() - player.posY, 2) +
|
||||
Math.pow(transmitter.getOrigin().getZ() - player.posZ, 2)
|
||||
);
|
||||
|
||||
if (distance < transmitter.getRange()) {
|
||||
inRange = true;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!inRange) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -80,19 +94,6 @@ public class WirelessGridHandler implements IWirelessGridHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRange() {
|
||||
int range = 0;
|
||||
|
||||
for (INetworkNode node : network.getNodes()) {
|
||||
if (node instanceof TileWirelessTransmitter) {
|
||||
range += ((TileWirelessTransmitter) node).getRange();
|
||||
}
|
||||
}
|
||||
|
||||
return range;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drainEnergy(EntityPlayer player, int energy) {
|
||||
WirelessGridConsumer consumer = getConsumer(player);
|
||||
|
||||
@@ -3,18 +3,20 @@ package refinedstorage.tile;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.items.CapabilityItemHandler;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.RefinedStorageItems;
|
||||
import refinedstorage.RefinedStorageUtils;
|
||||
import refinedstorage.api.network.IWirelessTransmitter;
|
||||
import refinedstorage.container.ContainerWirelessTransmitter;
|
||||
import refinedstorage.inventory.BasicItemHandler;
|
||||
import refinedstorage.inventory.BasicItemValidator;
|
||||
import refinedstorage.item.ItemUpgrade;
|
||||
|
||||
public class TileWirelessTransmitter extends TileNode {
|
||||
public class TileWirelessTransmitter extends TileNode implements IWirelessTransmitter {
|
||||
private BasicItemHandler upgrades = new BasicItemHandler(4, this, new BasicItemValidator(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_RANGE));
|
||||
|
||||
@Override
|
||||
@@ -42,10 +44,16 @@ public class TileWirelessTransmitter extends TileNode {
|
||||
return tag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRange() {
|
||||
return RefinedStorage.INSTANCE.wirelessTransmitterBaseRange + (RefinedStorageUtils.getUpgradeCount(upgrades, ItemUpgrade.TYPE_RANGE) * RefinedStorage.INSTANCE.wirelessTransmitterRangePerUpgrade);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockPos getOrigin() {
|
||||
return pos;
|
||||
}
|
||||
|
||||
public BasicItemHandler getUpgrades() {
|
||||
return upgrades;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user