SteamWar/BauSystem2.0
Archiviert
12
0

Update stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful

Signed-off-by: yoyosource <yoyosource@nidido.de>
Dieser Commit ist enthalten in:
yoyosource 2022-09-10 15:15:38 +02:00
Ursprung 37f3726ccc
Commit 403ca8dae7
3 geänderte Dateien mit 42 neuen und 15 gelöschten Zeilen

Datei anzeigen

@ -36,7 +36,9 @@ import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.entity.Player;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@ -66,14 +68,15 @@ public class ColorReplaceCommand extends SWCommand {
World world = player.getWorld();
Set<String> toReplace = types.stream().map(s -> "minecraft:" + from.name().toLowerCase() + "_" + s.toLowerCase()).collect(Collectors.toSet());
String fromString = "minecraft:" + from.name().toLowerCase() + "_";
String toString = "minecraft:" + to.name().toLowerCase() + "_";
Map<String, String> replacements = new HashMap<>();
for (String type : types) {
replacements.put("minecraft:" + from.name().toLowerCase() + "_" + type.toLowerCase(), "minecraft:" + to.name().toLowerCase() + "_" + type.toLowerCase());
}
Region region = WorldEditUtils.getRegion(player);
EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(BukkitAdapter.adapt(world), -1, BukkitAdapter.adapt(player));
SpecialReplace specialReplace = new SpecialReplace(editSession, toReplace, s -> s.replace(fromString, toString));
SpecialReplace specialReplace = new SpecialReplace(editSession, replacements);
int affected = editSession.replaceBlocks(region, specialReplace, specialReplace);
editSession.flushSession();
BukkitAdapter.adapt(player).printInfo(TranslatableComponent.of("worldedit.replace.replaced", new Component[]{TextComponent.of(affected)}));

Datei anzeigen

@ -29,24 +29,23 @@ import com.sk89q.worldedit.world.block.BaseBlock;
import org.bukkit.Bukkit;
import javax.annotation.Nullable;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
public class SpecialReplace implements Mask, Pattern {
private EditSession editSession;
private Set<String> toReplace;
private Function<String, String> replacer;
private Map<String, String> replacements;
public SpecialReplace(EditSession editSession, Set<String> toReplace, Function<String, String> replacer) {
public SpecialReplace(EditSession editSession, Map<String, String> replacements) {
this.editSession = editSession;
this.toReplace = toReplace;
this.replacer = replacer;
this.replacements = replacements;
}
@Override
public boolean test(BlockVector3 blockVector3) {
return toReplace.contains(editSession.getFullBlock(blockVector3).getBlockType().getId());
return replacements.containsKey(editSession.getFullBlock(blockVector3).getBlockType().getId());
}
@Nullable
@ -57,8 +56,15 @@ public class SpecialReplace implements Mask, Pattern {
@Override
public BaseBlock applyBlock(BlockVector3 position) {
String s = BukkitAdapter.adapt(editSession.getFullBlock(position)).getAsString();
String rest = "";
if (s.contains("[")) {
int i = s.indexOf("[");
rest = s.substring(i);
s = s.substring(0, i);
}
try {
return BukkitAdapter.adapt(Bukkit.createBlockData(replacer.apply(BukkitAdapter.adapt(editSession.getFullBlock(position)).getAsString()))).toBaseBlock();
return BukkitAdapter.adapt(Bukkit.createBlockData(replacements.getOrDefault(s, s) + rest)).toBaseBlock();
} catch (IllegalArgumentException e) {
return editSession.getFullBlock(position);
}

Datei anzeigen

@ -36,7 +36,9 @@ import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.entity.Player;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@ -73,6 +75,17 @@ public class TypeReplaceCommand extends SWCommand {
private Set<String> types = new HashSet<>();
{
types.add("");
types.add("WOOD");
types.add("PLANKS");
types.add("BUTTON");
types.add("DOOR");
types.add("LOG");
types.add("LEAVED");
types.add("SIGN");
types.add("WALL_SIGN");
types.add("PRESSURE_PLATE");
types.add("SAPLING");
types.add("TRAPDOOR");
types.add("STAIRS");
types.add("SLAB");
types.add("FENCE");
@ -90,14 +103,19 @@ public class TypeReplaceCommand extends SWCommand {
World world = player.getWorld();
Set<String> toReplace = types.stream().map(s -> "minecraft:" + from.name().toLowerCase() + "_" + s.toLowerCase()).collect(Collectors.toSet());
String fromString = "minecraft:" + from.name().toLowerCase() + "_";
String toString = "minecraft:" + to.name().toLowerCase() + "_";
Map<String, String> replacements = new HashMap<>();
for (String type : types) {
if (type.isEmpty()) {
replacements.put("minecraft:" + from.name().toLowerCase(), "minecraft:" + to.name().toLowerCase());
} else {
replacements.put("minecraft:" + from.name().toLowerCase() + "_" + type.toLowerCase(), "minecraft:" + to.name().toLowerCase() + "_" + type.toLowerCase());
}
}
Region region = WorldEditUtils.getRegion(player);
EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(BukkitAdapter.adapt(world), -1, BukkitAdapter.adapt(player));
SpecialReplace specialReplace = new SpecialReplace(editSession, toReplace, s -> s.replace(fromString, toString));
SpecialReplace specialReplace = new SpecialReplace(editSession, replacements);
int affected = editSession.replaceBlocks(region, specialReplace, specialReplace);
editSession.flushSession();
BukkitAdapter.adapt(player).printInfo(TranslatableComponent.of("worldedit.replace.replaced", new Component[]{TextComponent.of(affected)}));