fixed drones not placing themselves back properly

This commit is contained in:
70000hp 2024-06-24 17:55:13 -04:00
parent f868048b1e
commit 205b537318
3 changed files with 16 additions and 4 deletions

View File

@ -160,23 +160,34 @@ public class EntityRequestDrone extends EntityDroneBase {
TileEntityDroneDock dock = (TileEntityDroneDock) tile;
ItemStack drone = new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal());
for (int i = 0; i < dock.slots.length; i++) {
if (dock.slots[i] == null || (dock.slots[i].isItemEqual(drone) && dock.slots[i].stackSize < 64)) {
if (dock.slots[i] == null) {
this.setDead();
if(heldItem != null){
if(i != 9 && dock.slots[i + 1] != null){
if(i != 9 && dock.slots[i + 1] == null){
dock.slots[i + 1] = heldItem.copy();
}
}
dock.slots[i] = drone.copy();
this.worldObj.playSoundEffect(dock.xCoord + 0.5, dock.yCoord + 0.5, dock.zCoord + 0.5, "hbm:block.storageClose", 2.0F, 1.0F);
break;
} else if (dock.slots[i].isItemEqual(drone) && dock.slots[i].stackSize < 64){
this.setDead();
if(heldItem != null){
if(i != 9 && dock.slots[i + 1] == null){
dock.slots[i + 1] = heldItem.copy();
}
}
dock.slots[i].stackSize++;
this.worldObj.playSoundEffect(dock.xCoord + 0.5, dock.yCoord + 0.5, dock.zCoord + 0.5, "hbm:block.storageClose", 2.0F, 1.0F);
break;
}
}
}
}
if (!this.isDead) {
this.setDead();
this.entityDropItem(heldItem, 1F);
if(heldItem != null)
this.entityDropItem(heldItem, 1F);
this.entityDropItem(new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()), 1F);
}

View File

@ -108,6 +108,7 @@ public class RequestNetwork {
/** Node created by requesters, lists requested AStacks */
public static class RequestNode extends PathNode {
public List<AStack> request;
public int droneCount;
public RequestNode(BlockPos pos, HashedSet<PathNode> reachableNodes, List<AStack> request) {
super(pos, reachableNodes);
this.request = request;

View File

@ -43,7 +43,7 @@ public class TileEntityDroneDock extends TileEntityRequestNetworkContainer imple
public void updateEntity() {
super.updateEntity();
if(!worldObj.isRemote && worldObj.getTotalWorldTime() % 100 == 0 && this.hasDrone()) {
if(!worldObj.isRemote && worldObj.getTotalWorldTime() % 20 == 0 && this.hasDrone()) {
// grab all nodes in a 5 chunk radius
HashedSet<PathNode> localNodes = this.getAllLocalNodes(worldObj, xCoord, zCoord, 5);