2: Move crafter patterns away + 3: Move wireless grid range out
This commit is contained in:
@@ -109,6 +109,11 @@ public interface INetworkMaster {
|
||||
*/
|
||||
List<ICraftingPattern> getPatterns();
|
||||
|
||||
/**
|
||||
* Rebuilds the pattern list.
|
||||
*/
|
||||
void rebuildPatterns();
|
||||
|
||||
/**
|
||||
* Returns crafting patterns from an item stack.
|
||||
*
|
||||
|
||||
@@ -30,13 +30,6 @@ public interface IWirelessGridHandler {
|
||||
*/
|
||||
void onClose(EntityPlayer player);
|
||||
|
||||
/**
|
||||
* Sets the range of the wireless grid handler.
|
||||
*
|
||||
* @param range The range
|
||||
*/
|
||||
void setRange(int range);
|
||||
|
||||
/**
|
||||
* @return The range wireless grids in this network can reach
|
||||
*/
|
||||
|
||||
@@ -9,9 +9,11 @@ import refinedstorage.RefinedStorageGui;
|
||||
import refinedstorage.RefinedStorageItems;
|
||||
import refinedstorage.RefinedStorageUtils;
|
||||
import refinedstorage.api.network.INetworkMaster;
|
||||
import refinedstorage.api.network.INetworkSlave;
|
||||
import refinedstorage.api.network.IWirelessGridHandler;
|
||||
import refinedstorage.api.network.WirelessGridConsumer;
|
||||
import refinedstorage.item.ItemWirelessGrid;
|
||||
import refinedstorage.tile.TileWirelessTransmitter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
@@ -20,8 +22,6 @@ import java.util.List;
|
||||
public class WirelessGridHandler implements IWirelessGridHandler {
|
||||
private INetworkMaster network;
|
||||
|
||||
private int range;
|
||||
|
||||
private List<WirelessGridConsumer> consumers = new ArrayList<WirelessGridConsumer>();
|
||||
private List<WirelessGridConsumer> consumersToRemove = new ArrayList<WirelessGridConsumer>();
|
||||
|
||||
@@ -49,7 +49,7 @@ public class WirelessGridHandler implements IWirelessGridHandler {
|
||||
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));
|
||||
|
||||
if (distance > range) {
|
||||
if (distance > getRange()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -75,12 +75,15 @@ public class WirelessGridHandler implements IWirelessGridHandler {
|
||||
|
||||
@Override
|
||||
public int getRange() {
|
||||
return range;
|
||||
}
|
||||
int range = 0;
|
||||
|
||||
@Override
|
||||
public void setRange(int range) {
|
||||
this.range = range;
|
||||
for (INetworkSlave slave : network.getSlaves()) {
|
||||
if (slave instanceof TileWirelessTransmitter) {
|
||||
range += ((TileWirelessTransmitter) slave).getRange();
|
||||
}
|
||||
}
|
||||
|
||||
return range;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -27,7 +27,16 @@ public class TileCrafter extends TileSlave implements ICraftingPatternContainer
|
||||
public boolean valid(ItemStack stack) {
|
||||
return stack.getItem() == RefinedStorageItems.PATTERN && ItemPattern.isValid(stack);
|
||||
}
|
||||
});
|
||||
}) {
|
||||
@Override
|
||||
protected void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
|
||||
if (network != null) {
|
||||
network.rebuildPatterns();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private BasicItemHandler upgrades = new BasicItemHandler(4, this, new BasicItemValidator(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_SPEED));
|
||||
|
||||
|
||||
@@ -43,7 +43,6 @@ import refinedstorage.network.MessageGridItems;
|
||||
import refinedstorage.tile.ISynchronizedContainer;
|
||||
import refinedstorage.tile.TileBase;
|
||||
import refinedstorage.tile.TileCrafter;
|
||||
import refinedstorage.tile.TileWirelessTransmitter;
|
||||
import refinedstorage.tile.config.IRedstoneModeConfig;
|
||||
import refinedstorage.tile.config.RedstoneMode;
|
||||
|
||||
@@ -344,12 +343,36 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
return patterns.get(highestPattern);
|
||||
}
|
||||
|
||||
public void rebuildPatterns() {
|
||||
patterns.clear();
|
||||
|
||||
for (INetworkSlave slave : slaves) {
|
||||
if (slave instanceof TileCrafter && slave.canUpdate()) {
|
||||
TileCrafter crafter = (TileCrafter) slave;
|
||||
|
||||
for (int i = 0; i < crafter.getPatterns().getSlots(); ++i) {
|
||||
ItemStack pattern = crafter.getPatterns().getStackInSlot(i);
|
||||
|
||||
if (pattern != null && ItemPattern.isValid(pattern)) {
|
||||
patterns.add(new CraftingPattern(
|
||||
crafter.getPos().getX(),
|
||||
crafter.getPos().getY(),
|
||||
crafter.getPos().getZ(),
|
||||
ItemPattern.isProcessing(pattern),
|
||||
ItemPattern.getInputs(pattern),
|
||||
ItemPattern.getOutputs(pattern),
|
||||
ItemPattern.getByproducts(pattern)
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void updateSlaves() {
|
||||
this.storages.clear();
|
||||
this.patterns.clear();
|
||||
|
||||
int range = 0;
|
||||
|
||||
for (INetworkSlave slave : slaves) {
|
||||
if (!slave.canUpdate()) {
|
||||
continue;
|
||||
@@ -358,26 +381,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
if (slave instanceof IStorageProvider) {
|
||||
((IStorageProvider) slave).addStorages(storages);
|
||||
}
|
||||
|
||||
if (slave instanceof TileWirelessTransmitter) {
|
||||
range += ((TileWirelessTransmitter) slave).getRange();
|
||||
}
|
||||
|
||||
if (slave instanceof TileCrafter) {
|
||||
TileCrafter crafter = (TileCrafter) slave;
|
||||
|
||||
for (int i = 0; i < crafter.getPatterns().getSlots(); ++i) {
|
||||
ItemStack pattern = crafter.getPatterns().getStackInSlot(i);
|
||||
|
||||
if (pattern != null && ItemPattern.isValid(pattern)) {
|
||||
patterns.add(new CraftingPattern(crafter.getPos().getX(), crafter.getPos().getY(), crafter.getPos().getZ(), ItemPattern.isProcessing(pattern), ItemPattern.getInputs(pattern), ItemPattern.getOutputs(pattern), ItemPattern.getByproducts(pattern)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
wirelessGridHandler.setRange(range);
|
||||
|
||||
Collections.sort(storages, new Comparator<IStorage>() {
|
||||
@Override
|
||||
public int compare(IStorage left, IStorage right) {
|
||||
|
||||
Reference in New Issue
Block a user