Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"java.configuration.updateBuildConfiguration": "automatic"
}
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ repositories{

ext{
//the build number that this mod is made for
mindustryVersion = 'v146'
jabelVersion = "93fde537c7"
mindustryVersion = 'v150'
jabelVersion = "0.7.0"
isWindows = System.getProperty("os.name").toLowerCase().contains("windows")
sdkRoot = System.getenv("ANDROID_HOME") ?: System.getenv("ANDROID_SDK_ROOT")
}
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
2 changes: 1 addition & 1 deletion mod.hjson
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ author: "Pointifix"
main: "autodrill.AutoDrill"
description: "Adds tools for automatically filling resource patches with drills"
version: 1.0
minGameVersion: 136
minGameVersion: 149
java: true
hidden: true
12 changes: 5 additions & 7 deletions src/autodrill/filler/BridgeDrill.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@

import java.util.InputMismatchException;

import static arc.Core.bundle;

public class BridgeDrill {
public static void fill(Tile tile, Drill drill, Direction direction) {
if (drill.size != 2) throw new InputMismatchException("Drill must have a size of 2");
Expand All @@ -29,26 +27,26 @@ public static void fill(Tile tile, Drill drill, Direction direction) {
private static void placeDrillsAndBridges(Tile source, Seq<Tile> tiles, Drill drill, Direction direction) {
Point2 directionConfig = new Point2(direction.p.x * 3, direction.p.y * 3);

Seq<Tile> drillTiles = tiles.copy().filter(BridgeDrill::isDrillTile);
Seq<Tile> bridgeTiles = tiles.copy().filter(BridgeDrill::isBridgeTile);
Seq<Tile> drillTiles = Util.filterTiles(tiles.copy(), BridgeDrill::isDrillTile);
Seq<Tile> bridgeTiles = Util.filterTiles(tiles.copy(), BridgeDrill::isBridgeTile);

int minOresPerDrill = Core.settings.getInt((drill == Blocks.blastDrill ? "airblast" : (drill == Blocks.laserDrill ? "laser" : (drill == Blocks.pneumaticDrill ? "pneumatic" : "mechanical"))) + "-drill-min-ores");

drillTiles.filter(t -> {
Util.filterTiles(drillTiles, t -> {
ObjectIntMap.Entry<Item> itemAndCount = Util.countOre(t, drill);

if (itemAndCount == null || itemAndCount.key != source.drop() || itemAndCount.value < minOresPerDrill) {
return false;
}

Seq<Tile> neighbors = Util.getNearbyTiles(t.x, t.y, drill);
neighbors.filter(BridgeDrill::isBridgeTile);
Util.filterTiles(neighbors, BridgeDrill::isBridgeTile);

for (Tile neighbor : neighbors) {
if (bridgeTiles.contains(neighbor)) return true;
}

neighbors.filter(n -> {
Util.filterTiles(neighbors, n -> {
BuildPlan buildPlan = new BuildPlan(n.x, n.y, 0, Blocks.itemBridge);
return buildPlan.placeable(Vars.player.team());
});
Expand Down
12 changes: 4 additions & 8 deletions src/autodrill/filler/Direction.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,14 @@ public int secondaryAxis(Point2 p) {

public static Direction getOpposite(Direction direction) {
switch (direction) {
case RIGHT -> {
case RIGHT:
return LEFT;
}
case UP -> {
case UP:
return DOWN;
}
case LEFT -> {
case LEFT:
return RIGHT;
}
default -> {
default:
return UP;
}
}
}
}
2 changes: 1 addition & 1 deletion src/autodrill/filler/OptimizationDrill.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public static void fill(Tile tile, Drill drill, boolean waterExtractorsAndPowerN
tilesItemAndCount.put(t, Util.countOre(t, drill));
}

tiles.filter(t -> {
Util.filterTiles(tiles, t -> {
ObjectIntMap.Entry<Item> itemAndCount = tilesItemAndCount.get(t);
return itemAndCount != null && itemAndCount.key == floor.itemDrop && itemAndCount.value >= minOresPerDrill;
}).sort(t -> {
Expand Down
10 changes: 7 additions & 3 deletions src/autodrill/filler/Util.java
Original file line number Diff line number Diff line change
@@ -1,22 +1,20 @@
package autodrill.filler;

import arc.Core;
import arc.func.Boolf;
import arc.math.geom.Point2;
import arc.math.geom.Rect;
import arc.struct.ObjectIntMap;
import arc.struct.Queue;
import arc.struct.Seq;
import mindustry.Vars;
import mindustry.content.Blocks;
import mindustry.gen.Call;
import mindustry.type.Item;
import mindustry.world.Block;
import mindustry.world.Build;
import mindustry.world.Edges;
import mindustry.world.Tile;
import mindustry.world.blocks.production.Drill;

import static arc.Core.bundle;
import static mindustry.Vars.world;

public class Util {
Expand Down Expand Up @@ -151,4 +149,10 @@ protected static Rect getBlockRect(Tile tile, Block block) {
protected static Point2 tileToPoint2(Tile tile) {
return new Point2(tile.x, tile.y);
}

// Fixed: Deprecated methods removed by Anuke
// https://github.com/Anuken/Arc/commit/7d6e89dffda6b7560c5a81d825e676aa526c230d
protected static Seq<Tile> filterTiles(Seq<Tile> tiles, Boolf<Tile> predicate){
return tiles.removeAll(e -> !predicate.get(e));
}
}
16 changes: 6 additions & 10 deletions src/autodrill/filler/WallDrill.java
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public static void fill(Tile tile, BeamDrill drill, Direction direction) {
}
if (ductTiles.isEmpty()) return;

Tile outerMostDuctTile = ductTiles.copy().filter(t -> boreTiles.find(bt -> direction.secondaryAxis(new Point2(bt.x, bt.y)) == direction.secondaryAxis(new Point2(t.x, t.y))) == null).max(t -> -direction.primaryAxis(new Point2(t.x, t.y)));
Tile outerMostDuctTile = Util.filterTiles(ductTiles.copy(), t -> boreTiles.find(bt -> direction.secondaryAxis(new Point2(bt.x, bt.y)) == direction.secondaryAxis(new Point2(t.x, t.y))) == null).max(t -> -direction.primaryAxis(new Point2(t.x, t.y)));
if (outerMostDuctTile == null) return;
ductTiles.sort(t -> t.dst2(outerMostDuctTile));
Seq<Tile> connectingTiles = new Seq<>();
Expand Down Expand Up @@ -203,7 +203,7 @@ private static Seq<Tile> getConnectedWallTiles(Tile tile, Direction direction) {
}

Seq<Tile> tilesCopy = tiles.copy();
tiles.filter(t1 -> {
Util.filterTiles(tiles, t1 -> {
Point2 pT1 = Util.tileToPoint2(t1);
int paT1 = direction.primaryAxis(pT1);
int saT1 = direction.secondaryAxis(pT1);
Expand All @@ -225,18 +225,14 @@ private static Point2 getDirectionOffset(Direction direction, Block block) {
int offset2 = block.size / 2;

switch (direction) {
case RIGHT -> {
case DOWN:
return new Point2(-offset2, 0);
}
case UP -> {
case UP:
return new Point2(0, -offset2);
}
case LEFT -> {
case LEFT:
return new Point2(offset1, 0);
}
default -> {
default:
return new Point2(0, offset1);
}
}
}
}