1
1
/*
2
- * Copyright (c) 2022 Team Galacticraft
2
+ * Copyright (c) 2023 Team Galacticraft
3
3
*
4
4
* Licensed under the MIT license.
5
5
* See LICENSE file in the project root for details.
6
6
*/
7
7
8
8
package micdoodle8 .mods .galacticraft .core .event ;
9
9
10
- import java .lang .reflect .Field ;
11
10
import java .util .ArrayList ;
12
11
import java .util .Collections ;
13
12
import java .util .HashMap ;
75
74
import net .minecraftforge .event .terraingen .PopulateChunkEvent ;
76
75
import net .minecraftforge .event .terraingen .TerrainGen ;
77
76
import net .minecraftforge .event .world .BlockEvent ;
77
+ import net .minecraftforge .event .world .ChunkDataEvent ;
78
+ import net .minecraftforge .event .world .ChunkEvent .Load ;
79
+ import net .minecraftforge .event .world .WorldEvent .Save ;
78
80
import net .minecraftforge .fml .client .FMLClientHandler ;
79
81
import net .minecraftforge .fml .client .event .ConfigChangedEvent ;
80
82
import net .minecraftforge .fml .common .eventhandler .Event ;
111
113
import micdoodle8 .mods .galacticraft .core .network .PacketSimple .EnumSimplePacket ;
112
114
import micdoodle8 .mods .galacticraft .core .proxy .ClientProxyCore ;
113
115
import micdoodle8 .mods .galacticraft .core .tick .TickHandlerServer ;
116
+ import micdoodle8 .mods .galacticraft .core .util .ASMUtil ;
114
117
import micdoodle8 .mods .galacticraft .core .util .ConfigManagerCore ;
115
118
import micdoodle8 .mods .galacticraft .core .util .DamageSourceGC ;
116
119
import micdoodle8 .mods .galacticraft .core .util .GCCoreUtil ;
117
120
import micdoodle8 .mods .galacticraft .core .util .OxygenUtil ;
118
121
import micdoodle8 .mods .galacticraft .core .util .PlayerUtil ;
122
+ import micdoodle8 .mods .galacticraft .core .world .ChunkLoadingCallback ;
119
123
import micdoodle8 .mods .galacticraft .core .wrappers .PlayerGearData ;
120
124
import micdoodle8 .mods .galacticraft .planets .asteroids .AsteroidsModule ;
121
125
import micdoodle8 .mods .galacticraft .planets .mars .network .PacketSimpleMars ;
@@ -126,6 +130,27 @@ public class EventHandlerGC
126
130
public static Map <Block , Item > bucketList = new HashMap <>(4 , 1F );
127
131
public static boolean bedActivated ;
128
132
133
+ @ SubscribeEvent
134
+ public void onWorldSave (Save event )
135
+ {
136
+ ChunkLoadingCallback .save ((WorldServer ) event .getWorld ());
137
+ }
138
+
139
+ @ SubscribeEvent
140
+ public void onChunkDataLoad (ChunkDataEvent .Load event )
141
+ {
142
+ ChunkLoadingCallback .load ((WorldServer ) event .getWorld ());
143
+ }
144
+
145
+ @ SubscribeEvent
146
+ public void onWorldLoad (Load event )
147
+ {
148
+ if (!event .getWorld ().isRemote )
149
+ {
150
+ ChunkLoadingCallback .load ((WorldServer ) event .getWorld ());
151
+ }
152
+ }
153
+
129
154
@ SubscribeEvent
130
155
public void playerJoinWorld (EntityJoinWorldEvent event )
131
156
{
@@ -882,9 +907,6 @@ public void overrideSkyColor(EntityViewRenderEvent.FogColors event)
882
907
883
908
private List <SoundPlayEntry > soundPlayList = new ArrayList <>();
884
909
885
- private static Field volumeField ;
886
- private static Field pitchField ;
887
-
888
910
@ SideOnly (Side .CLIENT )
889
911
@ SubscribeEvent
890
912
public void onSoundPlayed (PlaySoundEvent event )
@@ -923,36 +945,10 @@ public void onSoundPlayed(PlaySoundEvent event)
923
945
float volume = 1.0F ;
924
946
float pitch = 1.0F ;
925
947
926
- if (volumeField == null )
927
- {
928
- try
929
- {
930
- volumeField = PositionedSound .class .getDeclaredField (GCCoreUtil .isDeobfuscated () ? "volume" : "field_147662_b" ); // TODO
931
- // Obfuscated
932
- // environment
933
- // support
934
- volumeField .setAccessible (true );
935
- pitchField = PositionedSound .class .getDeclaredField (GCCoreUtil .isDeobfuscated () ? "pitch" : "field_147663_c" ); // TODO
936
- // Obfuscated
937
- // environment
938
- // support
939
- pitchField .setAccessible (true );
940
- } catch (Exception e )
941
- {
942
- e .printStackTrace ();
943
- }
944
- }
945
-
946
- if (volumeField != null && pitchField != null )
948
+ if (event .getSound () instanceof PositionedSound )
947
949
{
948
- try
949
- {
950
- volume = event .getSound () instanceof PositionedSound ? (float ) volumeField .get (event .getSound ()) : 1.0F ;
951
- pitch = event .getSound () instanceof PositionedSound ? (float ) pitchField .get (event .getSound ()) : 1.0F ;
952
- } catch (IllegalAccessException e )
953
- {
954
- e .printStackTrace ();
955
- }
950
+ volume = ASMUtil .getPrivateValue (PositionedSound .class , (PositionedSound ) event .getSound (), "volume" , "field_147662_b" );
951
+ pitch = ASMUtil .getPrivateValue (PositionedSound .class , (PositionedSound ) event .getSound (), "pitch" , "field_147663_c" );
956
952
}
957
953
958
954
// First check for duplicate firing of PlaySoundEvent17
0 commit comments