mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-07-03 22:24:43 +02:00
Compare commits
4 Commits
fix/plotTi
...
fix/v6/com
Author | SHA1 | Date | |
---|---|---|---|
42f0b70e85 | |||
b740d5854c | |||
d5445cfbef | |||
3effaefda7 |
25
.github/workflows/announce-release-on-discord.yml
vendored
Normal file
25
.github/workflows/announce-release-on-discord.yml
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
name: Announce release on discord
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
send_announcement:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: send custom message with args
|
||||
env:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
DISCORD_USERNAME: PlotSquared Release
|
||||
DISCORD_AVATAR: https://raw.githubusercontent.com/IntellectualSites/Assets/main/plugins/PlotSquared/PlotSquared.png
|
||||
uses: Ilshidur/action-discord@0.3.2
|
||||
with:
|
||||
args: |
|
||||
"<@&525015541815967744> <@&679322738552471574> <@&699293353862496266>"
|
||||
""
|
||||
"<:plotsquared:730750385886593039> **PlotSquared ${{ github.event.release.tag_name }} has been released!**"
|
||||
""
|
||||
"Click here to view changelog: https://github.com/IntellectualSites/PlotSquared/releases/tag/${{ github.event.release.tag_name }}"
|
||||
""
|
||||
"The download is available at:"
|
||||
"- Spigot: <https://www.spigotmc.org/resources/77506/>"
|
@ -849,11 +849,11 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
|
||||
// managed elsewhere
|
||||
continue;
|
||||
case "SHULKER":
|
||||
if (Settings.Enabled_Components.KILL_ROAD_MOBS) {
|
||||
if (Settings.Enabled_Components.KILL_ROAD_MOBS && (Settings.Enabled_Components.KILL_NAMED_ROAD_MOBS || entity.getCustomName() == null)) {
|
||||
LivingEntity livingEntity = (LivingEntity) entity;
|
||||
List<MetadataValue> meta = entity.getMetadata("shulkerPlot");
|
||||
if (!meta.isEmpty()) {
|
||||
if (livingEntity.isLeashed()) {
|
||||
if (livingEntity.isLeashed() && !Settings.Enabled_Components.KILL_OWNED_ROAD_MOBS) {
|
||||
continue;
|
||||
}
|
||||
List<MetadataValue> keep = entity.getMetadata("keep");
|
||||
@ -973,7 +973,9 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
|
||||
|| !entity.hasMetadata("keep")) {
|
||||
Entity passenger = entity.getPassenger();
|
||||
if ((Settings.Enabled_Components.KILL_OWNED_ROAD_MOBS
|
||||
|| !(passenger instanceof Player)) && entity.getMetadata("keep").isEmpty()) {
|
||||
|| !((passenger instanceof Player) || livingEntity.isLeashed()))
|
||||
&& (Settings.Enabled_Components.KILL_NAMED_ROAD_MOBS || entity.getCustomName() == null)
|
||||
&& entity.getMetadata("keep").isEmpty()) {
|
||||
if (entity.hasMetadata("ps-tmp-teleport")) {
|
||||
continue;
|
||||
}
|
||||
@ -983,8 +985,9 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
|
||||
}
|
||||
} else {
|
||||
Entity passenger = entity.getPassenger();
|
||||
if ((Settings.Enabled_Components.KILL_OWNED_ROAD_MOBS
|
||||
|| !(passenger instanceof Player)) && entity.getMetadata("keep").isEmpty()) {
|
||||
if ((Settings.Enabled_Components.KILL_OWNED_ROAD_MOBS || !(passenger instanceof Player))
|
||||
&& (Settings.Enabled_Components.KILL_NAMED_ROAD_MOBS && entity.getCustomName() != null)
|
||||
&& entity.getMetadata("keep").isEmpty()) {
|
||||
if (entity.hasMetadata("ps-tmp-teleport")) {
|
||||
continue;
|
||||
}
|
||||
|
@ -183,7 +183,11 @@ public class GenChunk extends ScopedQueueCoordinator {
|
||||
|
||||
@Override
|
||||
public boolean setBlock(int x, int y, int z, @NonNull Pattern pattern) {
|
||||
return setBlock(x, y, z, PatternUtil.apply(Preconditions.checkNotNull(pattern, "Pattern may not be null"), x, y, z));
|
||||
final BaseBlock block = PatternUtil.apply(Preconditions.checkNotNull(
|
||||
pattern,
|
||||
"Pattern may not be null"
|
||||
), x + (chunkX << 4), y, z + (chunkZ << 4));
|
||||
return setBlock(x, y, z, block);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -759,6 +759,8 @@ public class Settings extends Config {
|
||||
@Comment("Also kill any road mobs that are being ridden, or are leashed")
|
||||
public static boolean
|
||||
KILL_OWNED_ROAD_MOBS = false;
|
||||
@Comment("Also kill any road mobs that are named")
|
||||
public static boolean KILL_NAMED_ROAD_MOBS = false;
|
||||
@Comment("Kill items on roads (Stick, Paper, etc.)")
|
||||
public static boolean KILL_ROAD_ITEMS = false;
|
||||
@Comment("Kill vehicles on roads (Boat, Minecart, etc.)")
|
||||
|
@ -29,7 +29,6 @@ import com.sk89q.worldedit.extension.input.ParserContext;
|
||||
import com.sk89q.worldedit.extension.platform.Actor;
|
||||
import com.sk89q.worldedit.function.pattern.BlockPattern;
|
||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||
import com.sk89q.worldedit.function.pattern.RandomPattern;
|
||||
import com.sk89q.worldedit.math.BlockVector3;
|
||||
import com.sk89q.worldedit.world.block.BaseBlock;
|
||||
import com.sk89q.worldedit.world.block.BlockState;
|
||||
@ -44,7 +43,7 @@ public class PatternUtil {
|
||||
|
||||
public static BaseBlock apply(@NonNull Pattern pattern, int x, int y, int z) {
|
||||
Preconditions.checkNotNull(pattern, "Pattern may not be null");
|
||||
if (pattern instanceof BlockPattern || pattern instanceof RandomPattern
|
||||
if (pattern instanceof BlockPattern
|
||||
|| pattern instanceof BlockState || pattern instanceof BlockType
|
||||
|| pattern instanceof BaseBlock) {
|
||||
return pattern.applyBlock(BlockVector3.ZERO);
|
||||
|
@ -36,7 +36,8 @@ import java.util.regex.Pattern;
|
||||
|
||||
public class StringMan {
|
||||
|
||||
private static final Pattern STRING_SPLIT_PATTERN = Pattern.compile("(?<quoted>\"[\\w ]+\")|(?<single>\\w+)");
|
||||
// Stolen from https://stackoverflow.com/a/366532/12620913 | Debug: https://regex101.com/r/DudJLb/1
|
||||
private static final Pattern STRING_SPLIT_PATTERN = Pattern.compile("[^\\s\"]+|\"([^\"]*)\"");
|
||||
|
||||
public static String replaceFromMap(String string, Map<String, String> replacements) {
|
||||
StringBuilder sb = new StringBuilder(string);
|
||||
@ -355,7 +356,7 @@ public class StringMan {
|
||||
var matcher = StringMan.STRING_SPLIT_PATTERN.matcher(message);
|
||||
List<String> splitMessages = new ArrayList<>();
|
||||
while (matcher.find()) {
|
||||
splitMessages.add(matcher.group(0).replaceAll("\"", ""));
|
||||
splitMessages.add(matcher.group(matcher.groupCount() - 1).replaceAll("\"", ""));
|
||||
}
|
||||
return splitMessages;
|
||||
}
|
||||
|
@ -101,7 +101,7 @@ public class FlagTest {
|
||||
public void shouldSuccessfullyParseTitleFlagWithTitleEmptyAndSubTitleSingleWord() {
|
||||
Assertions.assertDoesNotThrow(() -> {
|
||||
var title = PlotTitleFlag.TITLE_FLAG_DEFAULT.parse("\"\" \"single\"").getValue();
|
||||
Assertions.assertEquals(" ", title.title());
|
||||
Assertions.assertEquals("", title.title());
|
||||
Assertions.assertEquals("single", title.subtitle());
|
||||
}, "Should not throw a FlagParseException");
|
||||
}
|
||||
|
@ -32,7 +32,9 @@ public class StringManTest {
|
||||
new Message("title", List.of("title")),
|
||||
new Message("title \"sub title\"", List.of("title", "sub title")),
|
||||
new Message("\"a title\" subtitle", List.of("a title", "subtitle")),
|
||||
new Message("\"title\" \"subtitle\"", List.of("title", "subtitle"))
|
||||
new Message("\"title\" \"subtitle\"", List.of("title", "subtitle")),
|
||||
new Message("\"How <bold>bold</bold> of you\" \"to assume I like <rainbow>rainbows</rainbow>\"",
|
||||
List.of("How <bold>bold</bold> of you", "to assume I like <rainbow>rainbows</rainbow>"))
|
||||
);
|
||||
|
||||
for (Message message : messages) {
|
||||
|
Reference in New Issue
Block a user