Dieser Commit ist enthalten in:
Ursprung
8b62559547
Commit
0a11fca681
@ -62,4 +62,6 @@ dependencies {
|
|||||||
compileOnly swdep('WorldEdit-1.15')
|
compileOnly swdep('WorldEdit-1.15')
|
||||||
compileOnly swdep('SpigotCore')
|
compileOnly swdep('SpigotCore')
|
||||||
annotationProcessor swdep('SpigotCore')
|
annotationProcessor swdep('SpigotCore')
|
||||||
|
|
||||||
|
compileOnly swdep('FastAsyncWorldEdit-1.18')
|
||||||
}
|
}
|
@ -27,6 +27,7 @@ import com.sk89q.worldedit.util.formatting.text.Component;
|
|||||||
import com.sk89q.worldedit.util.formatting.text.TextComponent;
|
import com.sk89q.worldedit.util.formatting.text.TextComponent;
|
||||||
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
|
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
|
||||||
import de.steamwar.bausystem.features.world.WorldEditListener;
|
import de.steamwar.bausystem.features.world.WorldEditListener;
|
||||||
|
import de.steamwar.bausystem.features.worldedit.utils.SpecialReplace;
|
||||||
import de.steamwar.bausystem.region.Color;
|
import de.steamwar.bausystem.region.Color;
|
||||||
import de.steamwar.bausystem.shared.Pair;
|
import de.steamwar.bausystem.shared.Pair;
|
||||||
import de.steamwar.bausystem.utils.WorldEditUtils;
|
import de.steamwar.bausystem.utils.WorldEditUtils;
|
||||||
|
@ -27,6 +27,7 @@ import com.sk89q.worldedit.util.formatting.text.Component;
|
|||||||
import com.sk89q.worldedit.util.formatting.text.TextComponent;
|
import com.sk89q.worldedit.util.formatting.text.TextComponent;
|
||||||
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
|
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
|
||||||
import de.steamwar.bausystem.features.world.WorldEditListener;
|
import de.steamwar.bausystem.features.world.WorldEditListener;
|
||||||
|
import de.steamwar.bausystem.features.worldedit.utils.SpecialReplace;
|
||||||
import de.steamwar.bausystem.shared.Pair;
|
import de.steamwar.bausystem.shared.Pair;
|
||||||
import de.steamwar.bausystem.utils.WorldEditUtils;
|
import de.steamwar.bausystem.utils.WorldEditUtils;
|
||||||
import de.steamwar.command.SWCommand;
|
import de.steamwar.command.SWCommand;
|
||||||
|
@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* This file is a part of the SteamWar software.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 SteamWar.de-Serverteam
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.steamwar.bausystem.features.worldedit.mask.above;
|
||||||
|
|
||||||
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
|
||||||
|
public class AboveMask implements Mask {
|
||||||
|
|
||||||
|
private Mask mask;
|
||||||
|
private int distance;
|
||||||
|
|
||||||
|
public AboveMask(Mask mask, int distance) {
|
||||||
|
this.mask = mask;
|
||||||
|
this.distance = distance;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean test(BlockVector3 vector) {
|
||||||
|
for (int i = 1; i <= distance; i++) {
|
||||||
|
if (mask.test(vector.subtract(0, i, 0))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Mask copy() {
|
||||||
|
return new AboveMask(mask, distance);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
/*
|
||||||
|
* This file is a part of the SteamWar software.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 SteamWar.de-Serverteam
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.steamwar.bausystem.features.worldedit.mask.above;
|
||||||
|
|
||||||
|
import com.fastasyncworldedit.core.extension.factory.parser.RichParser;
|
||||||
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
|
import com.sk89q.worldedit.command.util.SuggestionHelper;
|
||||||
|
import com.sk89q.worldedit.extension.input.InputParseException;
|
||||||
|
import com.sk89q.worldedit.extension.input.ParserContext;
|
||||||
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
|
import de.steamwar.bausystem.utils.WorldEditUtils;
|
||||||
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.PluginCheck;
|
||||||
|
import de.steamwar.linkage.api.Plain;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
@Linked
|
||||||
|
@PluginCheck("FastAsyncWorldEdit")
|
||||||
|
public class FAWEAboveMaskParser extends RichParser<Mask> implements Plain {
|
||||||
|
|
||||||
|
public FAWEAboveMaskParser() {
|
||||||
|
super(WorldEdit.getInstance(), "#above");
|
||||||
|
WorldEditUtils.addMaskParser(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Stream<String> getSuggestions(String argumentInput, int index) {
|
||||||
|
if (index == 0) {
|
||||||
|
return WorldEdit.getInstance().getPatternFactory().getSuggestions(argumentInput).stream();
|
||||||
|
}
|
||||||
|
if (index == 1) {
|
||||||
|
return SuggestionHelper.suggestPositiveIntegers(argumentInput);
|
||||||
|
}
|
||||||
|
return Stream.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mask parseFromInput(@Nonnull String[] arguments, ParserContext context) throws InputParseException {
|
||||||
|
if (arguments.length != 2) {
|
||||||
|
throw new InputParseException("Expected 2 arguments");
|
||||||
|
}
|
||||||
|
Mask mask = WorldEdit.getInstance().getMaskFactory().parseFromInput(arguments[0], context);
|
||||||
|
int distance;
|
||||||
|
try {
|
||||||
|
distance = Integer.parseInt(arguments[1]);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
throw new InputParseException("Distance must be a number");
|
||||||
|
}
|
||||||
|
return new AboveMask(mask, distance);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* This file is a part of the SteamWar software.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 SteamWar.de-Serverteam
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.steamwar.bausystem.features.worldedit.mask.below;
|
||||||
|
|
||||||
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
|
||||||
|
public class BelowMask implements Mask {
|
||||||
|
|
||||||
|
private Mask mask;
|
||||||
|
private int distance;
|
||||||
|
|
||||||
|
public BelowMask(Mask mask, int distance) {
|
||||||
|
this.mask = mask;
|
||||||
|
this.distance = distance;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean test(BlockVector3 vector) {
|
||||||
|
for (int i = 1; i <= distance; i++) {
|
||||||
|
if (mask.test(vector.add(0, i, 0))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Mask copy() {
|
||||||
|
return new BelowMask(mask, distance);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
/*
|
||||||
|
* This file is a part of the SteamWar software.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 SteamWar.de-Serverteam
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.steamwar.bausystem.features.worldedit.mask.below;
|
||||||
|
|
||||||
|
import com.fastasyncworldedit.core.extension.factory.parser.RichParser;
|
||||||
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
|
import com.sk89q.worldedit.command.util.SuggestionHelper;
|
||||||
|
import com.sk89q.worldedit.extension.input.InputParseException;
|
||||||
|
import com.sk89q.worldedit.extension.input.ParserContext;
|
||||||
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
|
import de.steamwar.bausystem.utils.WorldEditUtils;
|
||||||
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.PluginCheck;
|
||||||
|
import de.steamwar.linkage.api.Plain;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
@Linked
|
||||||
|
@PluginCheck("FastAsyncWorldEdit")
|
||||||
|
public class FAWEBelowMaskParser extends RichParser<Mask> implements Plain {
|
||||||
|
|
||||||
|
public FAWEBelowMaskParser() {
|
||||||
|
super(WorldEdit.getInstance(), "#below");
|
||||||
|
WorldEditUtils.addMaskParser(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Stream<String> getSuggestions(String argumentInput, int index) {
|
||||||
|
if (index == 0) {
|
||||||
|
return WorldEdit.getInstance().getPatternFactory().getSuggestions(argumentInput).stream();
|
||||||
|
}
|
||||||
|
if (index == 1) {
|
||||||
|
return SuggestionHelper.suggestPositiveIntegers(argumentInput);
|
||||||
|
}
|
||||||
|
return Stream.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mask parseFromInput(@Nonnull String[] arguments, ParserContext context) throws InputParseException {
|
||||||
|
if (arguments.length != 2) {
|
||||||
|
throw new InputParseException("Expected 2 arguments");
|
||||||
|
}
|
||||||
|
Mask mask = WorldEdit.getInstance().getMaskFactory().parseFromInput(arguments[0], context);
|
||||||
|
int distance;
|
||||||
|
try {
|
||||||
|
distance = Integer.parseInt(arguments[1]);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
throw new InputParseException("Distance must be a number");
|
||||||
|
}
|
||||||
|
return new BelowMask(mask, distance);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* This file is a part of the SteamWar software.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 SteamWar.de-Serverteam
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.steamwar.bausystem.features.worldedit.mask.checkerboard;
|
||||||
|
|
||||||
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
|
||||||
|
public class CheckerboardMask implements Mask {
|
||||||
|
|
||||||
|
private int size;
|
||||||
|
|
||||||
|
public CheckerboardMask(int size) {
|
||||||
|
this.size = size;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean test(BlockVector3 vector) {
|
||||||
|
return (vector.getBlockX() / size + vector.getBlockZ() / size) % 2 == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Mask copy() {
|
||||||
|
return new CheckerboardMask(size);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* This file is a part of the SteamWar software.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 SteamWar.de-Serverteam
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.steamwar.bausystem.features.worldedit.mask.checkerboard;
|
||||||
|
|
||||||
|
import com.fastasyncworldedit.core.extension.factory.parser.RichParser;
|
||||||
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
|
import com.sk89q.worldedit.command.util.SuggestionHelper;
|
||||||
|
import com.sk89q.worldedit.extension.input.InputParseException;
|
||||||
|
import com.sk89q.worldedit.extension.input.ParserContext;
|
||||||
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
|
import de.steamwar.bausystem.utils.WorldEditUtils;
|
||||||
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.PluginCheck;
|
||||||
|
import de.steamwar.linkage.api.Plain;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
@Linked
|
||||||
|
@PluginCheck("FastAsyncWorldEdit")
|
||||||
|
public class FAWECheckerboardMaskParser extends RichParser<Mask> implements Plain {
|
||||||
|
|
||||||
|
public FAWECheckerboardMaskParser() {
|
||||||
|
super(WorldEdit.getInstance(), "#checkerboard");
|
||||||
|
WorldEditUtils.addMaskParser(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Stream<String> getSuggestions(String argumentInput, int index) {
|
||||||
|
if (index == 0) {
|
||||||
|
return SuggestionHelper.suggestPositiveIntegers(argumentInput);
|
||||||
|
}
|
||||||
|
return Stream.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mask parseFromInput(@Nonnull String[] arguments, ParserContext context) throws InputParseException {
|
||||||
|
if (arguments.length != 1) {
|
||||||
|
return new CheckerboardMask(1);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return new CheckerboardMask(Integer.parseInt(arguments[0]));
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
throw new InputParseException("Invalid number: " + arguments[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* This file is a part of the SteamWar software.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 SteamWar.de-Serverteam
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.steamwar.bausystem.features.worldedit.mask.checkerboard3d;
|
||||||
|
|
||||||
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
|
||||||
|
public class Checkerboard3DMask implements Mask {
|
||||||
|
|
||||||
|
private int size;
|
||||||
|
|
||||||
|
public Checkerboard3DMask(int size) {
|
||||||
|
this.size = size;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean test(BlockVector3 vector) {
|
||||||
|
return (vector.getBlockX() / size + vector.getBlockY() / size + vector.getBlockZ() / size) % 2 == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Mask copy() {
|
||||||
|
return new Checkerboard3DMask(size);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* This file is a part of the SteamWar software.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 SteamWar.de-Serverteam
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.steamwar.bausystem.features.worldedit.mask.checkerboard3d;
|
||||||
|
|
||||||
|
import com.fastasyncworldedit.core.extension.factory.parser.RichParser;
|
||||||
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
|
import com.sk89q.worldedit.command.util.SuggestionHelper;
|
||||||
|
import com.sk89q.worldedit.extension.input.InputParseException;
|
||||||
|
import com.sk89q.worldedit.extension.input.ParserContext;
|
||||||
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
|
import de.steamwar.bausystem.utils.WorldEditUtils;
|
||||||
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.PluginCheck;
|
||||||
|
import de.steamwar.linkage.api.Plain;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
@Linked
|
||||||
|
@PluginCheck("FastAsyncWorldEdit")
|
||||||
|
public class FAWECheckerboard3DMaskParser extends RichParser<Mask> implements Plain {
|
||||||
|
|
||||||
|
public FAWECheckerboard3DMaskParser() {
|
||||||
|
super(WorldEdit.getInstance(), "#checkerboard3d");
|
||||||
|
WorldEditUtils.addMaskParser(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Stream<String> getSuggestions(String argumentInput, int index) {
|
||||||
|
if (index == 0) {
|
||||||
|
return SuggestionHelper.suggestPositiveIntegers(argumentInput);
|
||||||
|
}
|
||||||
|
return Stream.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mask parseFromInput(@Nonnull String[] arguments, ParserContext context) throws InputParseException {
|
||||||
|
if (arguments.length != 1) {
|
||||||
|
return new Checkerboard3DMask(1);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return new Checkerboard3DMask(Integer.parseInt(arguments[0]));
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
throw new InputParseException("Invalid number: " + arguments[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,83 @@
|
|||||||
|
/*
|
||||||
|
* This file is a part of the SteamWar software.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 SteamWar.de-Serverteam
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.steamwar.bausystem.features.worldedit.mask.grid;
|
||||||
|
|
||||||
|
import com.fastasyncworldedit.core.extension.factory.parser.RichParser;
|
||||||
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
|
import com.sk89q.worldedit.command.util.SuggestionHelper;
|
||||||
|
import com.sk89q.worldedit.extension.input.InputParseException;
|
||||||
|
import com.sk89q.worldedit.extension.input.ParserContext;
|
||||||
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
|
import de.steamwar.bausystem.utils.WorldEditUtils;
|
||||||
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.PluginCheck;
|
||||||
|
import de.steamwar.linkage.api.Plain;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
@Linked
|
||||||
|
@PluginCheck("FastAsyncWorldEdit")
|
||||||
|
public class FAWEGridMaskParser extends RichParser<Mask> implements Plain {
|
||||||
|
|
||||||
|
public FAWEGridMaskParser() {
|
||||||
|
super(WorldEdit.getInstance(), "#grid");
|
||||||
|
WorldEditUtils.addMaskParser(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Stream<String> getSuggestions(String argumentInput, int index) {
|
||||||
|
if (index < 3) {
|
||||||
|
return SuggestionHelper.suggestPositiveIntegers(argumentInput);
|
||||||
|
}
|
||||||
|
if (index == 3) {
|
||||||
|
return Stream.of("and", "or");
|
||||||
|
}
|
||||||
|
return Stream.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mask parseFromInput(@Nonnull String[] arguments, ParserContext context) throws InputParseException {
|
||||||
|
if (arguments.length < 3 || arguments.length > 4) {
|
||||||
|
throw new InputParseException("Expected 3 or 4 arguments");
|
||||||
|
}
|
||||||
|
int x;
|
||||||
|
int y;
|
||||||
|
int z;
|
||||||
|
try {
|
||||||
|
x = Integer.parseInt(arguments[0]);
|
||||||
|
y = Integer.parseInt(arguments[1]);
|
||||||
|
z = Integer.parseInt(arguments[2]);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
throw new InputParseException("Expected 3 or 4 numbers");
|
||||||
|
}
|
||||||
|
boolean and = true;
|
||||||
|
if (arguments.length == 4) {
|
||||||
|
if (arguments[3].equalsIgnoreCase("and")) {
|
||||||
|
and = true;
|
||||||
|
} else if (arguments[3].equalsIgnoreCase("or")) {
|
||||||
|
and = false;
|
||||||
|
} else {
|
||||||
|
throw new InputParseException("Expected 'and' or 'or'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new GridMask(x, y, z, and);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* This file is a part of the SteamWar software.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 SteamWar.de-Serverteam
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.steamwar.bausystem.features.worldedit.mask.grid;
|
||||||
|
|
||||||
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
|
||||||
|
public class GridMask implements Mask {
|
||||||
|
|
||||||
|
private int x;
|
||||||
|
private int y;
|
||||||
|
private int z;
|
||||||
|
private boolean and;
|
||||||
|
|
||||||
|
public GridMask(int x, int y, int z, boolean and) {
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
this.z = z;
|
||||||
|
this.and = and;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean test(BlockVector3 vector) {
|
||||||
|
if (and) {
|
||||||
|
return vector.getBlockX() % x == 0 && vector.getBlockY() % y == 0 && vector.getBlockZ() % z == 0;
|
||||||
|
} else {
|
||||||
|
return vector.getBlockX() % x == 0 || vector.getBlockY() % y == 0 || vector.getBlockZ() % z == 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Mask copy() {
|
||||||
|
return new GridMask(x, y, z, and);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,140 @@
|
|||||||
|
/*
|
||||||
|
* This file is a part of the SteamWar software.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 SteamWar.de-Serverteam
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.steamwar.bausystem.features.worldedit.pattern.gradient;
|
||||||
|
|
||||||
|
import com.fastasyncworldedit.core.extension.factory.parser.RichParser;
|
||||||
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
|
import com.sk89q.worldedit.extension.input.InputParseException;
|
||||||
|
import com.sk89q.worldedit.extension.input.ParserContext;
|
||||||
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.regions.Region;
|
||||||
|
import de.steamwar.bausystem.utils.WorldEditUtils;
|
||||||
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.PluginCheck;
|
||||||
|
import de.steamwar.linkage.api.Plain;
|
||||||
|
import org.bukkit.Axis;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
@Linked
|
||||||
|
@PluginCheck("FastAsyncWorldEdit")
|
||||||
|
public class FAWEGradientPatternParser extends RichParser<Pattern> implements Plain {
|
||||||
|
|
||||||
|
public FAWEGradientPatternParser() {
|
||||||
|
super(WorldEdit.getInstance(), "#gradient");
|
||||||
|
WorldEditUtils.addPatternParser(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@Override
|
||||||
|
public Pattern parseFromInput(String s, ParserContext parserContext) throws InputParseException {
|
||||||
|
System.out.println("parse " + s);
|
||||||
|
if (!s.startsWith("#gradient")) return null;
|
||||||
|
Extent extent = parserContext.requireExtent();
|
||||||
|
Axis axis = null;
|
||||||
|
if (s.startsWith("#gradientx")) {
|
||||||
|
axis = Axis.X;
|
||||||
|
} else if (s.startsWith("#gradienty")) {
|
||||||
|
axis = Axis.Y;
|
||||||
|
} else if (s.startsWith("#gradientz")) {
|
||||||
|
axis = Axis.Z;
|
||||||
|
}
|
||||||
|
if (axis == null) {
|
||||||
|
throw new InputParseException("No axis given for gradient pattern");
|
||||||
|
}
|
||||||
|
s = s.substring(10);
|
||||||
|
if (!s.startsWith("[") && s.endsWith("]")) {
|
||||||
|
throw new InputParseException("No pattern given for gradient pattern");
|
||||||
|
}
|
||||||
|
s = s.substring(1, s.length() - 1);
|
||||||
|
String[] patterns = s.split("]\\[");
|
||||||
|
if (patterns.length < 2) {
|
||||||
|
throw new InputParseException("Not enough patterns given for gradient pattern");
|
||||||
|
}
|
||||||
|
if (patterns.length > 2) {
|
||||||
|
throw new InputParseException("Too many patterns given for gradient pattern");
|
||||||
|
}
|
||||||
|
Pattern from = WorldEditUtils.getPatternFactory().parseFromInput(patterns[0], parserContext);
|
||||||
|
Pattern to = WorldEditUtils.getPatternFactory().parseFromInput(patterns[1], parserContext);
|
||||||
|
int size = 0;
|
||||||
|
switch (axis) {
|
||||||
|
case X:
|
||||||
|
size = extent.getMaximumPoint().getBlockX() - extent.getMinimumPoint().getBlockX();
|
||||||
|
break;
|
||||||
|
case Y:
|
||||||
|
size = extent.getMaximumPoint().getBlockY() - extent.getMinimumPoint().getBlockY();
|
||||||
|
break;
|
||||||
|
case Z:
|
||||||
|
size = extent.getMaximumPoint().getBlockZ() - extent.getMinimumPoint().getBlockZ();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return new GradientPattern(axis, from, to, extent.getMinimumPoint(), size);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Stream<String> getSuggestions(String input, int index) {
|
||||||
|
if (index == 0) {
|
||||||
|
return Stream.of("x", "y", "z");
|
||||||
|
}
|
||||||
|
if (index == 1 || index == 2) {
|
||||||
|
return WorldEdit.getInstance().getPatternFactory().getSuggestions(input).stream();
|
||||||
|
}
|
||||||
|
return Stream.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Pattern parseFromInput(@Nonnull String[] arguments, ParserContext context) throws InputParseException {
|
||||||
|
if (arguments.length < 2) {
|
||||||
|
throw new InputParseException("Not enough arguments given for gradient pattern");
|
||||||
|
}
|
||||||
|
Axis axis = null;
|
||||||
|
switch (arguments[0]) {
|
||||||
|
case "x":
|
||||||
|
axis = Axis.X;
|
||||||
|
break;
|
||||||
|
case "y":
|
||||||
|
axis = Axis.Y;
|
||||||
|
break;
|
||||||
|
case "z":
|
||||||
|
axis = Axis.Z;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new InputParseException("No axis given for gradient pattern");
|
||||||
|
}
|
||||||
|
Region region = context.getSelection();
|
||||||
|
Pattern from = WorldEditUtils.getPatternFactory().parseFromInput(arguments[1], context);
|
||||||
|
Pattern to = WorldEditUtils.getPatternFactory().parseFromInput(arguments[2], context);
|
||||||
|
int size = 0;
|
||||||
|
switch (axis) {
|
||||||
|
case X:
|
||||||
|
size = region.getWidth();
|
||||||
|
break;
|
||||||
|
case Y:
|
||||||
|
size = region.getHeight();
|
||||||
|
break;
|
||||||
|
case Z:
|
||||||
|
size = region.getLength();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return new GradientPattern(axis, from, to, region.getMinimumPoint(), size);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
* This file is a part of the SteamWar software.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 SteamWar.de-Serverteam
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.steamwar.bausystem.features.worldedit.pattern.gradient;
|
||||||
|
|
||||||
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.world.block.BaseBlock;
|
||||||
|
import org.bukkit.Axis;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class GradientPattern implements Pattern {
|
||||||
|
|
||||||
|
private final Axis axis;
|
||||||
|
private final Pattern first;
|
||||||
|
private final Pattern second;
|
||||||
|
private final BlockVector3 min;
|
||||||
|
private final int size;
|
||||||
|
private final Random random = new Random();
|
||||||
|
|
||||||
|
public GradientPattern(Axis axis, Pattern first, Pattern second, BlockVector3 min, int size) {
|
||||||
|
this.axis = axis;
|
||||||
|
this.first = first;
|
||||||
|
this.second = second;
|
||||||
|
this.min = min;
|
||||||
|
this.size = size;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BaseBlock applyBlock(BlockVector3 position) {
|
||||||
|
int percent = 0;
|
||||||
|
switch (axis) {
|
||||||
|
case X:
|
||||||
|
percent = (int) ((position.getX() - min.getX()) / (double) size * 100);
|
||||||
|
break;
|
||||||
|
case Y:
|
||||||
|
percent = (int) ((position.getY() - min.getY()) / (double) size * 100);
|
||||||
|
break;
|
||||||
|
case Z:
|
||||||
|
percent = (int) ((position.getZ() - min.getZ()) / (double) size * 100);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (random.nextInt(100) <= Math.abs(percent)) {
|
||||||
|
return first.applyBlock(position);
|
||||||
|
} else {
|
||||||
|
return second.applyBlock(position);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -17,7 +17,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package de.steamwar.bausystem.features.worldedit;
|
package de.steamwar.bausystem.features.worldedit.utils;
|
||||||
|
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.blocks.SignBlock;
|
import com.sk89q.worldedit.blocks.SignBlock;
|
||||||
@ -101,4 +101,9 @@ public class SpecialReplace implements Mask, Pattern {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Mask copy() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
@ -23,6 +23,10 @@ import com.sk89q.worldedit.EditSession;
|
|||||||
import com.sk89q.worldedit.IncompleteRegionException;
|
import com.sk89q.worldedit.IncompleteRegionException;
|
||||||
import com.sk89q.worldedit.WorldEdit;
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
||||||
|
import com.sk89q.worldedit.extension.factory.PatternFactory;
|
||||||
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.internal.registry.InputParser;
|
||||||
import com.sk89q.worldedit.math.BlockVector3;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
import com.sk89q.worldedit.regions.RegionSelector;
|
import com.sk89q.worldedit.regions.RegionSelector;
|
||||||
@ -53,6 +57,26 @@ public class WorldEditUtils {
|
|||||||
return regionSelector.getRegion();
|
return regionSelector.getRegion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public Mask getMask(Player player) {
|
||||||
|
return WorldEdit.getInstance()
|
||||||
|
.getSessionManager()
|
||||||
|
.get(BukkitAdapter.adapt(player))
|
||||||
|
.getMask();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addMaskParser(InputParser<Mask> maskInputParser) {
|
||||||
|
WorldEdit.getInstance().getMaskFactory().register(maskInputParser);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addPatternParser(InputParser<Pattern> patternInputParser) {
|
||||||
|
WorldEdit.getInstance().getPatternFactory().register(patternInputParser);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PatternFactory getPatternFactory() {
|
||||||
|
return WorldEdit.getInstance().getPatternFactory();
|
||||||
|
}
|
||||||
|
|
||||||
public Pair<Location, Location> getSelection(Player player) {
|
public Pair<Location, Location> getSelection(Player player) {
|
||||||
RegionSelector regionSelector = WorldEdit.getInstance()
|
RegionSelector regionSelector = WorldEdit.getInstance()
|
||||||
.getSessionManager()
|
.getSessionManager()
|
||||||
|
22
build.gradle
22
build.gradle
@ -20,8 +20,6 @@
|
|||||||
|
|
||||||
import org.apache.tools.ant.taskdefs.condition.Os
|
import org.apache.tools.ant.taskdefs.condition.Os
|
||||||
|
|
||||||
import java.util.function.BiConsumer
|
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
// Adding the base plugin fixes the following gradle warnings in IntelliJ:
|
// Adding the base plugin fixes the following gradle warnings in IntelliJ:
|
||||||
//
|
//
|
||||||
@ -151,21 +149,21 @@ build.finalizedBy(finalizeProject)
|
|||||||
|
|
||||||
if (steamwarProperties.containsKey("hostname")) {
|
if (steamwarProperties.containsKey("hostname")) {
|
||||||
String hostname = steamwarProperties.get("hostname")
|
String hostname = steamwarProperties.get("hostname")
|
||||||
String uploadPath = steamwarProperties.getOrDefault("uploadPath", "~")
|
|
||||||
|
|
||||||
String server = steamwarProperties.getOrDefault("server", "Dev1.15")
|
String type = steamwarProperties.getOrDefault("type", "Bau19")
|
||||||
String serverStartFlags = steamwarProperties.getOrDefault("serverStartFlags", "")
|
String world = steamwarProperties.getOrDefault("world", "")
|
||||||
|
String pluginFolder = steamwarProperties.getOrDefault("pluginFolder", "")
|
||||||
|
|
||||||
task uploadProject {
|
task uploadProject {
|
||||||
description 'Upload this project'
|
description 'Upload this project'
|
||||||
group "Steamwar"
|
group "Steamwar"
|
||||||
|
|
||||||
doLast {
|
doLast {
|
||||||
await(shell("scp ${libs}/${jarName} ${hostname}:${uploadPath}/${server}/plugins"))
|
await(shell("scp ${libs}/${jarName} ${hostname}:${pluginFolder}"))
|
||||||
if (steamwarProperties.getOrDefault("directStart", "false") == "false" && !answer("Start ${server} server?")) {
|
if (steamwarProperties.getOrDefault("directStart", "false") == "false" && !answer("Start ${server} server?")) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
serverStart(server, serverStartFlags, hostname)
|
serverStart(type, hostname, world, pluginFolder)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
uploadProject.dependsOn(buildProject)
|
uploadProject.dependsOn(buildProject)
|
||||||
@ -175,7 +173,7 @@ if (steamwarProperties.containsKey("hostname")) {
|
|||||||
group "Steamwar"
|
group "Steamwar"
|
||||||
|
|
||||||
doLast {
|
doLast {
|
||||||
serverStart(server, serverStartFlags, hostname)
|
serverStart(server, "", hostname)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -195,8 +193,8 @@ private def shell(String command) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private def serverStart(String serverName, String serverFlags, String hostname) {
|
private def serverStart(String type, String hostname, String worldName, String pluginFolder) {
|
||||||
def proc = shell("ssh -t ${hostname} \"./mc ${serverFlags} ${serverName}\"")
|
def proc = shell("ssh -t ${hostname} \"./binarys/dev.py ${type} -w ${worldName} -p ${pluginFolder}\"")
|
||||||
|
|
||||||
Set<String> strings = new HashSet<>()
|
Set<String> strings = new HashSet<>()
|
||||||
File file = new File("${projectDir}/ignoredlog");
|
File file = new File("${projectDir}/ignoredlog");
|
||||||
@ -225,7 +223,7 @@ private def serverStart(String serverName, String serverFlags, String hostname)
|
|||||||
// Ignored
|
// Ignored
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
outputThread.setName("${serverName} - OutputThread")
|
outputThread.setName("${type} - OutputThread")
|
||||||
outputThread.start()
|
outputThread.start()
|
||||||
|
|
||||||
Writer writer
|
Writer writer
|
||||||
@ -242,7 +240,7 @@ private def serverStart(String serverName, String serverFlags, String hostname)
|
|||||||
// Ignored
|
// Ignored
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
inputThread.setName("${serverName} - InputThread")
|
inputThread.setName("${type} - InputThread")
|
||||||
inputThread.start()
|
inputThread.start()
|
||||||
|
|
||||||
gradle.buildFinished { buildResult ->
|
gradle.buildFinished { buildResult ->
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren