@@ -61,8 +61,12 @@ private void endTntJump(Player player) {
61
61
}
62
62
63
63
@ EventHandler (priority = EventPriority .LOWEST )
64
- public void onExplode (EntityDamageByEntityEvent event ) {
65
- final var explodedEntity = event .getDamager ();
64
+ public void onExplode (EntityExplodeEvent event ) {
65
+ final var explodedEntity = event .getEntity ();
66
+ // }
67
+ // @EventHandler(priority = EventPriority.LOWEST)
68
+ // public void onExplode(EntityDamageByEntityEvent event) {
69
+ // final var explodedEntity = event.getDamager();
66
70
67
71
if (explodedEntity instanceof Explosive ) {
68
72
final var detectionDistance = SBAConfig .getInstance ().node ("tnt-fireball-jumping" , "detection-distance" )
@@ -74,27 +78,42 @@ public void onExplode(EntityDamageByEntityEvent event) {
74
78
.stream ()
75
79
.filter (entity -> !entity .equals (explodedEntity ))
76
80
.forEach (entity -> {
77
- Vector vector = explodedEntity
81
+ Vector vector = entity
78
82
.getLocation ()
79
83
.clone ()
80
- .add (0 , SBAConfig .getInstance ().node ("tnt-fireball-jumping" , "acceleration-y" )
81
- .getDouble (1.0 ), 0 )
82
84
.toVector ()
83
- .subtract (explodedEntity .getLocation ().toVector ()).normalize ();
85
+ .subtract (explodedEntity .getLocation ().clone ()
86
+ .add (0 , SBAConfig .getInstance ().node ("tnt-fireball-jumping" ,
87
+ "acceleration-y" )
88
+ .getDouble (1.0 ), 0 )
89
+ .toVector ())
90
+ .normalize ();
91
+ Logger .trace ("{}" , vector );
84
92
vector .setY (vector .getY ()
85
93
/ SBAConfig .getInstance ().node ("tnt-fireball-jumping" , "reduce-y" ).getDouble (2.0 ));
94
+ if (!Double .isFinite (vector .getY ())) {
95
+ vector .setY (0 );
96
+ }
97
+ if (!Double .isFinite (vector .getX ())) {
98
+ vector .setX (0 );
99
+ }
100
+ if (!Double .isFinite (vector .getZ ())) {
101
+ vector .setZ (0 );
102
+ }
86
103
vector .multiply (SBAConfig .getInstance ().node ("tnt-fireball-jumping" , "launch-multiplier" )
87
104
.getDouble (4.0 ));
88
105
89
106
if (entity instanceof Player ) {
90
107
final var player = (Player ) entity ;
91
- if (player .getGameMode () == GameMode .SPECTATOR || !Main .isPlayerInGame (player )) {
92
- return ;
108
+ if (player .getGameMode () == GameMode .SPECTATOR ||
109
+ !Main .isPlayerInGame (player )) {
110
+ return ;
93
111
}
94
- vector .add (new Vector (player .getEyeLocation ().getDirection ().getX (), 0 ,
95
- player .getEyeLocation ().getDirection ().getZ ()));
112
+ // vector.add(new Vector(player.getEyeLocation().getDirection().getX(), 0,
113
+ // player.getEyeLocation().getDirection().getZ()));
114
+
96
115
AntiCheatIntegration .getInstance ().beginTntJump (player );
97
- player .setVelocity (vector );
116
+ player .setVelocity (vector . add ( player . getVelocity ()) );
98
117
explosionAffectedPlayers .put (player , startTask (player ));
99
118
return ;
100
119
}
0 commit comments