Cracker's Wither Storm Mod

Cracker's Wither Storm Mod

5M Downloads

[Configurable chunk loading radius] Looking to Create a Unique Boss Fight But Have Chunk Loading Trouble

Darkosto opened this issue · 11 comments

commented

Hello!

I've been having a lot of fun with the mod so far and would like to incorporate it into my current modpack with a bit of a twist.

I want to have the Wither Storm appear as the final boss in the modpack but in the End dimension rather than the Overworld. I was hoping to spawn the Wither Storm at 0,0 in the End and give it coordinates to the last know player location at X: 10,000 Y: 150 Z: 0 so once it hits Phase 4, it begins to swiftly move to that location. The idea is to create a path of destruction from 0,0 visible to the player and on entrance to the dimension, the Wither Storm updates its target location and begins moving towards the player to initiate the fight.

I've tested this out a few times and everything has run pretty smoothly but there is one small issue. Every chunk the Wither Storm has moved through is kept loaded and never unloaded. Is there a method you could advise to use that would allow the chunks to unload after they are needed or potentially another way to keep the server performance running as well as possible?

Thanks for your time and take care!
Darkosto

MC: 1.18.2
Forge: 40.2.0
WitherStorm: 2.1.1

commented

You could summon it with a phase and a ultimate target position, using a datapack you can constantly control it.
If you are confused on how to, just change the NBT data, by using "data modify".
I used this to force load phase 7 once, so it can be useful.
I also saw the ultimate target position information in there, so you can just force it to be something else instead.
Hope this was helpful!

commented

The chunks aren’t unloading? They should. Check /witherstormmod chunks get and see how many are loaded

commented

Hey @Gulle-Stav yep! I'm already controlling it via a datapack and have the WitherStorm pathing and actions setup. Thank you for the tips!

@nonamecrackers2 Tested it out just now, Wither Storm is summoned to the end via this function:

execute in minecraft:the_end run forceload add 0 0
execute in minecraft:the_end run summon witherstormmod:wither_storm 0 260 0 {UUID:[I;2083982370,-1409201591,-1670005107,-392374202], UltimateTargetChunkPos: {x: 625, z: 0},AlternativeUltimateTarget: {X: 10000.0d, Y: 175.0d, Z: 0d}}

The Wither Storm then spawns in the end. I forceload the 0,0 chunk due to the Wither Storm not working when I don't first load the chunk I spawn it in. It will then load a large number of chunks around it which can be seen using the command: /execute in minecraft:the_end run forceload query

For a comparison, I loaded a new save file and ran the command to forceload chunk 0,0 in the End dimension but not the Wither Storm. Only chunk 0,0 is shown loaded and no others load up. I then summoned the Wither Storm and immediately a large number of chunks load up but the Wither Storm shows 0 chunks loaded:

image

To confirm the Wither Storm is active I ran the command: /data get entity 7c370c22-ac01-4a49-9c75-be8de89cd846 and the log shows:

