Fixed wireless signal starting from Controller instead of per Wireless Transmitter individually, fixes #161
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
### 0.8.6
|
||||
**Bugfixes**
|
||||
- Fixed External Storage disconnecting on world reload
|
||||
- Fixed wireless signal starting from Controller instead of per Wireless Transmitter individually
|
||||
- Huge performance improvements to large networks
|
||||
|
||||
### 0.8.5
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ misc.refinedstorage:storage.full=%d%% full
|
||||
misc.refinedstorage:wireless_grid.tooltip.0=X: %d
|
||||
misc.refinedstorage:wireless_grid.tooltip.1=Y: %d
|
||||
misc.refinedstorage:wireless_grid.tooltip.2=Z: %d
|
||||
misc.refinedstorage:wireless_grid.out_of_range=Controller out of range.
|
||||
misc.refinedstorage:wireless_grid.out_of_range=There is no Wireless Transmitter in range.
|
||||
misc.refinedstorage:wireless_grid.not_found=Controller not found.
|
||||
|
||||
misc.refinedstorage:pattern.inputs=Inputs
|
||||
|
||||
@@ -44,7 +44,7 @@ misc.refinedstorage:storage.full=%d%% plein
|
||||
misc.refinedstorage:wireless_grid.tooltip.0=X: %d
|
||||
misc.refinedstorage:wireless_grid.tooltip.1=Y: %d
|
||||
misc.refinedstorage:wireless_grid.tooltip.2=Z: %d
|
||||
misc.refinedstorage:wireless_grid.out_of_range=Contrôleur hors de portés.
|
||||
misc.refinedstorage:wireless_grid.out_of_range=Il n'y a pas un Émetteur sans Fil dans la gamme.
|
||||
misc.refinedstorage:wireless_grid.not_found=Contrôleur non trouvé.
|
||||
|
||||
misc.refinedstorage:pattern.inputs=Inputs
|
||||
|
||||
@@ -44,7 +44,7 @@ misc.refinedstorage:storage.full=%d%% vol
|
||||
misc.refinedstorage:wireless_grid.tooltip.0=X: %d
|
||||
misc.refinedstorage:wireless_grid.tooltip.1=Y: %d
|
||||
misc.refinedstorage:wireless_grid.tooltip.2=Z: %d
|
||||
misc.refinedstorage:wireless_grid.out_of_range=Controller buiten bereik.
|
||||
misc.refinedstorage:wireless_grid.out_of_range=Er is geen Draadloze Zender binnen bereik.
|
||||
misc.refinedstorage:wireless_grid.not_found=Controller niet gevonden.
|
||||
|
||||
misc.refinedstorage:pattern.inputs=Inputs
|
||||
|
||||
@@ -44,7 +44,7 @@ misc.refinedstorage:storage.full=%d%% full
|
||||
misc.refinedstorage:wireless_grid.tooltip.0=X: %d
|
||||
misc.refinedstorage:wireless_grid.tooltip.1=Y: %d
|
||||
misc.refinedstorage:wireless_grid.tooltip.2=Z: %d
|
||||
misc.refinedstorage:wireless_grid.out_of_range=Controlador fora de alcance.
|
||||
misc.refinedstorage:wireless_grid.out_of_range=Não há Transmissor Sem Fio na gama.
|
||||
misc.refinedstorage:wireless_grid.not_found=Controlador não encontrado.
|
||||
|
||||
misc.refinedstorage:pattern.inputs=Entrada
|
||||
|
||||
Reference in New Issue
Block a user