Skip to content

Commit

Permalink
some adjustments
Browse files Browse the repository at this point in the history
  • Loading branch information
SiverDX committed Nov 23, 2024
1 parent d85f83b commit cbda685
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import net.minecraft.client.gui.screens.inventory.InventoryScreen;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.core.Holder;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.LivingEntity;
Expand Down Expand Up @@ -165,7 +166,8 @@ private void initializeHandler(final DragonStateHandler handler) {

handler.setHasFlight(true);
//noinspection DataFlowIssue -> registry is expected to be present
handler.setClientSize(CommonHooks.resolveLookup(DragonStage.REGISTRY).getOrThrow(DragonStages.adult));
Holder.Reference<DragonStage> dragonStage = CommonHooks.resolveLookup(DragonStage.REGISTRY).getOrThrow(DragonStages.adult);
handler.setClientSize(dragonStage, dragonStage.value().sizeRange().min());
handler.getSkinData().get(handler.getStage().getKey()).get().defaultSkin = true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ private static int runCommand(String type, @Nullable Holder<DragonBody> dragonBo

cap.setType(dragonType, player);
cap.setBody(dragonBody, player);
cap.setSize(player, dragonStage);
cap.setSize(player, dragonStage, dragonStage != null ? dragonStage.value().sizeRange().min() : DragonStateHandler.NO_SIZE);

cap.setHasFlight(flight);
cap.getMovementData().spinLearned = flight;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,10 +148,10 @@ public void setClientSize(@Nullable final Holder<DragonStage> dragonStage) {
}

public void setClientSize(@Nullable final Holder<DragonStage> dragonStage, double size) {
Holder<DragonStage> oldLevel = this.dragonStage;
Holder<DragonStage> oldStage = this.dragonStage;
updateSizeAndStage(null, dragonStage, size);

if (oldLevel == null || this.dragonStage != null && !this.dragonStage.is(oldLevel)) {
if (oldStage == null || this.dragonStage != null && !this.dragonStage.is(oldStage)) {
if (FMLEnvironment.dist.isClient()) { // When deserializing nbt there is no player context
// Only need to update when the level changes (for the skin)
ClientProxy.sendClientData();
Expand Down Expand Up @@ -549,7 +549,9 @@ public void deserializeNBT(HolderLookup.Provider provider, CompoundTag tag, bool
getMovementData().spinCooldown = tag.getInt("spinCooldown");
getMovementData().spinAttack = tag.getInt("spinAttack");

setClientSize(dragonStage, size);
// Make sure a stage is set if the player was deserialized as a dragon
// It could be missing here if the NBT is loaded from an old save
setClientSize(dragonStage != null ? dragonStage : DragonStage.get(provider, size), size);

setDestructionEnabled(tag.getBoolean("destructionEnabled"));
isGrowing = !tag.contains(IS_GROWING) || tag.getBoolean(IS_GROWING);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ public static void setToDragon(final GameTestHelper helper, final Player player,
data.setBody(body, player);
helper.assertTrue(DragonUtils.isBody(data, body), String.format("Dragon type was [%s] - expected [%s]", data.getBody(), dragonBody));

Holder<DragonStage> level = player.registryAccess().holderOrThrow(dragonStage);
data.setSize(player, level);
helper.assertTrue(data.getStage().is(level), String.format("Dragon level was [%s] - expected [%s]", data.getStage().getKey().location(), level.getKey().location()));
Holder<DragonStage> stage = player.registryAccess().holderOrThrow(dragonStage);
data.setSize(player, stage, stage.value().sizeRange().min());
helper.assertTrue(data.getStage().is(stage), String.format("Dragon stage was [%s] - expected [%s]", data.getStage().getKey().location(), stage.getKey().location()));

helper.assertTrue(data.isDragon(), "Player is not a dragon - expected player to be a dragon");
}
Expand Down

0 comments on commit cbda685

Please sign in to comment.