@@ -20,6 +20,7 @@ namespace Exiled.Events.Patches.Events.Player
2020 using HarmonyLib ;
2121
2222 using InventorySystem . Items . Usables ;
23+ using LabApi . Events . Arguments . PlayerEvents ;
2324 using Utils . Networking ;
2425
2526 using static HarmonyLib . AccessTools ;
@@ -53,9 +54,8 @@ private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstructi
5354 index ,
5455 new CodeInstruction [ ]
5556 {
56- // Player.Get( referenceHub)
57+ // referenceHub
5758 new CodeInstruction ( OpCodes . Ldloc_0 ) . MoveLabelsFrom ( newInstructions [ index ] ) ,
58- new ( OpCodes . Call , Method ( typeof ( Player ) , nameof ( Player . Get ) , new [ ] { typeof ( ReferenceHub ) } ) ) ,
5959
6060 // usableItem
6161 new ( OpCodes . Ldloc_1 ) ,
@@ -90,14 +90,11 @@ private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstructi
9090 index ,
9191 new [ ]
9292 {
93- // Player.Get( referenceHub)
93+ // referenceHub
9494 new CodeInstruction ( OpCodes . Ldloc_0 ) ,
95- new ( OpCodes . Call , Method ( typeof ( Player ) , nameof ( Player . Get ) , new [ ] { typeof ( ReferenceHub ) } ) ) ,
9695
97- // handler.CurrentUsable.Item
98- new ( OpCodes . Ldloc_2 ) ,
99- new ( OpCodes . Ldflda , Field ( typeof ( PlayerHandler ) , nameof ( PlayerHandler . CurrentUsable ) ) ) ,
100- new ( OpCodes . Ldfld , Field ( typeof ( CurrentlyUsedItem ) , nameof ( CurrentlyUsedItem . Item ) ) ) ,
96+ // usableItem
97+ new ( OpCodes . Ldloc_1 ) ,
10198
10299 // CancellingItemUseEventArgs ev = new(Player, UsableItem)
103100 new ( OpCodes . Newobj , GetDeclaredConstructors ( typeof ( CancellingItemUseEventArgs ) ) [ 0 ] ) ,
@@ -114,28 +111,27 @@ private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstructi
114111 new ( OpCodes . Brfalse_S , returnLabel ) ,
115112 } ) ;
116113
117- offset = 3 ;
114+ // right before the LabAPI event "new PlayerCancelledUsingItemEventArgs(...)"
115+ offset = - 2 ;
118116 index = newInstructions . FindLastIndex (
119- instruction => instruction . Calls ( Method ( typeof ( NetworkUtils ) , nameof ( NetworkUtils . SendToAuthenticated ) ) ) ) + offset ;
120- /* // TODO: FIX THE CRASH ISSUE
117+ instruction => instruction . opcode == OpCodes . Newobj ) + offset ;
118+
121119 newInstructions . InsertRange (
122120 index ,
123121 new [ ]
124122 {
125- // Player.Get( referenceHub)
123+ // referenceHub
126124 new CodeInstruction ( OpCodes . Ldloc_0 ) ,
127- new(OpCodes.Call, Method(typeof(Player), nameof(Player.Get), new[] { typeof(ReferenceHub) })),
128125
129- // evCancellingItemUseEventArgs.Item
130- new(OpCodes.Ldloc_S, evCancellingItemUseEventArgs.LocalIndex),
131- new(OpCodes.Callvirt, PropertyGetter(typeof(CancellingItemUseEventArgs), nameof(CancellingItemUseEventArgs.Item))),
126+ // usableItem
127+ new ( OpCodes . Ldloc_1 ) ,
132128
133- // CancellingItemUseEventArgs ev = new(Player , UsableItem)
129+ // CancelledItemUseEventArgs ev = new(ReferenceHub , UsableItem)
134130 new ( OpCodes . Newobj , GetDeclaredConstructors ( typeof ( CancelledItemUseEventArgs ) ) [ 0 ] ) ,
135131
136- // Handlers.Player.OnCancellingItemUse (ev)
132+ // Handlers.Player.OnCancelledItemUse (ev)
137133 new ( OpCodes . Call , Method ( typeof ( Handlers . Player ) , nameof ( Handlers . Player . OnCancelledItemUse ) ) ) ,
138- });*/
134+ } ) ;
139135
140136 newInstructions [ newInstructions . Count - 1 ] . WithLabels ( returnLabel ) ;
141137
0 commit comments