geforkt von Mirrors/Paper
Add method to send fake sign updates to players. Adds BUKKIT-2300
By: Patrick Seidel <psycowithespn1@aim.com>
Dieser Commit ist enthalten in:
Ursprung
ee523c5095
Commit
db3aa0246f
@ -35,16 +35,24 @@ public class CraftSign extends CraftBlockState implements Sign {
|
||||
boolean result = super.update(force, applyPhysics);
|
||||
|
||||
if (result) {
|
||||
for(int i = 0; i < 4; i++) {
|
||||
if(lines[i] != null) {
|
||||
sign.lines[i] = lines[i];
|
||||
} else {
|
||||
sign.lines[i] = "";
|
||||
}
|
||||
}
|
||||
sign.lines = sanitizeLines(lines);
|
||||
sign.update();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static String[] sanitizeLines(String[] lines) {
|
||||
String[] astring = new String[4];
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
if (i < lines.length && lines[i] != null) {
|
||||
astring[i] = lines[i];
|
||||
} else {
|
||||
astring[i] = "";
|
||||
}
|
||||
}
|
||||
|
||||
return TileEntitySign.sanitizeLines(astring);
|
||||
}
|
||||
}
|
||||
|
@ -31,6 +31,7 @@ import org.bukkit.configuration.serialization.DelegateDeserialization;
|
||||
import org.bukkit.conversations.Conversation;
|
||||
import org.bukkit.conversations.ConversationAbandonedEvent;
|
||||
import org.bukkit.conversations.ManuallyAbandonedConversationCanceller;
|
||||
import org.bukkit.craftbukkit.block.CraftSign;
|
||||
import org.bukkit.craftbukkit.conversations.ConversationTracker;
|
||||
import org.bukkit.craftbukkit.CraftEffect;
|
||||
import org.bukkit.craftbukkit.CraftOfflinePlayer;
|
||||
@ -368,6 +369,27 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendSignChange(Location loc, String[] lines) {
|
||||
if (getHandle().playerConnection == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (lines == null) {
|
||||
lines = new String[4];
|
||||
}
|
||||
|
||||
Validate.notNull(loc, "Location can not be null");
|
||||
if (lines.length < 4) {
|
||||
throw new IllegalArgumentException("Must have at least 4 lines");
|
||||
}
|
||||
|
||||
// Limit to 15 chars per line and set null lines to blank
|
||||
String[] astring = CraftSign.sanitizeLines(lines);
|
||||
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutUpdateSign(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), astring));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean sendChunkChange(Location loc, int sx, int sy, int sz, byte[] data) {
|
||||
if (getHandle().playerConnection == null) return false;
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren