Skip to content

Commit

Permalink
Origins: Backport fix for #332 and #345.
Browse files Browse the repository at this point in the history
  • Loading branch information
MerchantPug committed Mar 13, 2024
1 parent d46544e commit b7fa78a
Showing 1 changed file with 17 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import io.github.apace100.calio.Calio;
import io.github.apace100.origins.Origins;
import io.github.apace100.origins.component.OriginComponent;
import io.github.apace100.origins.component.PlayerOriginComponent;
Expand Down Expand Up @@ -59,18 +58,24 @@ public OriginContainer(Player player) {

@Override
public void setOrigin(@NotNull OriginLayer layer, @NotNull Origin origin) {
setOriginInternal(layer, origin, true);
}

public void setOriginInternal(@NotNull OriginLayer layer, @NotNull Origin origin, boolean handlePowers) {
Origin previous = this.layers.put(layer, origin);
if (!Objects.equals(origin, previous)) {
IPowerContainer.get(this.player).ifPresent(container -> {
this.grantPowers(container, origin);
if (previous != null)
container.removeAllPowersFromSource(OriginsAPI.getPowerSource(previous));
if (this.hasAllOrigins())
this.hadAllOrigins.set(true);
});
if (!Objects.equals(origin, previous) || !handlePowers) {
if (handlePowers) {
IPowerContainer.get(this.player).ifPresent(container -> {
this.grantPowers(container, origin);
if (previous != null)
container.removeAllPowersFromSource(OriginsAPI.getPowerSource(previous));
if (this.hasAllOrigins())
this.hadAllOrigins.set(true);
if (this.player instanceof ServerPlayer sp)
ChoseOriginCriterion.INSTANCE.trigger(sp, origin);
});
}
this.synchronize();
if (this.player instanceof ServerPlayer sp)
ChoseOriginCriterion.INSTANCE.trigger(sp, origin);
}
}

Expand Down Expand Up @@ -296,7 +301,7 @@ public void deserializeNBT(Tag nbt) {
IPowerContainer.get(this.player).ifPresent(container -> container.removeAllPowersFromSource(OriginsAPI.getPowerSource(origin1)));
continue;
}
this.setOrigin(layer, origin1);
this.setOriginInternal(layer, origin1, false);
}
this.hadAllOrigins.set(tag.getBoolean("HadAllOrigins"));
}
Expand Down

0 comments on commit b7fa78a

Please sign in to comment.