Search in sources :

Example 1 with ScoreObjective

use of net.minecraft.scoreboard.ScoreObjective in project SpongeCommon by SpongePowered.

the class MixinScoreboardLogic method scoreboard$removeObjective.

@SuppressWarnings({ "rawtypes" })
public void scoreboard$removeObjective(Objective objective) {
    ScoreObjective scoreObjective = ((SpongeObjective) objective).getObjectiveFor(this);
    this.scoreObjectives.remove(scoreObjective.getName());
    for (int i = 0; i < 19; ++i) {
        if (this.getObjectiveInDisplaySlot(i) == scoreObjective) {
            this.setObjectiveInDisplaySlot(i, null);
        }
    }
    this.sendToPlayers(new SPacketScoreboardObjective(scoreObjective, SpongeScoreboardConstants.OBJECTIVE_PACKET_REMOVE));
    List list = this.scoreObjectiveCriterias.get(scoreObjective.getCriteria());
    if (list != null) {
        list.remove(scoreObjective);
    }
    for (Map<ScoreObjective, net.minecraft.scoreboard.Score> scoreMap : this.entitiesScoreObjectives.values()) {
        Score score = scoreMap.remove(scoreObjective);
        if (score != null) {
            ((IMixinScore) score).getSpongeScore().removeScoreFor(scoreObjective);
        }
    }
    // We deliberately don't call func_96533_c, because there's no need
    this.markSaveDataDirty();
    ((SpongeObjective) objective).removeObjectiveFor(this);
}
Also used : IMixinScore(org.spongepowered.common.interfaces.IMixinScore) Score(net.minecraft.scoreboard.Score) SpongeScore(org.spongepowered.common.scoreboard.SpongeScore) ScoreObjective(net.minecraft.scoreboard.ScoreObjective) IMixinScoreObjective(org.spongepowered.common.interfaces.IMixinScoreObjective) SPacketScoreboardObjective(net.minecraft.network.play.server.SPacketScoreboardObjective) SpongeObjective(org.spongepowered.common.scoreboard.SpongeObjective) ArrayList(java.util.ArrayList) List(java.util.List)

Example 2 with ScoreObjective

use of net.minecraft.scoreboard.ScoreObjective in project SpongeCommon by SpongePowered.

the class MixinScoreboardLogic method scoreboard$addObjective.

@SuppressWarnings({ "RedundantCast" })
public void scoreboard$addObjective(Objective objective) {
    if (this.scoreObjectives.containsKey(objective.getName())) {
        throw new IllegalArgumentException("An objective with the name \'" + objective.getName() + "\' already exists!");
    }
    ScoreObjective scoreObjective = ((SpongeObjective) objective).getObjectiveFor(this);
    List<ScoreObjective> objectives = this.scoreObjectiveCriterias.get(objective.getCriterion());
    if (objectives == null) {
        objectives = new ArrayList<>();
        this.scoreObjectiveCriterias.put((IScoreCriteria) objective.getCriterion(), objectives);
    }
    objectives.add(scoreObjective);
    this.scoreObjectives.put(objective.getName(), scoreObjective);
    this.onScoreObjectiveAdded(scoreObjective);
    ((SpongeObjective) objective).updateScores(this);
}
Also used : ScoreObjective(net.minecraft.scoreboard.ScoreObjective) IMixinScoreObjective(org.spongepowered.common.interfaces.IMixinScoreObjective) SpongeObjective(org.spongepowered.common.scoreboard.SpongeObjective)

Example 3 with ScoreObjective

use of net.minecraft.scoreboard.ScoreObjective in project SpongeCommon by SpongePowered.

the class MixinScoreboardLogic method scoreboard$removeScores.

public void scoreboard$removeScores(Text name) {
    for (ScoreObjective objective : this.scoreObjectives.values()) {
        SpongeObjective spongeObjective = ((IMixinScoreObjective) objective).getSpongeObjective();
        spongeObjective.getScore(name).ifPresent(spongeObjective::removeScore);
    }
}
Also used : ScoreObjective(net.minecraft.scoreboard.ScoreObjective) IMixinScoreObjective(org.spongepowered.common.interfaces.IMixinScoreObjective) IMixinScoreObjective(org.spongepowered.common.interfaces.IMixinScoreObjective) SpongeObjective(org.spongepowered.common.scoreboard.SpongeObjective)

Example 4 with ScoreObjective

