Added lesu storage block counting
This commit is contained in:
parent
81f75abf22
commit
51c91aaccb
7 changed files with 198 additions and 28 deletions
51
src/main/java/techreborn/tiles/lesu/LesuNetwork.java
Normal file
51
src/main/java/techreborn/tiles/lesu/LesuNetwork.java
Normal file
|
@ -0,0 +1,51 @@
|
|||
package techreborn.tiles.lesu;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class LesuNetwork {
|
||||
|
||||
public ArrayList<TileLesuStorage> storages = new ArrayList<TileLesuStorage>();
|
||||
|
||||
public void addElement(TileLesuStorage lesuStorage){
|
||||
if(!storages.contains(lesuStorage)){
|
||||
storages.add(lesuStorage);
|
||||
}
|
||||
}
|
||||
|
||||
public void removeElement(TileLesuStorage lesuStorage){
|
||||
storages.remove(lesuStorage);
|
||||
rebuild();
|
||||
}
|
||||
|
||||
private void rebuild(){
|
||||
for(TileLesuStorage lesuStorage : storages){
|
||||
lesuStorage.findAndJoinNetwork(lesuStorage.getWorldObj(), lesuStorage.xCoord, lesuStorage.yCoord, lesuStorage.zCoord);
|
||||
}
|
||||
}
|
||||
|
||||
public void merge(LesuNetwork network){
|
||||
if(network != this){
|
||||
ArrayList<TileLesuStorage> tileLesuStorages = new ArrayList<TileLesuStorage>();
|
||||
tileLesuStorages.addAll(network.storages);
|
||||
network.clear(false);
|
||||
for(TileLesuStorage lesuStorage : tileLesuStorages){
|
||||
lesuStorage.setNetwork(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void clear(boolean clearTiles) {
|
||||
if (clearTiles) {
|
||||
for(TileLesuStorage tileLesuStorage : storages){
|
||||
tileLesuStorage.resetNetwork();
|
||||
}
|
||||
}
|
||||
storages.clear();
|
||||
}
|
||||
|
||||
|
||||
public void printInfo(){
|
||||
System.out.println(storages.size());
|
||||
}
|
||||
|
||||
}
|
37
src/main/java/techreborn/tiles/lesu/TileLesu.java
Normal file
37
src/main/java/techreborn/tiles/lesu/TileLesu.java
Normal file
|
@ -0,0 +1,37 @@
|
|||
package techreborn.tiles.lesu;
|
||||
|
||||
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import techreborn.tiles.TileAesu;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class TileLesu extends TileAesu {
|
||||
|
||||
public int baseEU = 1000000000;
|
||||
public int storgeBlockSize = 100000;
|
||||
|
||||
private ArrayList<LesuNetwork> countedNetworks = new ArrayList<LesuNetwork>();
|
||||
public int connectedBlocks = 0;
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
if(worldObj.isRemote){
|
||||
return;
|
||||
}
|
||||
countedNetworks.clear();
|
||||
connectedBlocks = 0;
|
||||
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS){
|
||||
if(worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ) instanceof TileLesuStorage){
|
||||
if(((TileLesuStorage) worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ)).network != null){
|
||||
LesuNetwork network = ((TileLesuStorage) worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ)).network;
|
||||
if(!countedNetworks.contains(network)){
|
||||
connectedBlocks += network.storages.size();
|
||||
countedNetworks.add(network);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
System.out.println(connectedBlocks);
|
||||
}
|
||||
}
|
57
src/main/java/techreborn/tiles/lesu/TileLesuStorage.java
Normal file
57
src/main/java/techreborn/tiles/lesu/TileLesuStorage.java
Normal file
|
@ -0,0 +1,57 @@
|
|||
package techreborn.tiles.lesu;
|
||||
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import techreborn.tiles.TileMachineBase;
|
||||
|
||||
public class TileLesuStorage extends TileMachineBase {
|
||||
|
||||
public LesuNetwork network;
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
super.updateEntity();
|
||||
if(network == null){
|
||||
findAndJoinNetwork(worldObj, xCoord, yCoord, zCoord);
|
||||
} else {
|
||||
//network.printInfo();
|
||||
}
|
||||
}
|
||||
|
||||
public final void findAndJoinNetwork(World world, int x, int y, int z) {
|
||||
network = new LesuNetwork();
|
||||
network.addElement(this);
|
||||
for(ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS){
|
||||
if(world.getTileEntity(x + direction.offsetX, y + direction.offsetY, z + direction.offsetZ) instanceof TileLesuStorage){
|
||||
TileLesuStorage lesu = (TileLesuStorage) world.getTileEntity(x + direction.offsetX, y + direction.offsetY, z + direction.offsetZ);
|
||||
if(lesu.network != null){
|
||||
lesu.network.merge(network);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public final void setNetwork(LesuNetwork n) {
|
||||
if (n == null) {
|
||||
} else {
|
||||
network = n;
|
||||
network.addElement(this);
|
||||
}
|
||||
}
|
||||
|
||||
public final void resetNetwork() {
|
||||
network = null;
|
||||
}
|
||||
|
||||
public final void removeFromNetwork() {
|
||||
if (network == null) {
|
||||
} else
|
||||
network.removeElement(this);
|
||||
}
|
||||
|
||||
public final void rebuildNetwork() {
|
||||
this.removeFromNetwork();
|
||||
this.resetNetwork();
|
||||
this.findAndJoinNetwork(worldObj, xCoord, yCoord, zCoord);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue