1
1
package galena .oreganized .mixin ;
2
2
3
+ import galena .oreganized .network .OreganizedNetwork ;
4
+ import galena .oreganized .network .packet .DoorPushingPacket ;
3
5
import galena .oreganized .world .IDoorProgressHolder ;
6
+ import net .minecraft .server .level .ServerPlayer ;
4
7
import net .minecraft .world .entity .player .Player ;
5
- import org . checkerframework . checker . units . qual . A ;
8
+ import net . minecraftforge . network . PacketDistributor ;
6
9
import org .spongepowered .asm .mixin .Mixin ;
7
10
import org .spongepowered .asm .mixin .Unique ;
8
11
import org .spongepowered .asm .mixin .injection .At ;
@@ -24,30 +27,42 @@ public class PlayerMixin implements IDoorProgressHolder {
24
27
return oreganised$leadDoorOpeningProgress ;
25
28
}
26
29
30
+ @ Unique
31
+ private void oreganized$syncProgress (boolean pushing ) {
32
+ var self = (Player ) (Object ) this ;
33
+
34
+ if (self instanceof ServerPlayer ) {
35
+ var packet = new DoorPushingPacket (self .getUUID (), pushing );
36
+ OreganizedNetwork .CHANNEL .send (PacketDistributor .DIMENSION .with (self .level ()::dimension ), packet );
37
+ }
38
+ }
39
+
27
40
@ Unique
28
41
@ Override
29
42
public int oreganised$incrementOpeningProgress () {
30
43
var self = (Player ) (Object ) this ;
31
44
oreganised$lastPress = self .level ().getGameTime ();
45
+ oreganized$syncProgress (true );
32
46
return ++oreganised$leadDoorOpeningProgress ;
33
47
}
34
48
35
49
@ Unique
36
50
@ Override
37
51
public void oreganised$resetOpeningProgress () {
38
52
oreganised$leadDoorOpeningProgress = 0 ;
53
+ oreganized$syncProgress (false );
39
54
}
40
55
41
56
@ Inject (
42
57
method = "tick" ,
43
58
at = @ At ("HEAD" )
44
59
)
45
60
private void oreganised$onTick (CallbackInfo ci ) {
46
- if (oreganised$leadDoorOpeningProgress == 0 ) return ;
61
+ if (oreganised$leadDoorOpeningProgress == 0 ) return ;
47
62
var self = (Player ) (Object ) this ;
48
- if (self .level () == null ) return ;
63
+ if (self .level () == null || self . level (). isClientSide ) return ;
49
64
var time = self .level ().getGameTime ();
50
- if (time - oreganised$lastPress > 6 ) oreganised$resetOpeningProgress ();
65
+ if (time - oreganised$lastPress > 6 ) oreganised$resetOpeningProgress ();
51
66
}
52
67
53
68
}
0 commit comments