Skip to content

Commit

Permalink
Use Paper component methods for faster multi-comparison with text
Browse files Browse the repository at this point in the history
  • Loading branch information
me4502 committed Jun 29, 2023
1 parent 72a57dd commit a2740ca
Show file tree
Hide file tree
Showing 28 changed files with 145 additions and 131 deletions.
2 changes: 1 addition & 1 deletion craftbook-bukkit/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ configurations["testImplementation"].extendsFrom(localImplementation)
dependencies {
"api"(project(":craftbook-core"))
"api"(project(":craftbook-libs:bukkit"))
"localImplementation"("io.papermc.paper:paper-api:1.20-R0.1-SNAPSHOT") {
"localImplementation"("io.papermc.paper:paper-api:1.20.1-R0.1-SNAPSHOT") {
exclude("junit", "junit")
exclude(group = "org.slf4j", module = "slf4j-api")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import com.google.common.base.Preconditions;
import com.sk89q.worldedit.entity.Player;
import net.kyori.adventure.text.Component;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.Sign;
Expand Down Expand Up @@ -128,7 +129,7 @@ public boolean update(boolean force) {
}

for (int i = 0; i < 4; i++) {
getSign().setLine(i, lines[i]);
getSign().line(i, Component.text(lines[i]));
}
System.arraycopy(this.lines, 0, this.oldLines, 0, this.lines.length);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,25 +146,6 @@ public void onEnable() {
commandManager.registerCommandsWith(platform);

getServer().getPluginManager().registerEvents(new Listener() {

/* Bukkit Bug Fixes */

@EventHandler(priority = EventPriority.LOWEST)
public void signChange(SignChangeEvent event) {
for (int i = 0; i < event.getLines().length; i++) {
StringBuilder builder = new StringBuilder();
for (char c : event.getLine(i).toCharArray()) {
if (c < 0xF700 || c > 0xF747) {
builder.append(c);
}
}
String fixed = builder.toString();
if (!fixed.equals(event.getLine(i))) {
event.setLine(i, fixed);
}
}
}

/* Alerts */

@EventHandler(priority = EventPriority.HIGH)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.bukkit.block.data.Powerable;
import org.bukkit.block.data.type.RedstoneWire;
import org.bukkit.entity.Minecart;
import org.bukkit.event.Event;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
Expand Down Expand Up @@ -95,10 +96,13 @@ public void onPlayerInteract(final PlayerInteractEvent event) {
signClickTimer.put(event.getPlayer().getUniqueId(), System.currentTimeMillis());
}
}
SignClickEvent ev = new SignClickEvent(event.getPlayer(), action, event.getItem(), block, event.getBlockFace(), event.getHand(), event.getInteractionPoint());
SignClickEvent ev = new SignClickEvent(event.getPlayer(), action, event.getItem(), block, event.getBlockFace(), event.getHand(), event.getClickedPosition());
CraftBookPlugin.inst().getServer().getPluginManager().callEvent(ev);
if (ev.isCancelled()) {
event.setCancelled(true);
if (ev.useInteractedBlock() == Event.Result.DENY) {
event.setUseInteractedBlock(Event.Result.DENY);
}
if (ev.useItemInHand() == Event.Result.DENY) {
event.setUseItemInHand(Event.Result.DENY);
}
}
}
Expand Down Expand Up @@ -363,16 +367,4 @@ public void onVehicleEnter(VehicleEnterEvent event) {
}
}
}

@EventHandler(priority = EventPriority.LOWEST)
public void onSignChange(SignChangeEvent event) {
// TODO Determine if necessary
for (int i = 0; i < 4; i++) {
String line = event.getLine(i);
if (line.startsWith("&0") || line.startsWith("\u00A70")) {
line = line.substring(2);
event.setLine(i, line);
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,14 @@
import com.sk89q.util.yaml.YAMLProcessor;
import com.sk89q.worldedit.util.formatting.text.TextComponent;
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.Sign;
import org.bukkit.block.sign.Side;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.block.BlockBreakEvent;
Expand All @@ -46,7 +49,8 @@ public void onSignChange(SignChangeEvent event) {
return;
}

if (!event.getLine(1).equalsIgnoreCase("[chunk]")) {
String signLine1 = PlainTextComponentSerializer.plainText().serialize(event.line(1));
if (!signLine1.equalsIgnoreCase("[chunk]")) {
return;
}

Expand All @@ -64,15 +68,17 @@ public void onSignChange(SignChangeEvent event) {

for (BlockState state : event.getBlock().getChunk().getTileEntities(SignUtil::isSign, false)) {
if (state instanceof Sign s) {
if (s.getLine(1).equals("[Chunk]")) {
lplayer.printError(TranslatableComponent.of("craftbook.chunkanchor.already-anchored"));
SignUtil.cancelSignChange(event);
return;
for (Side side : Side.values()) {
if (PlainTextComponentSerializer.plainText().serialize(s.getSide(side).line(1)).equals("[Chunk]")) {
lplayer.printError(TranslatableComponent.of("craftbook.chunkanchor.already-anchored"));
SignUtil.cancelSignChange(event);
return;
}
}
}
}

event.setLine(1, "[Chunk]");
event.line(1, Component.text( "[Chunk]"));
lplayer.printInfo(TranslatableComponent.of("craftbook.chunkanchor.create"));
}

Expand Down Expand Up @@ -134,10 +140,12 @@ private void updateChunkTicket(Chunk chunk) {
continue;
}
if (state instanceof Sign sign) {
if (sign.getLine(1).equals("[Chunk]")) {
if (!useRedstone || !sign.getLine(3).equals("OFF")) {
shouldAnchor = true;
break;
for (Side side : Side.values()) {
if (sign.getSide(side).getLine(1).equals("[Chunk]")) {
if (!useRedstone || !sign.getSide(side).getLine(3).equals("OFF")) {
shouldAnchor = true;
break;
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
import com.sk89q.util.yaml.YAMLProcessor;
import com.sk89q.worldedit.util.formatting.text.TextComponent;
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import org.bukkit.Material;
import org.bukkit.Tag;
import org.bukkit.block.Block;
Expand Down Expand Up @@ -59,23 +61,27 @@ public void onSignChange(SignChangeEvent event) {
return;
}

if (!event.getLine(1).equalsIgnoreCase("[Cook]")) {
String signLine1 = PlainTextComponentSerializer.plainText().serialize(event.line(1));
if (!signLine1.equalsIgnoreCase("[Cook]")) {
return;
}

CraftBookPlayer player = CraftBookPlugin.inst().wrapPlayer(event.getPlayer());

if (!player.hasPermission("craftbook.cookingpot.create")) {
if (CraftBook.getInstance().getPlatform().getConfiguration().showPermissionMessages) {
player.printError("mech.create-permission");
player.printError(TranslatableComponent.of(
"craftbook.mechanisms.create-permission",
TextComponent.of(getMechanicType().getName())
));
}
SignUtil.cancelSignChange(event);
return;
}

event.setLine(1, "[Cook]");
event.setLine(2, "0");
event.setLine(3, requireFuel ? "0" : "1");
event.line(1, Component.text("[Cook]"));
event.line(2, Component.text("0"));
event.line(3, Component.text(requireFuel ? "0" : "1"));
player.printInfo(TranslatableComponent.of("craftbook.cookingpot.create"));

((BukkitSelfTriggerManager) CraftBook.getInstance().getPlatform().getSelfTriggerManager()).registerSelfTrigger(event.getBlock().getLocation());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
import com.sk89q.worldedit.world.block.BlockCategories;
import com.sk89q.worldedit.world.block.BlockState;
import io.papermc.paper.entity.TeleportFlag;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import org.bukkit.Location;
import org.bukkit.Tag;
import org.bukkit.block.Block;
Expand Down Expand Up @@ -101,7 +103,7 @@ public void onSignChange(SignChangeEvent event) {
return;
}

LiftType dir = LiftType.fromLabel(event.getLine(1));
LiftType dir = LiftType.fromLabel(PlainTextComponentSerializer.plainText().serialize(event.line(1)));
if (dir == null) {
return;
}
Expand All @@ -121,7 +123,7 @@ public void onSignChange(SignChangeEvent event) {
}

player.printInfo(TranslatableComponent.of("craftbook.elevator.create." + dir.name().toLowerCase(Locale.ROOT)));
event.setLine(1, dir.getLabel());
event.line(1, Component.text(dir.getLabel()));
}

@EventHandler(priority = EventPriority.HIGH)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
import com.sk89q.util.yaml.YAMLProcessor;
import com.sk89q.worldedit.util.formatting.text.TextComponent;
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.data.Directional;
Expand Down Expand Up @@ -49,7 +51,8 @@ public void onSignChange(SignChangeEvent event) {
return;
}

if (!event.getLine(1).equalsIgnoreCase("[i]") && !event.getLine(1).equalsIgnoreCase("[|]")) {
String signLine1 = PlainTextComponentSerializer.plainText().serialize(event.line(1));
if (!signLine1.equalsIgnoreCase("[i]") && !signLine1.equalsIgnoreCase("[|]")) {
return;
}

Expand All @@ -65,7 +68,7 @@ public void onSignChange(SignChangeEvent event) {
return;
}

event.setLine(1, "[I]");
event.line(1, Component.text("[I]"));
lplayer.printInfo(TranslatableComponent.of("craftbook.lightswitch.create"));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
import com.sk89q.worldedit.world.block.BlockCategories;
import com.sk89q.worldedit.world.block.BlockState;
import io.papermc.paper.entity.TeleportFlag;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import org.bukkit.Location;
import org.bukkit.Tag;
import org.bukkit.block.Block;
Expand Down Expand Up @@ -59,7 +61,8 @@ public void onSignChange(SignChangeEvent event) {
return;
}

if (!event.getLine(1).equalsIgnoreCase("[Teleporter]")) {
String signLine1 = PlainTextComponentSerializer.plainText().serialize(event.line(1));
if (!signLine1.equalsIgnoreCase("[Teleporter]")) {
return;
}

Expand All @@ -77,7 +80,7 @@ public void onSignChange(SignChangeEvent event) {
return;
}

String posLine = event.getLine(2);
String posLine = PlainTextComponentSerializer.plainText().serialize(event.line(2));
if (posLine.length() > 0) {
String[] pos = RegexUtil.COMMA_PATTERN.split(ParsingUtil.parseLine(posLine, player));
if (pos.length <= 2) {
Expand All @@ -88,7 +91,7 @@ public void onSignChange(SignChangeEvent event) {
}

player.printInfo(TranslatableComponent.of("craftbook.teleporter.create"));
event.setLine(1, "[Teleporter]");
event.line(1, Component.text("[Teleporter]"));
}

@EventHandler(priority = EventPriority.HIGH)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
import com.sk89q.worldedit.world.block.BaseBlock;
import com.sk89q.worldedit.world.block.BlockTypes;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.Sound;
Expand Down Expand Up @@ -194,7 +196,8 @@ public void onSignChange(SignChangeEvent event) {

Block baseBlock = SignUtil.getBackBlock(event.getBlock());

if (!event.getLine(1).equalsIgnoreCase("[XP]")
String signLine1 = PlainTextComponentSerializer.plainText().serialize(event.line(1));
if (!signLine1.equalsIgnoreCase("[XP]")
|| !block.equalsFuzzy(BukkitAdapter.adapt(baseBlock.getBlockData()))) {
return;
}
Expand All @@ -211,12 +214,12 @@ public void onSignChange(SignChangeEvent event) {

int signRadius = maxRadius;
try {
signRadius = Math.max(maxRadius, Integer.parseInt(event.getLine(2)));
signRadius = Math.max(maxRadius, Integer.parseInt(PlainTextComponentSerializer.plainText().serialize(event.line(2))));
} catch (Exception ignored) {
}

event.setLine(1, "[XP]");
event.setLine(2, String.valueOf(signRadius));
event.line(1, Component.text("[XP]"));
event.line(2, Component.text(signRadius));
player.printInfo(TranslatableComponent.of("craftbook.xpstorer.create"));

// TODO Improve ST manager to not require bukkit stuff
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
import com.sk89q.worldedit.world.block.BlockCategories;
import com.sk89q.worldedit.world.block.BlockType;
import com.sk89q.worldedit.world.block.BlockTypes;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Material;
Expand Down Expand Up @@ -65,7 +67,8 @@ public void onSignChange(SignChangeEvent event) {
return;
}

if (!event.getLine(1).equalsIgnoreCase("[bridge]") && !event.getLine(1).equalsIgnoreCase("[bridge end]")) {
String signLine1 = PlainTextComponentSerializer.plainText().serialize(event.line(1));
if (!signLine1.equalsIgnoreCase("[bridge]") && !signLine1.equalsIgnoreCase("[bridge end]")) {
return;
}

Expand All @@ -82,11 +85,11 @@ public void onSignChange(SignChangeEvent event) {
return;
}

if (event.getLine(1).equalsIgnoreCase("[bridge]")) {
event.setLine(1, "[Bridge]");
if (signLine1.equalsIgnoreCase("[bridge]")) {
event.line(1, Component.text("[Bridge]"));
player.printInfo(TranslatableComponent.of("craftbook.bridge.create"));
} else if (event.getLine(1).equalsIgnoreCase("[bridge end]")) {
event.setLine(1, "[Bridge End]");
} else if (signLine1.equalsIgnoreCase("[bridge end]")) {
event.line(1, Component.text("[Bridge End]"));
player.printInfo(TranslatableComponent.of("craftbook.bridge.end-create"));
}
}
Expand Down

0 comments on commit a2740ca

Please sign in to comment.