Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[1.16.5] Cancel Portal Sounds


Recommended Posts

Hi all,

 

I have a custom dimension which is accessed through a custom block. I am using

server_player.changeDimension(server_world, shifterIn);

To change the player dimension when shift-right clicking the block. 

 

I have my own custom Portal Sounds for entry and exit, but the original Nether Portal sounds are playing over the top. Without resorting to using

PlaySoundEvent event

And cancelling all Portal Sounds, which I don't want to do, how could I stop the original sound from being played?

 

PlaySoundEvent has a BlockPos, but when playing the Portal Sound, it is always (0, 0, 0), so I cannot differentiate between BlockPos.

 

I have looked into ServerPlayerEntity and found this:

this.connection.sendPacket(new SPlaySoundEventPacket(1032, BlockPos.ZERO, 0, false));

 

I have also tried replicating the code contained within

public Entity changeDimension(ServerWorld server, net.minecraftforge.common.util.ITeleporter teleporter) { }

 

But it fails everytime.

 

Any help is appreciated!

Link to post
Share on other sites
4 minutes ago, diesieben07 said:

You could probably check the current dimension when the sound is played and replace it that way.

How would I go about doing that? I cant get an Entity from the SoundEvent, and I'm not entirely sure how to replace / sounds. I can only get the ISound, SoundCategory and the X,Y,Z of the sound Event.

Link to post
Share on other sites
9 minutes ago, diesieben07 said:

PlaySoundEvent is a client side event, so you can just check Minecraft#world.

Okay thanks. That only solves half of the issue however, as:

Going from Overworld / Nether / End -> Custom Dimension now cancels correctly.

 

But going from Custom Dimension -> Overworld / Nether / End still plays the sound.

Link to post
Share on other sites

Not sure if there is a good way to do that. You could use WorldEvent.Unload to detect the old dimension unloading on the client and then remember that fact in a static field. However it's not fool proof.

Link to post
Share on other sites
2 minutes ago, diesieben07 said:

Not sure if there is a good way to do that. You could use WorldEvent.Unload to detect the old dimension unloading on the client and then remember that fact in a static field. However it's not fool proof.

Yeah that is what I was afraid of. I may just have to accept using the nether portal sound for now. I don't think your solution would work on servers with many people, and I cant think of any way to do it personally. Ill have to leave the sound playing one way.

Many thanks for your help!

Link to post
Share on other sites
Just now, Zeher_Monkey said:

I don't think your solution would work on servers with many people

The sound is only played to the player using the portal and the detection/replacement would be purely client-side. I don't think there can be any issues with multiplayer.

The only time this would be an issue is if some other mod plays the 1032 level event as well, in which case you might inadvertently replace it with yours if you don't handle the "just came from my dimension" flag correctly.

Link to post
Share on other sites
1 minute ago, diesieben07 said:

The sound is only played to the player using the portal and the detection/replacement would be purely client-side. I don't think there can be any issues with multiplayer.

The only time this would be an issue is if some other mod plays the 1032 level event as well, in which case you might inadvertently replace it with yours if you don't handle the "just came from my dimension" flag correctly.

Okay. That seems reasonable.

 

I have thought of an idea, which is to store a Previous Dimension [ResourceLocation] tag into the Players Persisted Data, and change that using PlayerEvent.PlayerChangedDimensionEvent. I can then use this to check when sound events are playing. I'm storing these tags under my MOD_ID so that no other mod can get confused.

Link to post
Share on other sites
3 minutes ago, Zeher_Monkey said:

I have thought of an idea, which is to store a Previous Dimension [ResourceLocation] tag into the Players Persisted Data, and change that using PlayerEvent.PlayerChangedDimensionEvent. I can then use this to check when sound events are playing. I'm storing these tags under my MOD_ID so that no other mod can get confused.

That will not work for multiple reasons:

  • PlayerChangedDimensionEvent fires after the sound has been played.
  • PlayerChangedDimensionEvent is a server side event, but the sound is played client side (as a result of a packet).
  • The persisted data is not synced to the client by default.
Link to post
Share on other sites
2 minutes ago, diesieben07 said:

That will not work for multiple reasons:

  • PlayerChangedDimensionEvent fires after the sound has been played.
  • PlayerChangedDimensionEvent is a server side event, but the sound is played client side (as a result of a packet).
  • The persisted data is not synced to the client by default.

