Skip to content

Commit 2caf7f3

Browse files
authored
Merge pull request fixrtm#143 from fixrtm/some-pack-crash-because-formation-entry-may-null
Some pack crash because formation entry may null
2 parents ee02793 + 3e8b309 commit 2caf7f3

File tree

11 files changed

+129
-369
lines changed

11 files changed

+129
-369
lines changed

patches/rtm.patch

Lines changed: 56 additions & 258 deletions
Original file line numberDiff line numberDiff line change
@@ -224,33 +224,10 @@ index d9b0787..a04bd4e 100644
224224
aload 0
225225
getfield jp/ngt/rtm/entity/ai/EntityAITravelByTrain/activeTask Lnet/minecraft/entity/ai/EntityAIBase;
226226
diff --git a/mods/rtm.deobf.jar.src.processed/jp/ngt/rtm/entity/train/EntityBogie.jasm b/src/main/rtm/jp/ngt/rtm/entity/train/EntityBogie.jasm
227-
index 58704f1..5e741cc 100644
227+
index 58704f1..3abb3c3 100644
228228
--- a/mods/rtm.deobf.jar.src.processed/jp/ngt/rtm/entity/train/EntityBogie.jasm
229229
+++ b/src/main/rtm/jp/ngt/rtm/entity/train/EntityBogie.jasm
230-
@@ -128,20 +128,22 @@ L_0020:
231-
iconst_1
232-
putfield jp/ngt/rtm/entity/train/EntityBogie/preventEntitySpawning Z
233-
L_0025:
234-
.line 81
235-
aload 0
236-
ldc 2.75f
237-
ldc 1.1875f
238-
invokevirtual jp/ngt/rtm/entity/train/EntityBogie/setBogieSize (FF)V
239-
L_002b:
240-
.line 82
241-
+ aload 0
242-
+ invokestatic com/anatawa12/fixRtm/rtm/entity/train/EntityBogieKt/constructor (Ljp/ngt/rtm/entity/train/EntityBogie;)V
243-
return
244-
L_002e:
245-
.end method
246-
247-
.method public <init> (Lnet/minecraft/world/World;BLjp/ngt/rtm/entity/train/EntityTrainBase;)V
248-
.limit stack 2
249-
.limit local 4
250-
L_0000:
251-
.line 86
252-
.var 0 is this Ljp/ngt/rtm/entity/train/EntityBogie; from L_0000 to L_0012
253-
@@ -1547,24 +1549,34 @@ L_0012:
230+
@@ -1547,24 +1547,34 @@ L_0012:
254231
.end stack
255232
iconst_0
256233
istore 1
@@ -285,6 +262,30 @@ index 58704f1..5e741cc 100644
285262

286263
.method public onBogieUpdate ()V
287264
.limit stack 2
265+
@@ -3260,10 +3270,23 @@ L_0000:
266+
putstatic jp/ngt/rtm/entity/train/EntityBogie/TRAIN_ID Lnet/minecraft/network/datasync/DataParameter;
267+
L_0006:
268+
.line 44
269+
ldc class Ljp/ngt/rtm/entity/train/EntityBogie;
270+
getstatic net/minecraft/network/datasync/DataSerializers/BYTE Lnet/minecraft/network/datasync/DataSerializer;
271+
invokestatic net/minecraft/network/datasync/EntityDataManager/createKey (Ljava/lang/Class;Lnet/minecraft/network/datasync/DataSerializer;)Lnet/minecraft/network/datasync/DataParameter;
272+
putstatic jp/ngt/rtm/entity/train/EntityBogie/BOGIE_STATE Lnet/minecraft/network/datasync/DataParameter;
273+
return
274+
.end method
275+
276+
+.method public onRemovedFromWorld ()V
277+
+ .limit stack 1
278+
+ .limit local 1
279+
+ .var 0 is this Ljp/ngt/rtm/entity/train/EntityBogie; from L_start to L_end
280+
+L_start:
281+
+ aload 0
282+
+ invokespecial net/minecraft/entity/Entity/onRemovedFromWorld ()V
283+
+ aload 0
284+
+ invokestatic com/anatawa12/fixRtm/rtm/entity/train/EntityBogieKt/onRemovedFromWorld (Ljp/ngt/rtm/entity/train/EntityBogie;)V
285+
+ return
286+
+L_end:
287+
+.end method
288+
+
288289
diff --git a/mods/rtm.deobf.jar.src.processed/jp/ngt/rtm/entity/train/EntityTrainBase.jasm b/src/main/rtm/jp/ngt/rtm/entity/train/EntityTrainBase.jasm
289290
index 2fe97f1..299abdb 100644
290291
--- a/mods/rtm.deobf.jar.src.processed/jp/ngt/rtm/entity/train/EntityTrainBase.jasm
@@ -536,100 +537,11 @@ index 2fe97f1..299abdb 100644
536537

