--- a/net/minecraft/client/world/ClientWorld.java
+++ b/net/minecraft/client/world/ClientWorld.java
@@ -103,6 +103,8 @@
       this.func_239136_a_(new BlockPos(8, 64, 8));
       this.func_72966_v();
       this.func_72947_a();
+      //this.gatherCapabilities(dimension.initCapabilities()); //TODO
+      net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.world.WorldEvent.Load(this));
    }
 
    public DimensionRenderInfo func_239132_a_() {
@@ -185,6 +187,7 @@
             this.func_217381_Z().func_194340_a(() -> {
                return Registry.field_212629_r.func_177774_c(p_217418_1_.func_200600_R()).toString();
             });
+            if (p_217418_1_.canUpdate())
             p_217418_1_.func_70071_h_();
             this.func_217381_Z().func_76319_b();
          }
@@ -284,9 +287,11 @@
    }
 
    private void func_217424_b(int p_217424_1_, Entity p_217424_2_) {
+      if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.EntityJoinWorldEvent(p_217424_2_, this))) return;
       this.func_217413_d(p_217424_1_);
       this.field_217429_b.put(p_217424_1_, p_217424_2_);
       this.func_72863_F().func_212849_a_(MathHelper.func_76128_c(p_217424_2_.func_226277_ct_() / 16.0D), MathHelper.func_76128_c(p_217424_2_.func_226281_cx_() / 16.0D), ChunkStatus.field_222617_m, true).func_76612_a(p_217424_2_);
+      p_217424_2_.onAddedToWorld();
    }
 
    public void func_217413_d(int p_217413_1_) {
@@ -305,6 +310,7 @@
       }
 
       this.field_217431_w.remove(p_217414_1_);
+      p_217414_1_.onRemovedFromWorld();
    }
 
    public void func_217417_b(Chunk p_217417_1_) {
@@ -447,6 +453,11 @@
    }
 
    public void func_184148_a(@Nullable PlayerEntity p_184148_1_, double p_184148_2_, double p_184148_4_, double p_184148_6_, SoundEvent p_184148_8_, SoundCategory p_184148_9_, float p_184148_10_, float p_184148_11_) {
+      net.minecraftforge.event.entity.PlaySoundAtEntityEvent event = net.minecraftforge.event.ForgeEventFactory.onPlaySoundAtEntity(p_184148_1_, p_184148_8_, p_184148_9_, p_184148_10_, p_184148_11_);
+      if (event.isCanceled() || event.getSound() == null) return;
+      p_184148_8_ = event.getSound();
+      p_184148_9_ = event.getCategory();
+      p_184148_10_ = event.getVolume();
       if (p_184148_1_ == this.field_73037_M.field_71439_g) {
          this.func_184134_a(p_184148_2_, p_184148_4_, p_184148_6_, p_184148_8_, p_184148_9_, p_184148_10_, p_184148_11_, false);
       }
@@ -454,6 +465,11 @@
    }
 
    public void func_217384_a(@Nullable PlayerEntity p_217384_1_, Entity p_217384_2_, SoundEvent p_217384_3_, SoundCategory p_217384_4_, float p_217384_5_, float p_217384_6_) {
+      net.minecraftforge.event.entity.PlaySoundAtEntityEvent event = net.minecraftforge.event.ForgeEventFactory.onPlaySoundAtEntity(p_217384_1_, p_217384_3_, p_217384_4_, p_217384_5_, p_217384_6_);
+      if (event.isCanceled() || event.getSound() == null) return;
+      p_217384_3_ = event.getSound();
+      p_217384_4_ = event.getCategory();
+      p_217384_5_ = event.getVolume();
       if (p_217384_1_ == this.field_73037_M.field_71439_g) {
          this.field_73037_M.func_147118_V().func_147682_a(new EntityTickableSound(p_217384_3_, p_217384_4_, p_217384_2_));
       }
