mirror of
https://github.com/GeyserMC/Geyser.git
synced 2024-08-14 23:57:35 +00:00
Scoreboard fix
This commit is contained in:
parent
7a1bea1d13
commit
4d8f1e1e39
3 changed files with 55 additions and 8 deletions
|
|
@ -40,6 +40,7 @@ import com.github.steveice10.mc.protocol.packet.ingame.server.entity.ServerEntit
|
||||||
import com.github.steveice10.mc.protocol.packet.ingame.server.entity.ServerEntityVelocityPacket;
|
import com.github.steveice10.mc.protocol.packet.ingame.server.entity.ServerEntityVelocityPacket;
|
||||||
import com.github.steveice10.mc.protocol.packet.ingame.server.scoreboard.ServerDisplayScoreboardPacket;
|
import com.github.steveice10.mc.protocol.packet.ingame.server.scoreboard.ServerDisplayScoreboardPacket;
|
||||||
import com.github.steveice10.mc.protocol.packet.ingame.server.scoreboard.ServerScoreboardObjectivePacket;
|
import com.github.steveice10.mc.protocol.packet.ingame.server.scoreboard.ServerScoreboardObjectivePacket;
|
||||||
|
import com.github.steveice10.mc.protocol.packet.ingame.server.scoreboard.ServerTeamPacket;
|
||||||
import com.github.steveice10.mc.protocol.packet.ingame.server.scoreboard.ServerUpdateScorePacket;
|
import com.github.steveice10.mc.protocol.packet.ingame.server.scoreboard.ServerUpdateScorePacket;
|
||||||
import com.github.steveice10.mc.protocol.packet.ingame.server.world.ServerUpdateTimePacket;
|
import com.github.steveice10.mc.protocol.packet.ingame.server.world.ServerUpdateTimePacket;
|
||||||
import com.nukkitx.nbt.CompoundTagBuilder;
|
import com.nukkitx.nbt.CompoundTagBuilder;
|
||||||
|
|
@ -307,21 +308,64 @@ public class TranslatorsInit {
|
||||||
|
|
||||||
|
|
||||||
System.out.println("new objective registered with " + packet.getName());
|
System.out.println("new objective registered with " + packet.getName());
|
||||||
if (packet.getAction() == ObjectiveAction.ADD || packet.getAction() == ObjectiveAction.UPDATE) {
|
if (packet.getAction() == ObjectiveAction.ADD) {
|
||||||
ScoreboardObjective objective = scoreboard.registerNewObjective(packet.getName());
|
ScoreboardObjective objective = scoreboard.registerNewObjective(packet.getName());
|
||||||
objective.setDisplaySlot(ScoreboardObjective.DisplaySlot.SIDEBAR);
|
objective.setDisplaySlot(ScoreboardObjective.DisplaySlot.SIDEBAR);
|
||||||
objective.setDisplayName(packet.getDisplayName().getFullText());
|
objective.setDisplayName(MessageUtils.getBedrockMessage(packet.getDisplayName()));
|
||||||
|
scoreboard.onUpdate();
|
||||||
|
} else if (packet.getAction() == ObjectiveAction.UPDATE) {
|
||||||
|
ScoreboardObjective objective = scoreboard.getObjective(packet.getName());
|
||||||
|
objective.setDisplayName(MessageUtils.getBedrockMessage(packet.getDisplayName()));
|
||||||
|
scoreboard.onUpdate();
|
||||||
} else {
|
} else {
|
||||||
scoreboard.unregisterObjective(packet.getName());
|
scoreboard.unregisterObjective(packet.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
scoreboard.onUpdate();
|
|
||||||
cache.setScoreboard(scoreboard);
|
cache.setScoreboard(scoreboard);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Registry.add(ServerTeamPacket.class, (packet, session) -> {
|
||||||
|
try {
|
||||||
|
ScoreboardCache cache = session.getScoreboardCache();
|
||||||
|
Scoreboard scoreboard = new Scoreboard(session);
|
||||||
|
if (cache.getScoreboard() != null)
|
||||||
|
scoreboard = cache.getScoreboard();
|
||||||
|
|
||||||
|
ScoreboardObjective objective = scoreboard.getObjective();
|
||||||
|
if (objective == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("Team name: " + packet.getTeamName());
|
||||||
|
// System.out.println("Team Name: " + packet.getTeamName() + " displ: " + packet.getDisplayName() + " <-> objective team = " + packet.getTeamName());
|
||||||
|
String scoreboardText = MessageUtils.getBedrockMessage(packet.getPrefix()) + MessageUtils.getBedrockMessage(packet.getSuffix());
|
||||||
|
|
||||||
|
// System.out.println("scoreboard text: " + scoreboardText);
|
||||||
|
switch (packet.getAction()) {
|
||||||
|
case REMOVE:
|
||||||
|
case REMOVE_PLAYER:
|
||||||
|
|
||||||
|
objective.registerScore(packet.getTeamName(), scoreboardText, Integer.parseInt(packet.getTeamName()), SetScorePacket.Action.REMOVE);
|
||||||
|
objective.setScoreText(packet.getTeamName(), scoreboardText);
|
||||||
|
break;
|
||||||
|
case UPDATE:
|
||||||
|
objective.setScoreText(packet.getTeamName(), scoreboardText);
|
||||||
|
case ADD_PLAYER:
|
||||||
|
case CREATE:
|
||||||
|
objective.registerScore(packet.getTeamName(), scoreboardText, Integer.parseInt(packet.getTeamName()), SetScorePacket.Action.SET);
|
||||||
|
objective.setScoreText(packet.getTeamName(), scoreboardText);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
cache.setScoreboard(scoreboard);
|
||||||
|
scoreboard.onUpdate();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
Registry.add(ServerUpdateScorePacket.class, (packet, session) -> {
|
Registry.add(ServerUpdateScorePacket.class, (packet, session) -> {
|
||||||
try {
|
try {
|
||||||
ScoreboardCache cache = session.getScoreboardCache();
|
ScoreboardCache cache = session.getScoreboardCache();
|
||||||
|
|
@ -338,9 +382,11 @@ public class TranslatorsInit {
|
||||||
switch (packet.getAction()) {
|
switch (packet.getAction()) {
|
||||||
case REMOVE:
|
case REMOVE:
|
||||||
objective.registerScore(packet.getEntry(), packet.getEntry(), packet.getValue(), SetScorePacket.Action.REMOVE);
|
objective.registerScore(packet.getEntry(), packet.getEntry(), packet.getValue(), SetScorePacket.Action.REMOVE);
|
||||||
|
objective.setScoreText(packet.getEntry(), packet.getEntry());
|
||||||
break;
|
break;
|
||||||
case ADD_OR_UPDATE:
|
case ADD_OR_UPDATE:
|
||||||
objective.registerScore(packet.getEntry(), packet.getEntry(), packet.getValue(), SetScorePacket.Action.SET);
|
objective.registerScore(packet.getEntry(), packet.getEntry(), packet.getValue(), SetScorePacket.Action.SET);
|
||||||
|
objective.setScoreText(packet.getEntry(), packet.getEntry());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ public class Score {
|
||||||
private long scoreboardId;
|
private long scoreboardId;
|
||||||
|
|
||||||
private ScoreboardObjective objective;
|
private ScoreboardObjective objective;
|
||||||
|
@Getter
|
||||||
private String fakePlayer;
|
private String fakePlayer;
|
||||||
private long id;
|
private long id;
|
||||||
private boolean isFake;
|
private boolean isFake;
|
||||||
|
|
@ -60,8 +61,8 @@ public class Score {
|
||||||
|
|
||||||
public Score(ScoreboardObjective objective, String fakePlayer) {
|
public Score(ScoreboardObjective objective, String fakePlayer) {
|
||||||
scoreboardId = -new Random().nextLong();
|
scoreboardId = -new Random().nextLong();
|
||||||
objective = objective;
|
this.objective = objective;
|
||||||
fakePlayer = fakePlayer;
|
this.fakePlayer = fakePlayer;
|
||||||
isFake = true;
|
isFake = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ public class Scoreboard {
|
||||||
if (!objectiveMap.containsKey(objectiveName))
|
if (!objectiveMap.containsKey(objectiveName))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (objective.getObjectiveName().equals(objective)) {
|
if (objective.getObjectiveName().equals(objectiveName)) {
|
||||||
objective = null;
|
objective = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -116,7 +116,7 @@ public class Scoreboard {
|
||||||
|
|
||||||
for (String string : fakeMap.keySet()) {
|
for (String string : fakeMap.keySet()) {
|
||||||
Score score = fakeMap.get(string);
|
Score score = fakeMap.get(string);
|
||||||
ScoreInfo scoreInfo = new ScoreInfo(score.getScoreboardId(), objective.getObjectiveName(), score.getScore(), score.getFakeId());
|
ScoreInfo scoreInfo = new ScoreInfo(score.getScoreboardId(), objective.getObjectiveName(), score.getScore(), score.getFakePlayer());
|
||||||
|
|
||||||
SetScorePacket setScorePacket = new SetScorePacket();
|
SetScorePacket setScorePacket = new SetScorePacket();
|
||||||
setScorePacket.setAction(score.getAction());
|
setScorePacket.setAction(score.getAction());
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue