SteamWar/BauSystem2.0
Archiviert
12
0

DepthCounter now Highlights

Dieser Commit ist enthalten in:
Zeanon 2021-05-01 18:20:56 +02:00
Ursprung 2a0dbaa049
Commit 7a1cb2a865
4 geänderte Dateien mit 67 neuen und 9 gelöschten Zeilen

Datei anzeigen

@ -30,5 +30,7 @@ public enum CountMode {
Y, Y,
Z; Z;
public static final Set<CountMode> ALL = new HashSet<>(Arrays.asList(values())); public static Set<CountMode> ALL() {
return new HashSet<>(Arrays.asList(values()));
}
} }

Datei anzeigen

@ -20,6 +20,7 @@
package de.steamwar.bausystem.features.testblock.depthcounter; package de.steamwar.bausystem.features.testblock.depthcounter;
import de.steamwar.bausystem.BauSystem; import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.config.ColorConfig;
import de.steamwar.bausystem.linkage.LinkageType; import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked; import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.region.Region; import de.steamwar.bausystem.region.Region;
@ -101,6 +102,65 @@ public class DepthCounter {
return !getModes(p).isEmpty(); return !getModes(p).isEmpty();
} }
public int getMax(int... values) {
return Arrays.stream(values).max().orElse(0);
}
public int getMax(Set<Integer> values) {
return values.stream().max(Integer::compare).orElse(0);
}
public String getMessage(Player player, int x, int y, int z) {
final boolean xActive = DepthCounter.isActive(player, CountMode.X);
final boolean yActive = DepthCounter.isActive(player, CountMode.Y);
final boolean zActive = DepthCounter.isActive(player, CountMode.Z);
if (!xActive && !yActive && !zActive) {
return null;
}
final StringBuilder result = new StringBuilder(BauSystem.PREFIX);
final Set<Integer> dimensions = new HashSet<>();
if (xActive) {
dimensions.add(x);
}
if (yActive) {
dimensions.add(y);
}
if (zActive) {
dimensions.add(z);
}
int max = getMax(dimensions);
if (xActive) {
if (x == max) {
result.append(ColorConfig.HIGHLIGHT).append("X: ").append(x).append(ColorConfig.BASE).append(" ");
} else {
result.append("X: ").append(x).append(" ");
}
}
if (yActive) {
if (y == max) {
result.append(ColorConfig.HIGHLIGHT).append("Y: ").append(y).append(ColorConfig.BASE).append(" ");
} else {
result.append("Y: ").append(y).append(" ");
}
}
if (zActive) {
if (z == max) {
result.append(ColorConfig.HIGHLIGHT).append("Z: ").append(z).append(ColorConfig.BASE).append(" ");
} else {
result.append("Z: ").append(z).append(" ");
}
}
return result.toString();
}
public void compute(Vector v1, Vector v2, DoubleBinaryOperator function) { public void compute(Vector v1, Vector v2, DoubleBinaryOperator function) {
v1.setX(function.applyAsDouble(v1.getX(), v2.getX())); v1.setX(function.applyAsDouble(v1.getX(), v2.getX()));
v1.setY(function.applyAsDouble(v1.getY(), v2.getY())); v1.setY(function.applyAsDouble(v1.getY(), v2.getY()));

Datei anzeigen

@ -47,7 +47,7 @@ public class DepthCounterCommand extends SWCommand {
@Register("enable") @Register("enable")
public void enableCommand(Player p) { public void enableCommand(Player p) {
DepthCounter.setModes(p, CountMode.ALL); DepthCounter.setModes(p, CountMode.ALL());
p.sendMessage(BauSystem.PREFIX + "Du hast den Tiefenzähler aktiviert."); p.sendMessage(BauSystem.PREFIX + "Du hast den Tiefenzähler aktiviert.");
p.sendMessage(BauSystem.PREFIX + "Aktive Zählmodi: " + ColorConfig.HIGHLIGHT + DepthCounter.getModes(p) + ColorConfig.BASE + "."); p.sendMessage(BauSystem.PREFIX + "Aktive Zählmodi: " + ColorConfig.HIGHLIGHT + DepthCounter.getModes(p) + ColorConfig.BASE + ".");
} }

Datei anzeigen

@ -20,7 +20,6 @@
package de.steamwar.bausystem.features.testblock.depthcounter; package de.steamwar.bausystem.features.testblock.depthcounter;
import de.steamwar.bausystem.BauSystem; import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.config.ColorConfig;
import de.steamwar.bausystem.linkage.LinkageType; import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked; import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.region.Region; import de.steamwar.bausystem.region.Region;
@ -76,12 +75,9 @@ public class DepthCounterListener implements Listener {
dimensions.setY(Math.abs(dimensions.getY())); dimensions.setY(Math.abs(dimensions.getY()));
dimensions.setZ(Math.abs(dimensions.getZ())); dimensions.setZ(Math.abs(dimensions.getZ()));
RegionUtils.message(region, player -> !DepthCounter.hasModes(player) ? null : (BauSystem.PREFIX RegionUtils.message(region, player -> DepthCounter.getMessage(player, dimensions.getBlockX(), dimensions.getBlockY(), dimensions.getBlockZ()));
+ (DepthCounter.isActive(player, CountMode.X) ? "X: " + dimensions.getBlockX() + " " : "")
+ (DepthCounter.isActive(player, CountMode.Y) ? "Y: " + dimensions.getBlockY() + " " : "")
+ (DepthCounter.isActive(player, CountMode.Z) ? "Z: " + dimensions.getBlockZ() + " " : "")));
DepthCounter.current.remove(region); DepthCounter.current.remove(region);
}, 10); }, 20);
} }
} }
@ -92,6 +88,6 @@ public class DepthCounterListener implements Listener {
@EventHandler @EventHandler
public void onJoin(PlayerJoinEvent event) { public void onJoin(PlayerJoinEvent event) {
DepthCounter.setModes(event.getPlayer(), CountMode.ALL); DepthCounter.setModes(event.getPlayer(), CountMode.ALL());
} }
} }