537538
.method private setupChunks (II)V
538539
.limit stack 5
539-
diff --git a/mods/rtm.deobf.jar.src.processed/jp/ngt/rtm/entity/train/util/Formation.jasm b/src/main/rtm/jp/ngt/rtm/entity/train/util/Formation.jasm
540-
index 08fdfe9..a7f5e63 100644
541-
--- a/mods/rtm.deobf.jar.src.processed/jp/ngt/rtm/entity/train/util/Formation.jasm
542-
+++ b/src/main/rtm/jp/ngt/rtm/entity/train/util/Formation.jasm
543-
@@ -1843,46 +1843,57 @@ L_0000:
544-
.line 397
545-
.var 0 is this Ljp/ngt/rtm/entity/train/util/Formation; from L_0000 to L_001f
546-
.var 1 is train Ljp/ngt/rtm/entity/train/EntityTrainBase; from L_0000 to L_001f
547-
aload 0
548-
getfield jp/ngt/rtm/entity/train/util/Formation/direction B
549-
ifne L_000b
550-
aload 0
551-
getfield jp/ngt/rtm/entity/train/util/Formation/entries "[Ljp/ngt/rtm/entity/train/util/FormationEntry;"
552-
iconst_0
553-
aaload
554-
- getfield jp/ngt/rtm/entity/train/util/FormationEntry/train Ljp/ngt/rtm/entity/train/EntityTrainBase;
555-
goto L_0016
556-
L_000b:
557-
.stack
558-
locals Object jp/ngt/rtm/entity/train/util/Formation
559-
locals Object jp/ngt/rtm/entity/train/EntityTrainBase
560-
.end stack
561-
aload 0
562-
getfield jp/ngt/rtm/entity/train/util/Formation/entries "[Ljp/ngt/rtm/entity/train/util/FormationEntry;"
563-
aload 0
564-
getfield jp/ngt/rtm/entity/train/util/Formation/entries "[Ljp/ngt/rtm/entity/train/util/FormationEntry;"
565-
arraylength
566-
iconst_1
567-
isub
568-
aaload
569-
- getfield jp/ngt/rtm/entity/train/util/FormationEntry/train Ljp/ngt/rtm/entity/train/EntityTrainBase;
570-
L_0016:
571-
.stack use locals
572-
- stacks Object jp/ngt/rtm/entity/train/EntityTrainBase
573-
+ stacks Object jp/ngt/rtm/entity/train/util/FormationEntry
574-
.end stack
575-
astore 2
576-
L_0019:
577-
.line 398
578-
- .var 2 is front Ljp/ngt/rtm/entity/train/EntityTrainBase; from L_0019 to L_001f
579-
+ .var 2 is front Ljp/ngt/rtm/entity/train/util/FormationEntry; from L_0019 to L_001f
580-
+
581-
+ aload 2
582-
+ ifnonnull L_nonnull
583-
+ iconst_0
584-
+ ireturn
585-
+L_nonnull:
586-
+ .stack
587-
+ locals Object jp/ngt/rtm/entity/train/util/Formation
588-
+ locals Object jp/ngt/rtm/entity/train/EntityTrainBase
589-
+ locals Object jp/ngt/rtm/entity/train/util/FormationEntry
590-
+ .end stack
591-
+
592-
aload 1
593-
aload 2
594-
+ getfield jp/ngt/rtm/entity/train/util/FormationEntry/train Ljp/ngt/rtm/entity/train/EntityTrainBase;
595-
invokevirtual jp/ngt/rtm/entity/train/EntityTrainBase/equals (Ljava/lang/Object;)Z
596-
ireturn
597-
L_001f:
598-
.end method
599-
600-
.method public updateTrainMovement ()V
601-
.limit stack 5
602-
.limit local 6
603-
L_0000:
604-
.line 404
605540
diff --git a/mods/rtm.deobf.jar.src.processed/jp/ngt/rtm/entity/vehicle/EntityVehicleBase.jasm b/src/main/rtm/jp/ngt/rtm/entity/vehicle/EntityVehicleBase.jasm
606-
index 7ae932e..cd3d07e 100644
541+
index 7ae932e..72d443b 100644
607542
--- a/mods/rtm.deobf.jar.src.processed/jp/ngt/rtm/entity/vehicle/EntityVehicleBase.jasm
608543
+++ b/src/main/rtm/jp/ngt/rtm/entity/vehicle/EntityVehicleBase.jasm
609-
@@ -271,20 +271,22 @@ L_0061:
610-
L_0068:
611-
.line 96
612-
iinc 4 1
613-
goto L_0058
614-
L_006c:
615-
.line 100
616-
.stack
617-
locals Object jp/ngt/rtm/entity/vehicle/EntityVehicleBase
618-
locals Object net/minecraft/world/World
619-
.end stack
620-
+ aload 0
621-
+ invokestatic com/anatawa12/fixRtm/rtm/entity/vehicle/EntityVehicleBaseKt/constructor (Ljp/ngt/rtm/entity/vehicle/EntityVehicleBase;)V
622-
return
623-
L_0070:
624-
.end method
625-
626-
.method protected entityInit ()V
627-
.limit stack 0
628-
.limit local 1
629-
L_0000:
630-
.line 105
631-
.var 0 is this Ljp/ngt/rtm/entity/vehicle/EntityVehicleBase; signature "Ljp/ngt/rtm/entity/vehicle/EntityVehicleBase<TT;>;" from L_0000 to L_0003
632-
@@ -1068,48 +1070,54 @@ L_0004:
544+
@@ -1068,48 +1068,54 @@ L_0004:
633545
astore 4
634546
L_000b:
635547
.line 365
@@ -685,6 +597,30 @@ index 7ae932e..cd3d07e 100644
685597
getfield jp/ngt/rtm/entity/vehicle/EntityVehicleBase/posX D
686598
dsub
687599
aload 2
600+
@@ -2570,10 +2576,23 @@ L_000d:
601+
.limit stack 1
602+
.limit local 1
603+
L_0000:
604+
.line 722
605+
.var 0 is this Ljp/ngt/rtm/entity/vehicle/EntityVehicleBase; signature "Ljp/ngt/rtm/entity/vehicle/EntityVehicleBase<TT;>;" from L_0000 to L_0004
606+
aconst_null
607+
areturn
608+
L_0004:
609+
.end method
610+
611+
+.method public onRemovedFromWorld ()V
612+
+ .limit stack 1
613+
+ .limit local 1
614+
+ .var 0 is this Ljp/ngt/rtm/entity/vehicle/EntityVehicleBase; signature "Ljp/ngt/rtm/entity/vehicle/EntityVehicleBase<TT;>;" from L_start to L_end
615+
+L_start:
616+
+ aload 0
617+
+ invokespecial jp/ngt/ngtlib/entity/EntityCustom/onRemovedFromWorld ()V
618+
+ aload 0
619+
+ invokestatic com/anatawa12/fixRtm/rtm/entity/vehicle/EntityVehicleBaseKt/onRemovedFromWorld (Ljp/ngt/rtm/entity/vehicle/EntityVehicleBase;)V
620+
+ return
621+
+L_end:
622+
+.end method
623+
+
688624
diff --git a/mods/rtm.deobf.jar.src.processed/jp/ngt/rtm/entity/vehicle/RenderVehicleBase.jasm b/src/main/rtm/jp/ngt/rtm/entity/vehicle/RenderVehicleBase.jasm
689625
index 5298b6c..b941866 100644
690626
--- a/mods/rtm.deobf.jar.src.processed/jp/ngt/rtm/entity/vehicle/RenderVehicleBase.jasm
@@ -715,94 +651,10 @@ index 5298b6c..b941866 100644
715651
.stack
716652
locals Object jp/ngt/rtm/entity/vehicle/RenderVehicleBase
717653
diff --git a/mods/rtm.deobf.jar.src.processed/jp/ngt/rtm/entity/vehicle/VehicleTrackerEntry.jasm b/src/main/rtm/jp/ngt/rtm/entity/vehicle/VehicleTrackerEntry.jasm
718-
index 137db20..8000f15 100644
654+
index 137db20..ef3414c 100644
719655
--- a/mods/rtm.deobf.jar.src.processed/jp/ngt/rtm/entity/vehicle/VehicleTrackerEntry.jasm
720656
+++ b/src/main/rtm/jp/ngt/rtm/entity/vehicle/VehicleTrackerEntry.jasm
721-
@@ -616,20 +616,30 @@ L_0051:
722-
new net/minecraft/network/play/server/SPacketEntityAttach
723-
dup
724-
aload 0
725-
getfield jp/ngt/rtm/entity/vehicle/VehicleTrackerEntry/trackedEntity Lnet/minecraft/entity/Entity;
726-
aload 0
727-
getfield jp/ngt/rtm/entity/vehicle/VehicleTrackerEntry/trackedEntity Lnet/minecraft/entity/Entity;
728-
invokevirtual net/minecraft/entity/Entity/getRidingEntity ()Lnet/minecraft/entity/Entity;
729-
invokespecial net/minecraft/network/play/server/SPacketEntityAttach/<init> (Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/Entity;)V
730-
invokevirtual net/minecraft/network/NetHandlerPlayServer/sendPacket (Lnet/minecraft/network/Packet;)V
731-
L_005e:
732-
+
733-
+ .stack use locals
734-
+ .end stack
735-
+
736-
+ .line 1195
737-
+ aload 1
738-
+ aload 0
739-
+ getfield jp/ngt/rtm/entity/vehicle/VehicleTrackerEntry/trackedEntity Lnet/minecraft/entity/Entity;
740-
+ invokevirtual net/minecraft/entity/player/EntityPlayerMP/addEntity (Lnet/minecraft/entity/Entity;)V
741-
+
742-
.line 195
743-
.stack use locals
744-
.end stack
745-
aload 0
746-
getfield jp/ngt/rtm/entity/vehicle/VehicleTrackerEntry/trackedEntity Lnet/minecraft/entity/Entity;
747-
aload 1
748-
invokestatic net/minecraftforge/event/ForgeEventFactory/onStartEntityTracking (Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/player/EntityPlayer;)V
749-
L_0065:
750-
.line 196
751-
goto L_0083
752-
@@ -665,26 +675,51 @@ L_007d:
753-
invokestatic net/minecraftforge/event/ForgeEventFactory/onStopEntityTracking (Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/player/EntityPlayer;)V
754-
L_0083:
755-
.line 205
756-
.stack use locals
757-
.end stack
758-
return
759-
L_0087:
760-
.end method
761-
762-
.method public isVisibleTo (Lnet/minecraft/entity/player/EntityPlayerMP;)Z
763-
- .limit stack 1
764-
+ .limit stack 4
765-
.limit local 2
766-
L_0000:
767-
.line 210
768-
.var 0 is this Ljp/ngt/rtm/entity/vehicle/VehicleTrackerEntry; from L_0000 to L_0004
769-
.var 1 is playerMP Lnet/minecraft/entity/player/EntityPlayerMP; from L_0000 to L_0004
770-
+ aload 1
771-
+ aload 0
772-
+ getfield jp/ngt/rtm/entity/vehicle/VehicleTrackerEntry/trackedEntity Lnet/minecraft/entity/Entity;
773-
+ getfield net/minecraft/entity/Entity/posX D
774-
+ aload 0
775-
+ getfield jp/ngt/rtm/entity/vehicle/VehicleTrackerEntry/trackedEntity Lnet/minecraft/entity/Entity;
776-
+ getfield net/minecraft/entity/Entity/posY D
777-
+ aload 0
778-
+ getfield jp/ngt/rtm/entity/vehicle/VehicleTrackerEntry/trackedEntity Lnet/minecraft/entity/Entity;
779-
+ getfield net/minecraft/entity/Entity/posZ D
780-
+ invokevirtual net/minecraft/entity/Entity/getDistanceSq (DDD)D
781-
+ ldc 16.0
782-
+ ldc 32.0
783-
+ dmul
784-
+ dup2
785-
+ dmul
786-
+ dcmpl
787-
+ iflt JMP
788-
+ iconst_0
789-
+ ireturn
790-
+JMP:
791-
+ .stack
792-
+ locals Object jp/ngt/rtm/entity/vehicle/VehicleTrackerEntry
793-
+ locals Object net/minecraft/entity/player/EntityPlayerMP
794-
+ .end stack
795-
iconst_1
796-
ireturn
797-
L_0004:
798-
.end method
799-
800-
.method private isPlayerWatchingThisChunk (Lnet/minecraft/entity/player/EntityPlayerMP;)Z
801-
.limit stack 4
802-
.limit local 2
803-
L_0000:
804-
.line 215
805-
@@ -745,164 +780,22 @@ L_0016:
657+
@@ -745,164 +745,22 @@ L_0016:
806658
locals Object java/util/List
807659
.end stack
808660
return
@@ -968,35 +820,10 @@ index 137db20..8000f15 100644
968820
.line 273
969821
.var 0 is tracker Lnet/minecraft/entity/EntityTracker; from L_0000 to L_0011
970822
diff --git a/mods/rtm.deobf.jar.src.processed/jp/ngt/rtm/entity/vehicle/WeatherEffectDummy.jasm b/src/main/rtm/jp/ngt/rtm/entity/vehicle/WeatherEffectDummy.jasm
971-
index d0e484a..b7325e4 100644
823+
index d0e484a..ab9a52f 100644
972824
--- a/mods/rtm.deobf.jar.src.processed/jp/ngt/rtm/entity/vehicle/WeatherEffectDummy.jasm
973825
+++ b/src/main/rtm/jp/ngt/rtm/entity/vehicle/WeatherEffectDummy.jasm
974-
@@ -110,22 +110,23 @@ L_002b:
975-
L_0032:
976-
.line 36
977-
aload 0
978-
aload 0
979-
getfield jp/ngt/rtm/entity/vehicle/WeatherEffectDummy/parent Ljp/ngt/rtm/entity/vehicle/EntityVehicleBase;
980-
getfield jp/ngt/rtm/entity/vehicle/EntityVehicleBase/rotationPitch F
981-
putfield jp/ngt/rtm/entity/vehicle/WeatherEffectDummy/rotationPitch F
982-
L_0039:
983-
.line 38
984-
aload 0
985-
+ aload 0
986-
getfield jp/ngt/rtm/entity/vehicle/WeatherEffectDummy/parent Ljp/ngt/rtm/entity/vehicle/EntityVehicleBase;
987-
- getfield jp/ngt/rtm/entity/vehicle/EntityVehicleBase/isDead Z
988-
+ invokestatic com/anatawa12/fixRtm/rtm/entity/vehicle/WeatherEffectDummyKt/shouldDead (Ljp/ngt/rtm/entity/vehicle/WeatherEffectDummy;Ljp/ngt/rtm/entity/vehicle/EntityVehicleBase;)Z
989-
ifeq L_0050
990-
L_003f:
991-
.line 40
992-
aload 0
993-
invokevirtual jp/ngt/rtm/entity/vehicle/WeatherEffectDummy/setDead ()V
994-
L_0043:
995-
.line 41
996-
ldc "[WED] Remove %d"
997-
iconst_1
998-
anewarray java/lang/Object
999-
@@ -226,10 +227,21 @@ L_0003:
826+
@@ -226,10 +226,21 @@ L_0003:
1000827
.limit stack 0
1001828
.limit local 2
1002829
L_0000:
@@ -1873,35 +1700,6 @@ index 05b0fa4..e80bd03 100644
18731700
L_001a:
18741701
.line 120
18751702
aload 0
1876-
diff --git a/mods/rtm.deobf.jar.src.processed/jp/ngt/rtm/network/PacketVehicleMovement.jasm b/src/main/rtm/jp/ngt/rtm/network/PacketVehicleMovement.jasm
1877-
index 6e5c39c..e670ca1 100644
1878-
--- a/mods/rtm.deobf.jar.src.processed/jp/ngt/rtm/network/PacketVehicleMovement.jasm
1879-
+++ b/src/main/rtm/jp/ngt/rtm/network/PacketVehicleMovement.jasm
1880-
@@ -357,20 +357,24 @@ L_001b:
1881-
L_0023:
1882-
.line 97
1883-
.var 4 is entity Lnet/minecraft/entity/Entity; from L_0023 to L_008e
1884-
aload 4
1885-
ifnull L_007c
1886-
aload 4
1887-
getfield net/minecraft/entity/Entity/isDead Z
1888-
ifne L_007c
1889-
L_002a:
1890-
.line 99
1891-
+
1892-
+ aload 4
1893-
+ invokestatic com/anatawa12/fixRtm/rtm/network/PacketVehicleMovementKt/addEntityIfNotExits (Lnet/minecraft/entity/Entity;)V
1894-
+
1895-
aload 1
1896-
getfield jp/ngt/rtm/network/PacketVehicleMovement/vehicleX I
1897-
i2d
1898-
ldc 0.03125
1899-
dmul
1900-
dstore 5
1901-
L_0032:
1902-
.line 100
1903-
.var 5 is x D from L_0032 to L_0078
1904-
aload 1
19051703
diff --git a/mods/rtm.deobf.jar.src.processed/jp/ngt/rtm/rail/BlockLargeRailBase.jasm b/src/main/rtm/jp/ngt/rtm/rail/BlockLargeRailBase.jasm
19061704
index 0f3bed0..50f2a01 100644
19071705
--- a/mods/rtm.deobf.jar.src.processed/jp/ngt/rtm/rail/BlockLargeRailBase.jasm

0 commit comments

Comments
 (0)