[10:40:20] [Render thread/INFO] [minecraft/ChatComponent]: [CHAT] Wither Storm has the following entity data: {Brain: {memories: {}}, HurtByTimestamp: 0, OtherHeadsDisabled: 0b, UltimateTargetChunkPos: {x: 625, z: 0}, Attributes: [{Base: 0.02d, Modifiers: [{Amount: 0.0d, Operation: 0, UUID: [I; 227866824, 895239387, -1218799581, -447648539], Name: "Config defined slow flight speed modifier"}], Name: "witherstormmod:slow_flying_speed"}, {Base: 0.08d, Name: "forge:entity_gravity"}, {Base: 3.5d, Name: "minecraft:generic.attack_damage"}, {Base: 120.0d, Name: "minecraft:generic.follow_range"}, {Base: 400.0d, Name: "minecraft:generic.max_health"}, {Base: 0.4d, Modifiers: [{Amount: 0.0d, Operation: 0, UUID: [I; -74484326, 1881491076, -1351922841, -1478409686], Name: "Config defined stationary flight speed modifier"}], Name: "witherstormmod:target_stationary_flying_speed"}, {Base: 1.0d, Modifiers: [{Amount: 0.0d, Operation: 0, UUID: [I; -1453449286, 1036075184, -1461517880, 458490948], Name: "Config defined evolution modifier"}], Name: "witherstormmod:evolution_speed"}, {Base: 0.6d, Name: "minecraft:generic.movement_speed"}, {Base: 0.0d, Name: "forge:step_height_addition"}, {Base: 8.0d, Name: "minecraft:generic.armor"}], Invulnerable: 0b, AbsorptionAmount: 0.0f, Invul: 0, FallDistance: 66.67002f, Distractions: [{DistractionTime: 0}, {DistractionTime: 0}, {DistractionTime: 0}], CanUpdate: 1b, Mirrored: 0b, TargetStationaryTicks: 1216, ForgeCaps: {"mowziesmobs:living_cap": {}, "mowziesmobs:frozen_cap": {frozenYaw: 0.0f, freezeProgress: 0.0f, frozenPitch: 0.0f, freezeDecayDelay: 0, prevHasAI: 1b, frozenYawHead: 0.0f, frozen: 0b, frozenLimbSwingAmount: 0.0f, prevFrozen: 0b, frozenRenderYawOffset: 0.0f, frozenSwingProgress: 0.0f}, "epicsiegemod:modified_handler": {data: {"epicsiegemod:general_spawn": {hasModifiers: 1b, checkMobBomb: 1b}}, modified: 0b}, "enchantwithmob:mob_enchant": {StoredMobEnchants: [], FromOwner: 0b}, "mowziesmobs:ability": {}, "mowziesmobs:frozen": {frozenYaw: 0.0f, freezeProgress: 0.0f, frozenPitch: 0.0f, freezeDecayDelay: 0, prevHasAI: 1b, frozenYawHead: 0.0f, frozen: 0b, frozenLimbSwingAmount: 0.0f, prevFrozen: 0b, frozenRenderYawOffset: 0.0f, frozenSwingProgress: 0.0f}, "mowziesmobs:last_damage": {}, "witherstormmod:wither_sickness_tracker": {IsInfected: 0b, MultiplierDecreaseTicks: 0, ProximityTicks: 0, IsBeingCured: 0b, ContactsDecreaseTicks: 0, Contacts: 0, CureDelayTicks: 0, ApplicationDelayModifier: -1922, TotalCures: 0, Multiplier: 0, TotalInfections: 0, DelayTicks: 0, ProximityTicksModifier: -3086, CureDelayModifier: -2109}}, HandDropChances: [0.085f, 0.085f], PersistenceRequired: 0b, UUID: [I; 2083982370, -1409201591, -1670005107, -392374202], HeadsRoaring: [{0: 0b, Time: 0}, {1: 0b, Time: 0}, {2: 0b, Time: 0}], HeadInjuries: {Cooldowns: [{Cooldown: 0}, {Cooldown: 0}, {Cooldown: 0}], InjuryTimes: [{InjuryTime: 0}, {InjuryTime: 0}, {InjuryTime: 0}]}, ConsumedEntities: 53, Air: 300s, CitadelData: {}, HandItems: [{}, {}], ArmorDropChances: [0.085f, 0.085f, 0.085f, 0.085f], AlternativeUltimateTarget: {X: 10000.0d, Y: 175.0d, Z: 0.0d}, Pos: [-29.4677444162398d, 195.6966994971302d, -98.40954994358565d], UltimateTargetDistraction: {DistractionWait: 0, TicksSinceDistracted: 0, CanBeDistractedFor: 0, CanBeDistracted: 0b, IsDistracted: 0b}, CanPickUpLoot: 0b, XBodyRot: 0.0f, HurtTime: 0s, ForgeData: {InfernalMobsMod: "notInfernal"}, Phase: 0, HeadRots: [{yRot: -194.5245f, xRot: 75.15812f}, {yRot: 118.23231f, xRot: 73.26758f}], FallFlying: 0b, PortalCooldown: 0, TargetRunawayAttempts: 0, StartingInvul: 0, DeathTime: 0s, ShouldShowHole: 0b, Motion: [-0.12225258635476727d, -0.09233399173967675d, -0.18428380037804334d], Health: 400.0f, PlayDeadManager: {StateTicks: 1216, State: 0, CommandBlockMissingTicks: 0, RevivalTime: 1216, PodiumPlaced: 0b, RecentlyRevived: 0b}, LeftHanded: 0b, OnGround: 0b, Rotation: [-213.55977f, 40.0f], Fire: -1s, ArmorItems: [{}, {}, {}, {}], SymbiontSummoningCooldown: 0, YBodyRot: -213.55977f}

It seems like something might be up. I would expect the Wither Storm chunks command would show at least 1 chunk but it consistently will not. Any idea what might be happening?

Thanks!

commented

My mistake, I should have known to execute it into the end!

The output of that command is:
image

commented

Forgot to mention you’ll have to run `/execute in minecraft:end run witherstormmod chunks get‘ or else it’ll just query the dimension you’re currently in.

commented

Yeah no that was my bad lol.

Its normal that the Wither Storm loads a lot of chunks (max is 576) as it needs to simulate the area around it in order to properly consume blocks, eat mobs, etc. However, you’re saying they don’t get unloaded, and if so is the loaded chunk count climbing or staying at a constant 576-ish?

commented

Okay, just did a test run of the Wither Storm making its way from 0,150,0 to 10,000,150,0

Wither Storm loaded chunks match the forceload query amount, about 574 chunks. Looks like everything is working as intended on the mod's end.

I can do a /data merge entity and disable its AI until the player arrives in the end but is there a way I could also disable it's loaded chunks or reduce them until I reenable them via a command?

commented

There’s unfortunately no way to change the amount of chunks it can load, sorry. I’ll leave this open though and will try to get something implemented in the next update for you.

commented

Implemented in 2.2/3.2. You can use /witherstormmod config server set chunksToLoad <number> to modify it for your needs. Hope this helps!

commented

@nonamecrackers2 Thank you for all your hard work! ❤️

commented

Np!