Okay, that idea is scrapped then. I will have to accept that the standard sound will play when going from Custom -> Vanilla world. Which to be honest is not that bad, I'm not too happy with the Exit sound anyway. Maybe I could ask the Forge devs to see if they can work their magic and allow for custom sounds to be played via theS

SPlaySoundEffectPacket(SoundEvent event, SoundCategory category, double x, double y, double x, float volume, float pitch)

Instead of hard-coding the sound.

Maybe that's a longshot but who knows.

Link to post
Share on other sites
1 minute ago, diesieben07 said:

It would be pretty trivial to add a new method to ITeleporter to allow overriding of the sound.

If I remember I'll make a pull request this evening.

That would be amazing!

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • protected static final DimensionType NETHER_TYPE = new DimensionType(OptionalLong.of(18000L), false, true, true, false, 8.0D, false, true, false, true, false, 128, FuzzedBiomeMagnifier.INSTANCE, BlockTags.INFINIBURN_NETHER.getName(), THE_NETHER_ID, 0.1F); I found that 8.0D its what i need but i dosent know now to change this or override nether_type.
    • Please post your server log, it should give a clue what's going on.
    • It looks like you may be trying to reply to someone's support post, you instead you created a new one.
    • compactstorage-1.16.5-5.1b17.jarcarryon-1.16.5-1.15.5.15.jarAdHooks-1.16.4-6.1.5.0-build.0124.jarXaerosWorldMap_1.14.1_Forge_1.16.5.jarXaeros_Minimap_21.10.0.3_Forge_1.16.5.jartrashcans-1.0.10-mc1.16.5.jarSuperTools-1.2_1.16.5.jarSpartanShields-1.16.5-2.1.2.jarrandomite-1.16.4-1.0.1.jaroverloadedarmorbar-5.1.0.jaroresplusmod_1.16.5,0.1.0.jarturtle_armor-1.3.4.jartoyguns-0.1-1.16.4.jartoughnessbar-6.1.jartorchmaster-2.3.7.jarToast-Control-1.16.4-4.3.1.jartitanium-1.16.5-3.2.8.4-10.jarthermal_expansion-1.16.4-1.2.0.jartheoneprobe-1.16-3.1.4.jarthedragonlib-1.16.3-1.1.0.jarswingthroughgrass-1.16.4-1.5.3.jarsuper+armor-5.0.4(EN).jarStorageDrawers-1.16.3-8.2.2.jarsteveGolemMod_1.3.0.jarSteelArmory.jarSoulBound-1.1.3-1.16.5.jarSimplyBetter.jarSimple guns reworked 1.16.5 v1.4.jarsilent-lib-1.16.3-4.9.6.jarRunelic-1.16.5-7.0.1.jarrftoolsbase-1.16-2.0.10.jarReAuth-1.16-Forge-3.9.3.jarrandompatches-2.4.4-forge.jarprecious_armor-1.16.5.jarPlacebo-1.16.4-4.5.0.jarPatchouli-1.16.4-51.jaroverloadedarmorbar-5.1.0.jarOreExcavation-1.8.157.jarOp Armor Plus 1.16.5 0.6.jarobserverlib-1.16.5-1.5.3.jarobfuscate-0.6.2-1.16.3.jarnetheritehorsearmor-1.7.jarNeat 1.7-27.jarNaturesCompass-1.16.5-1.9.0.jarMouseTweaks-2.14-mc1.16.2.jarMorpheus-1.16.5-4.2.70.jarMoreOresArmorsAndTools 1.2.5.jarMoreArmor-1-4-0.jarMekanismTools-1.16.5-10.0.21.448.jarMekanismGenerators-1.16.5-10.0.21.448.jarmcjtylib-1.16-5.0.19.jarMantle-1.16.5-1.6.103.jarMachineBoy's ArmorTool v1.2b1.jarJustEnoughResources-1.16.5-0.12.1.121.jarJEITweaker-1.16.5-1.0.1.28.jarjei-1.16.5-7.7.0.106.jarJ0T0S0 Weapons 1.0.0.jarironchest-1.16.4-11.2.10.jarillagersweararmor-1.0.4.jariChunUtil-1.16.5-10.4.1.jarhitscan-1.0.1.jarHandyGuns2.0.jargunswithoutroses-1.16.5-1.0.9.jarGuns'N'Glory-2.0.jarGuns and Rifes.jarftb-backups-2.1.1.6.jarForgeEndertech-1.16.4-7.1.0.0-build.0075.jarFluxNetworks-1.16.5-6.1.7.12.jarFastWorkbench-1.16.4-4.5.1.jarFastLeafDecay-v25.jarFastFurnace-1.16.4-4.4.0.jarfabric-api-0.35.0+1.16.jarExtraArmor-1.12.1-1.16.5.jarEnderStorage-1.16.4-2.7.1.166-universal.jarEnchantmentDescriptions-1.16.5-7.0.8.jarEnameledArmor-1.16.2-1.0.0.8.jaremeraldtoolsandarmor1.16.x.jarEmeraldArmorAndTools.jarelevatorid-1.16.5-1.7.13.jarDiceMC-TieredArmor-1.16.5-1.1a.jarDefaultOptions_1.16.5-12.2.1.jarDecraftHorseArmor-1.16.5-r1.jarDarkUtilities-1.16.5-8.0.10.jarCyclopsCore-1.16.5-1.11.7.jarCurious Armor Stands-1.16.5-2.1.1.jarcurios-forge-1.16.5-4.0.5.2.jarCucumber-1.16.4-4.1.10.jarCTM-MC1.16.1-1.1.2.6.jarCraftingTweaks_1.16.5-12.2.1.jarCraftableChainmail-1.16.5-1.1.0.jarcraftable_chainmail_1.16.5.jarOresAboveDiamonds-1.16.4-v6.3.3.jarCraftable Saddle and Horse Armors.jarCosmeticArmorReworked-1.16.5-v3a.jarCookingForBlockheads_1.16.5-9.3.2.jarControlling-7.0.0.23.jarcomforts-forge-1.16.5-4.0.0.4.jarColtCosmeticArmorMod-1.2.5.jarCodeChickenLib-1.16.4-3.5.1.408-universal.jarClumps-6.0.0.25.jarcitadel-1.7.1-1.16.5.jarchiselsandbits-0.3.4-RELEASE.jarcarryon-1.16.5-1.15.5.15.jarbuildinggadgets-1.16.5-3.8.0.jarBookshelf-1.16.5-10.1.11.jarBomb and guns.jarBlockArmor-1.16.5-2.6.2.jarBetterMineshafts-Forge-1.16.4-2.0.4.jarBetterHorseArmor-1.16.3-1.0.1.1.jarBetterAdvancements-1.16.5-0.1.0.108.jarBedrock Armor 1.16.5-1.0.2.jarAutoRegLib-1.6-49.jararmor-visibility-2.0.1-forge.jarArmorUp-1.0.5-BETA.jarArmorUnlocked-1.16.3-1.0.1.jararmorunder-mc1.16.5-2.0b11.jararmor-stand-editor-1.1.0.jarArmorPoser-1.16.5-1.0.1.jararmorpointspp-1.16.5-2.0.0.jararmorhotswap-1.16-1.8.jarArmoredElytra-1.0.8.jararmorcurve-2.3.jarAquaculture-1.16.5-2.1.19.jarAppleSkin-mc1.16.2-forge-1.0.14.jarApotheosis-1.16.4-4.6.1.jarAncientGuns_3.2_1.16.4.jarAkashicTome-1.4-16.jar1.7.4.1-1.16.5ATOp.jar[1.16.5] BobLib-0.2.0.jar[1.16.5] Armor Status HUD-1.4.0.jarEmerald armor and tools 1.15.16 v3.jarYungsApi-1.16.4-Forge-6.jaryeni modum.jarxnet-1.16-3.0.13.jarwolveswitharmor-1.1.0-1.16.2.jarWaystones_1.16.5-7.6.2.jarvisiblearmorslots-2.0-1.16.5.jarNeat 1.7-27.jarNaturesCompass-1.16.5-1.9.0.jarMoreOresInONE-1.2_1.16.5.jarmcw-windows-1.0.3-mc1.16.5.jarmcw-bridges-1.0.5-mc1.16.5-4.jarlongfallboots-1.6.0a.jarJustEnoughResources-1.16.5-0.12.1.121.jarjei-1.16.5-7.7.0.106.jarForgeEndertech-1.16.4-7.1.0.0-build.0075.jarextcaves-2.4.jarcurios-forge-1.16.5-4.0.5.2.jarcorpse-1.16.5-1.0.5.jarAdHooks-1.16.4-6.1.5.0-build.0124.jar
    • Dude, then try to click the down arrow near "Open" then select   Java(TM) Platform SE binary then it should work or if it doesn't work then it means you don't have Java or you computer is broken.
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.