diff --git a/CHANGELOG.md b/CHANGELOG.md index b82c5f312..3ed394d70 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/src/main/java/refinedstorage/api/network/IWirelessGridHandler.java b/src/main/java/refinedstorage/api/network/IWirelessGridHandler.java index 9e1282758..7913dcef3 100755 --- a/src/main/java/refinedstorage/api/network/IWirelessGridHandler.java +++ b/src/main/java/refinedstorage/api/network/IWirelessGridHandler.java @@ -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. * diff --git a/src/main/java/refinedstorage/api/network/IWirelessTransmitter.java b/src/main/java/refinedstorage/api/network/IWirelessTransmitter.java new file mode 100755 index 000000000..0f1739730 --- /dev/null +++ b/src/main/java/refinedstorage/api/network/IWirelessTransmitter.java @@ -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(); +} diff --git a/src/main/java/refinedstorage/apiimpl/network/WirelessGridHandler.java b/src/main/java/refinedstorage/apiimpl/network/WirelessGridHandler.java index b9d4a47d1..19d56f82c 100755 --- a/src/main/java/refinedstorage/apiimpl/network/WirelessGridHandler.java +++ b/src/main/java/refinedstorage/apiimpl/network/WirelessGridHandler.java @@ -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); diff --git a/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java b/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java index 645d06a16..098900c02 100755 --- a/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java +++ b/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java @@ -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; } diff --git a/src/main/resources/assets/refinedstorage/lang/en_US.lang b/src/main/resources/assets/refinedstorage/lang/en_US.lang index b1b09103f..bac579909 100755 --- a/src/main/resources/assets/refinedstorage/lang/en_US.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_US.lang @@ -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 diff --git a/src/main/resources/assets/refinedstorage/lang/fr_FR.lang b/src/main/resources/assets/refinedstorage/lang/fr_FR.lang index f74167a55..71f403792 100755 --- a/src/main/resources/assets/refinedstorage/lang/fr_FR.lang +++ b/src/main/resources/assets/refinedstorage/lang/fr_FR.lang @@ -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 diff --git a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang index 17a63a973..8aa9c3f09 100755 --- a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang +++ b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang @@ -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 diff --git a/src/main/resources/assets/refinedstorage/lang/pt_BR.lang b/src/main/resources/assets/refinedstorage/lang/pt_BR.lang index b4b487549..7b4b79c0c 100755 --- a/src/main/resources/assets/refinedstorage/lang/pt_BR.lang +++ b/src/main/resources/assets/refinedstorage/lang/pt_BR.lang @@ -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