use of net.minecraft.scoreboard.ScoreObjective in project SpongeCommon by SpongePowered.

the class MixinScoreboardLogic method removeObjectiveFromEntity.

@Override
public void removeObjectiveFromEntity(String name, ScoreObjective objective) {
    if (objective != null) {
        SpongeObjective spongeObjective = ((IMixinScoreObjective) objective).getSpongeObjective();
        Optional<org.spongepowered.api.scoreboard.Score> score = spongeObjective.getScore(SpongeTexts.fromLegacy(name));
        if (score.isPresent()) {
            spongeObjective.removeScore(score.get());
        } else {
            SpongeImpl.getLogger().warn("Objective " + objective + " did have have the score " + name);
        }
    } else {
        Text textName = SpongeTexts.fromLegacy(name);
        for (ScoreObjective scoreObjective : this.scoreObjectives.values()) {
            ((IMixinScoreObjective) scoreObjective).getSpongeObjective().removeScore(textName);
        }
    }
}
Also used : IMixinScore(org.spongepowered.common.interfaces.IMixinScore) Score(net.minecraft.scoreboard.Score) SpongeScore(org.spongepowered.common.scoreboard.SpongeScore) ScoreObjective(net.minecraft.scoreboard.ScoreObjective) IMixinScoreObjective(org.spongepowered.common.interfaces.IMixinScoreObjective) IMixinScoreObjective(org.spongepowered.common.interfaces.IMixinScoreObjective) SpongeObjective(org.spongepowered.common.scoreboard.SpongeObjective) Text(org.spongepowered.api.text.Text)

Example 5 with ScoreObjective

use of net.minecraft.scoreboard.ScoreObjective in project SpongeCommon by SpongePowered.

the class SpongeObjective method getObjectiveFor.

public ScoreObjective getObjectiveFor(net.minecraft.scoreboard.Scoreboard scoreboard) {
    if (this.objectives.containsKey(scoreboard)) {
        return this.objectives.get(scoreboard);
    }
    ScoreObjective objective = new ScoreObjective(scoreboard, this.name, (IScoreCriteria) this.criterion);
    // We deliberately set the fields here instead of using the methods.
    // Since a new objective is being created here, we want to avoid
    // sending packets until everything is in the proper state.
    objective.displayName = SpongeTexts.toLegacy(this.displayName);
    objective.renderType = (IScoreCriteria.EnumRenderType) (Object) this.displayMode;
    ((IMixinScoreObjective) objective).setSpongeObjective(this);
    this.objectives.put(scoreboard, objective);
    return objective;
}
Also used : ScoreObjective(net.minecraft.scoreboard.ScoreObjective) IMixinScoreObjective(org.spongepowered.common.interfaces.IMixinScoreObjective) IMixinScoreObjective(org.spongepowered.common.interfaces.IMixinScoreObjective) IScoreCriteria(net.minecraft.scoreboard.IScoreCriteria)

Aggregations

ScoreObjective (net.minecraft.scoreboard.ScoreObjective)17 IMixinScoreObjective (org.spongepowered.common.interfaces.IMixinScoreObjective)10 Score (net.minecraft.scoreboard.Score)5 SpongeObjective (org.spongepowered.common.scoreboard.SpongeObjective)4 Scoreboard (net.minecraft.scoreboard.Scoreboard)3 ArrayList (java.util.ArrayList)2 EntityLivingBase (net.minecraft.entity.EntityLivingBase)2 IScoreCriteria (net.minecraft.scoreboard.IScoreCriteria)2 ScorePlayerTeam (net.minecraft.scoreboard.ScorePlayerTeam)2 Score (org.spongepowered.api.scoreboard.Score)2 IMixinScore (org.spongepowered.common.interfaces.IMixinScore)2 SpongeScore (org.spongepowered.common.scoreboard.SpongeScore)2 List (java.util.List)1 ScaledResolution (net.minecraft.client.gui.ScaledResolution)1 NetHandlerPlayClient (net.minecraft.client.network.NetHandlerPlayClient)1 EntityList (net.minecraft.entity.EntityList)1 EntityPlayer (net.minecraft.entity.player.EntityPlayer)1 EntityPlayerMP (net.minecraft.entity.player.EntityPlayerMP)1 SPacketCombatEvent (net.minecraft.network.play.server.SPacketCombatEvent)1 SPacketScoreboardObjective (net.minecraft.network.play.server.SPacketScoreboardObjective)1