mirror of
https://github.com/GeyserMC/Geyser.git
synced 2024-08-14 23:57:35 +00:00
Scoreboard Partial Fix? + Additional Classes
This commit is contained in:
parent
e34e476056
commit
96854a41e9
4 changed files with 116 additions and 0 deletions
|
|
@ -0,0 +1,19 @@
|
||||||
|
package org.geysermc.connector.network.translators.java.scoreboard;
|
||||||
|
|
||||||
|
import com.github.steveice10.mc.protocol.packet.ingame.server.scoreboard.ServerDisplayScoreboardPacket;
|
||||||
|
import org.geysermc.connector.network.session.GeyserSession;
|
||||||
|
import org.geysermc.connector.network.session.cache.ScoreboardCache;
|
||||||
|
import org.geysermc.connector.network.translators.PacketTranslator;
|
||||||
|
import org.geysermc.connector.network.translators.scoreboard.Scoreboard;
|
||||||
|
|
||||||
|
public class JavaScoreboardDisplayTranslator extends PacketTranslator<ServerDisplayScoreboardPacket> {
|
||||||
|
@Override
|
||||||
|
public void translate(ServerDisplayScoreboardPacket packet, GeyserSession session) {
|
||||||
|
try {
|
||||||
|
ScoreboardCache cache = session.getScoreboardCache();
|
||||||
|
Scoreboard scoreboard = new Scoreboard(session);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
package org.geysermc.connector.network.translators.java.scoreboard;
|
||||||
|
|
||||||
|
import com.github.steveice10.mc.protocol.packet.ingame.server.scoreboard.ServerScoreboardObjectivePacket;
|
||||||
|
import org.geysermc.connector.network.session.GeyserSession;
|
||||||
|
import org.geysermc.connector.network.session.cache.ScoreboardCache;
|
||||||
|
import org.geysermc.connector.network.translators.PacketTranslator;
|
||||||
|
import org.geysermc.connector.network.translators.scoreboard.Scoreboard;
|
||||||
|
import org.geysermc.connector.network.translators.scoreboard.ScoreboardObjective;
|
||||||
|
import org.geysermc.connector.utils.MessageUtils;
|
||||||
|
|
||||||
|
public class JavaScoreboardObjectiveTranslator extends PacketTranslator<ServerScoreboardObjectivePacket> {
|
||||||
|
@Override
|
||||||
|
public void translate(ServerScoreboardObjectivePacket packet, GeyserSession session) {
|
||||||
|
try {
|
||||||
|
ScoreboardCache cache = session.getScoreboardCache();
|
||||||
|
Scoreboard scoreboard = new Scoreboard(session);
|
||||||
|
if (cache.getScoreboard() != null)
|
||||||
|
scoreboard = cache.getScoreboard();
|
||||||
|
|
||||||
|
switch (packet.getAction()) {
|
||||||
|
case ADD:
|
||||||
|
ScoreboardObjective objective = scoreboard.registerNewObjective(packet.getName());
|
||||||
|
objective.setDisplaySlot(ScoreboardObjective.DisplaySlot.SIDEBAR);
|
||||||
|
objective.setDisplayName(MessageUtils.getBedrockMessage(packet.getDisplayName()));
|
||||||
|
break;
|
||||||
|
case UPDATE:
|
||||||
|
ScoreboardObjective updateObj = scoreboard.getObjective(packet.getName());
|
||||||
|
updateObj.setDisplayName(MessageUtils.getBedrockMessage(packet.getDisplayName()));
|
||||||
|
break;
|
||||||
|
case REMOVE:
|
||||||
|
scoreboard.unregisterObjective(packet.getName());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
scoreboard.onUpdate();
|
||||||
|
cache.setScoreboard(scoreboard);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
package org.geysermc.connector.network.translators.java.scoreboard;
|
||||||
|
|
||||||
|
import com.github.steveice10.mc.protocol.packet.ingame.server.scoreboard.ServerTeamPacket;
|
||||||
|
import com.nukkitx.protocol.bedrock.packet.SetScorePacket;
|
||||||
|
import org.geysermc.connector.network.session.GeyserSession;
|
||||||
|
import org.geysermc.connector.network.session.cache.ScoreboardCache;
|
||||||
|
import org.geysermc.connector.network.translators.PacketTranslator;
|
||||||
|
import org.geysermc.connector.network.translators.scoreboard.Scoreboard;
|
||||||
|
import org.geysermc.connector.network.translators.scoreboard.ScoreboardObjective;
|
||||||
|
import org.geysermc.connector.utils.MessageUtils;
|
||||||
|
|
||||||
|
public class JavaScoreboardTeamTranslator extends PacketTranslator<ServerTeamPacket> {
|
||||||
|
@Override
|
||||||
|
public void translate(ServerTeamPacket packet, GeyserSession session) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
package org.geysermc.connector.network.translators.java.scoreboard;
|
||||||
|
|
||||||
|
import com.github.steveice10.mc.protocol.packet.ingame.server.scoreboard.ServerUpdateScorePacket;
|
||||||
|
import com.nukkitx.protocol.bedrock.packet.SetScorePacket;
|
||||||
|
import org.geysermc.connector.network.session.GeyserSession;
|
||||||
|
import org.geysermc.connector.network.session.cache.ScoreboardCache;
|
||||||
|
import org.geysermc.connector.network.translators.PacketTranslator;
|
||||||
|
import org.geysermc.connector.network.translators.scoreboard.Scoreboard;
|
||||||
|
import org.geysermc.connector.network.translators.scoreboard.ScoreboardObjective;
|
||||||
|
|
||||||
|
public class JavaUpdateScoreTranslator extends PacketTranslator<ServerUpdateScorePacket> {
|
||||||
|
@Override
|
||||||
|
public void translate(ServerUpdateScorePacket packet, GeyserSession session) {
|
||||||
|
try {
|
||||||
|
ScoreboardCache cache = session.getScoreboardCache();
|
||||||
|
Scoreboard scoreboard = new Scoreboard(session);
|
||||||
|
if (cache.getScoreboard() != null)
|
||||||
|
scoreboard = cache.getScoreboard();
|
||||||
|
|
||||||
|
ScoreboardObjective objective = scoreboard.getObjective(packet.getObjective());
|
||||||
|
if (objective == null) {
|
||||||
|
objective = scoreboard.registerNewObjective(packet.getObjective());
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (packet.getAction()) {
|
||||||
|
case REMOVE:
|
||||||
|
objective.registerScore(packet.getEntry(), packet.getEntry(), packet.getValue(), SetScorePacket.Action.REMOVE);
|
||||||
|
break;
|
||||||
|
case ADD_OR_UPDATE:
|
||||||
|
objective.registerScore(packet.getEntry(), packet.getEntry(), packet.getValue(), SetScorePacket.Action.SET);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
cache.setScoreboard(scoreboard);
|
||||||
|
scoreboard.onUpdate();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue