Skip to content

Commit dc275a0

Browse files
committed
(fix) IllegalArgumentException on sign change
1 parent b83ada4 commit dc275a0

File tree

2 files changed

+11
-22
lines changed

2 files changed

+11
-22
lines changed

src/main/java/cat/nyaa/ukit/signedit/SignEditFunction.java

+8-18
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,11 @@
1010
import land.melon.lab.simplelanguageloader.utils.TextUtils;
1111
import org.bukkit.Bukkit;
1212
import org.bukkit.Location;
13-
import org.bukkit.block.BlockFace;
1413
import org.bukkit.block.Sign;
15-
import org.bukkit.block.data.Directional;
1614
import org.bukkit.command.Command;
1715
import org.bukkit.command.CommandSender;
1816
import org.bukkit.entity.Player;
19-
import org.bukkit.event.block.BlockPlaceEvent;
20-
import org.bukkit.inventory.EquipmentSlot;
21-
import org.bukkit.inventory.ItemStack;
17+
import org.bukkit.event.block.SignChangeEvent;
2218

2319
import java.util.Arrays;
2420
import java.util.List;
@@ -81,20 +77,14 @@ public boolean invokeCommand(CommandSender commandSender, Command command, Strin
8177
return true;
8278
}
8379
}
84-
var signSide = Utils.getSignSideLookingAt(senderPlayer, sign);
80+
var side = Utils.getSignSideLookingAt(senderPlayer, sign);
81+
var signSide = sign.getSide(side);
8582
var lineContentBeforeChange = signSide.getLine(line - 1);
8683
signSide.setLine(line - 1, finalLine);
8784
sign.update();
88-
var blockPlaceEvent = new BlockPlaceEvent(targetBlock, targetBlock.getState(),
89-
targetBlock.getBlockData() instanceof Directional ?
90-
targetBlock.getRelative(((Directional) targetBlock.getBlockData()).getFacing().getOppositeFace()) :
91-
targetBlock.getRelative(BlockFace.DOWN),
92-
new ItemStack(targetBlock.getType(), 1),
93-
senderPlayer,
94-
!inInSpawnProtection(targetBlock.getLocation()) || senderPlayer.isOp(),
95-
EquipmentSlot.HAND);
96-
Bukkit.getPluginManager().callEvent(blockPlaceEvent);
97-
if (blockPlaceEvent.isCancelled()) {
85+
var signChangeEvent = new SignChangeEvent(targetBlock, senderPlayer, signSide.lines(), side);
86+
Bukkit.getPluginManager().callEvent(signChangeEvent);
87+
if (signChangeEvent.isCancelled()) {
9888
signSide.setLine(line - 1, lineContentBeforeChange);
9989
sign.update();
10090
senderPlayer.sendMessage(pluginInstance.language.signEditLang.modifyCancelled.produce());
@@ -140,8 +130,8 @@ public List<String> tabComplete(CommandSender sender, Command command, String al
140130
if (LockettePluginUtils.isLockSign(targetBlock)) {
141131
return List.of();
142132
}
143-
var signSide = Utils.getSignSideLookingAt(player, sign);
144-
133+
var lookingSide = Utils.getSignSideLookingAt(player, sign);
134+
var signSide = sign.getSide(lookingSide);
145135
var suggestion = signSide.getLine(line - 1).replaceAll("&", "§§").replaceAll("§", "&");
146136
return suggestion.length() == 0 ? List.of() : List.of(suggestion);
147137
}

src/main/java/cat/nyaa/ukit/utils/Utils.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import org.bukkit.block.data.Directional;
1111
import org.bukkit.block.data.Rotatable;
1212
import org.bukkit.block.sign.Side;
13-
import org.bukkit.block.sign.SignSide;
1413
import org.bukkit.entity.Entity;
1514
import org.bukkit.entity.Player;
1615
import org.bukkit.inventory.EquipmentSlot;
@@ -85,15 +84,15 @@ public static double getAngleFromBlockFace(BlockFace blockFace) {
8584
return angleInDegrees;
8685
}
8786

88-
public static SignSide getSignSideLookingAt(Player player, Sign sign) {
87+
public static Side getSignSideLookingAt(Player player, Sign sign) {
8988
var signLoc = getCenterOfSign(sign);
9089
var playerLoc = Vector3D.fromBukkitLocation(player.getLocation());
9190
var angle = angleFromSignFace(playerLoc, signLoc, sign.getBlockData());
9291

9392
if (angle > 270 || angle <= 90)
94-
return sign.getSide(Side.FRONT);
93+
return Side.FRONT;
9594
else
96-
return sign.getSide(Side.BACK);
95+
return Side.BACK;
9796
}
9897

9998
public static Entity getEntityLookingAt(Player player, Predicate<Entity> predicate) {

0 commit comments

Comments
 (0)