|
1 | 1 | package dev.jorel.commandapi.test.arguments; |
2 | 2 |
|
3 | 3 | import static org.junit.jupiter.api.Assertions.assertEquals; |
| 4 | +import static org.junit.jupiter.api.Assertions.assertInstanceOf; |
4 | 5 | import static org.junit.jupiter.api.Assertions.assertTrue; |
5 | 6 | import static org.junit.jupiter.api.Assumptions.assumeFalse; |
6 | 7 | import static org.junit.jupiter.api.Assumptions.assumeTrue; |
|
13 | 14 | import org.bukkit.Material; |
14 | 15 | import org.bukkit.Particle; |
15 | 16 | import org.bukkit.Particle.DustOptions; |
| 17 | +import org.bukkit.Particle.DustTransition; |
| 18 | +import org.bukkit.Vibration; |
| 19 | +import org.bukkit.Vibration.Destination.BlockDestination; |
16 | 20 | import org.bukkit.block.data.BlockData; |
17 | 21 | import org.bukkit.block.data.Snowable; |
18 | 22 | import org.bukkit.inventory.ItemStack; |
@@ -185,6 +189,40 @@ void executionTestWithParticleArgumentDustRandom() { |
185 | 189 | assertNoMoreResults(results); |
186 | 190 | } |
187 | 191 |
|
| 192 | + @Test |
| 193 | + void executionTestWithParticleArgumentDustColorTransition() { |
| 194 | + Mut<ParticleData<?>> results = Mut.of(); |
| 195 | + |
| 196 | + new CommandAPICommand("test") |
| 197 | + .withArguments(new ParticleArgument("particle")) |
| 198 | + .executesPlayer((player, args) -> { |
| 199 | + results.set((ParticleData<?>) args.get("particle")); |
| 200 | + }) |
| 201 | + .register(); |
| 202 | + |
| 203 | + PlayerMock player = server.addPlayer(); |
| 204 | + |
| 205 | + // dust_color_transition from_red from_green from_blue size to_red to_green to_blue, where red, green and blue are between 0 and 1 |
| 206 | + // |
| 207 | + if (version.greaterThanOrEqualTo(MCVersion.V1_20_5)) { |
| 208 | + server.dispatchCommand(player, "test dust_color_transition{from_color:[0.1,0.2,0.3],scale:0.4,to_color:[0.5,0.6,0.7]}"); |
| 209 | + } else { |
| 210 | + server.dispatchCommand(player, "test dust_color_transition 0.1 0.2 0.3 0.4 0.5 0.6 0.7"); |
| 211 | + } |
| 212 | + @SuppressWarnings("unchecked") |
| 213 | + ParticleData<DustTransition> result = (ParticleData<DustTransition>) results.get(); |
| 214 | + |
| 215 | + // Check the particle type is correct |
| 216 | + assertEquals(Particle.DUST_COLOR_TRANSITION, result.particle()); |
| 217 | + |
| 218 | + // Check the particle properties |
| 219 | + assertEquals(Color.fromRGB((int) (0.1f * 255), (int) (0.2f * 255), (int) (0.3f * 255)), result.data().getColor()); |
| 220 | + assertEquals(0.4f, result.data().getSize()); |
| 221 | + assertEquals(Color.fromRGB((int) (0.5f * 255), (int) (0.6f * 255), (int) (0.7f * 255)), result.data().getToColor()); |
| 222 | + |
| 223 | + assertNoMoreResults(results); |
| 224 | + } |
| 225 | + |
188 | 226 | @Test |
189 | 227 | void executionTestWithParticleArgumentBlock() { |
190 | 228 | Mut<ParticleData<?>> results = Mut.of(); |
@@ -288,40 +326,109 @@ void executionTestWithParticleArgumentEntityEffect() { |
288 | 326 | assertNoMoreResults(results); |
289 | 327 | } |
290 | 328 |
|
291 | | -// @Test |
292 | | -// void executionTestWithParticleArgumentVibration() { |
293 | | -// Mut<ParticleData<?>> results = Mut.of(); |
294 | | -// |
295 | | -// new CommandAPICommand("test") |
296 | | -// .withArguments(new ParticleArgument("particle")) |
297 | | -// .executesPlayer((player, args) -> { |
298 | | -// results.set((ParticleData<?>) args.get("particle")); |
299 | | -// }) |
300 | | -// .register(); |
301 | | -// |
302 | | -// PlayerMock player = server.addPlayer(); |
303 | | -// |
304 | | -// // block block_type[meta] |
305 | | -// if (version.greaterThanOrEqualTo(MCVersion.V1_20_5)) { |
306 | | -// server.dispatchCommand(player, "test block{block_state:{Name:\"minecraft:grass_block\",Properties:{snowy:\"true\"}}}"); |
307 | | -// } else { |
308 | | -// server.dispatchCommand(player, "test block minecraft:grass_block[snowy=true]"); |
309 | | -// } |
310 | | -// |
311 | | -// @SuppressWarnings("unchecked") |
312 | | -// ParticleData<BlockData> result = (ParticleData<BlockData>) results.get(); |
313 | | -// |
314 | | -// // Check the particle type is correct |
315 | | -// assertEquals(Particle.BLOCK_CRACK, result.particle()); |
316 | | -// |
317 | | -// // TODO: Can't handle particle data yet in 1.20.5 |
318 | | -// assumeTrue(version.lessThan(MCVersion.V1_20_5)); |
319 | | -// |
320 | | -// // Check the particle properties |
321 | | -// assertEquals(Material.GRASS_BLOCK, result.data().getMaterial()); |
322 | | -// assertTrue(((Snowable) result.data()).isSnowy()); |
323 | | -// |
324 | | -// assertNoMoreResults(results); |
325 | | -// } |
| 329 | + @Test |
| 330 | + void executionTestWithParticleArgumentVibration() { |
| 331 | + Mut<ParticleData<?>> results = Mut.of(); |
| 332 | + |
| 333 | + new CommandAPICommand("test") |
| 334 | + .withArguments(new ParticleArgument("particle")) |
| 335 | + .executesPlayer((player, args) -> { |
| 336 | + results.set((ParticleData<?>) args.get("particle")); |
| 337 | + }) |
| 338 | + .register(); |
| 339 | + |
| 340 | + PlayerMock player = server.addPlayer(); |
| 341 | + |
| 342 | + // vibration 1.0 2.0 3.0 4 |
| 343 | + // vibration{destination:{type:\"block\",pos:[1.0,2.0,3.0]},arrival_in_ticks:4} |
| 344 | + if (version.greaterThanOrEqualTo(MCVersion.V1_20_5)) { |
| 345 | + server.dispatchCommand(player, "test vibration{destination:{type:\"block\",pos:[1.0,2.0,3.0]},arrival_in_ticks:4}"); |
| 346 | + } else { |
| 347 | + server.dispatchCommand(player, "test vibration 1.0 2.0 3.0 4"); |
| 348 | + } |
| 349 | + |
| 350 | + @SuppressWarnings("unchecked") |
| 351 | + ParticleData<Vibration> result = (ParticleData<Vibration>) results.get(); |
| 352 | + |
| 353 | + // Check the particle type is correct |
| 354 | + assertEquals(Particle.VIBRATION, result.particle()); |
| 355 | + |
| 356 | + // Check the particle properties |
| 357 | + assertEquals(4, result.data().getArrivalTime()); |
| 358 | + assertInstanceOf(BlockDestination.class, result.data().getDestination()); |
| 359 | + |
| 360 | + BlockDestination blockDestination = (BlockDestination) result.data().getDestination(); |
| 361 | + assertEquals(1, blockDestination.getLocation().getBlockX()); |
| 362 | + assertEquals(2, blockDestination.getLocation().getBlockY()); |
| 363 | + assertEquals(3, blockDestination.getLocation().getBlockZ()); |
| 364 | + |
| 365 | + assertNoMoreResults(results); |
| 366 | + } |
| 367 | + |
| 368 | + @Test |
| 369 | + void executionTestWithParticleArgumentShriek() { |
| 370 | + Mut<ParticleData<?>> results = Mut.of(); |
| 371 | + |
| 372 | + new CommandAPICommand("test") |
| 373 | + .withArguments(new ParticleArgument("particle")) |
| 374 | + .executesPlayer((player, args) -> { |
| 375 | + results.set((ParticleData<?>) args.get("particle")); |
| 376 | + }) |
| 377 | + .register(); |
| 378 | + |
| 379 | + PlayerMock player = server.addPlayer(); |
| 380 | + |
| 381 | + // shriek 1 |
| 382 | + // shriek{delay:1} |
| 383 | + if (version.greaterThanOrEqualTo(MCVersion.V1_20_5)) { |
| 384 | + server.dispatchCommand(player, "test shriek{delay:1}"); |
| 385 | + } else { |
| 386 | + server.dispatchCommand(player, "test shriek 1"); |
| 387 | + } |
| 388 | + |
| 389 | + @SuppressWarnings("unchecked") |
| 390 | + ParticleData<Integer> result = (ParticleData<Integer>) results.get(); |
| 391 | + |
| 392 | + // Check the particle type is correct |
| 393 | + assertEquals(Particle.SHRIEK, result.particle()); |
| 394 | + |
| 395 | + // Check the particle properties |
| 396 | + assertEquals(1, result.data()); |
| 397 | + |
| 398 | + assertNoMoreResults(results); |
| 399 | + } |
| 400 | + |
| 401 | + @Test |
| 402 | + void executionTestWithParticleArgumentSculkCharge() { |
| 403 | + Mut<ParticleData<?>> results = Mut.of(); |
| 404 | + |
| 405 | + new CommandAPICommand("test") |
| 406 | + .withArguments(new ParticleArgument("particle")) |
| 407 | + .executesPlayer((player, args) -> { |
| 408 | + results.set((ParticleData<?>) args.get("particle")); |
| 409 | + }) |
| 410 | + .register(); |
| 411 | + |
| 412 | + PlayerMock player = server.addPlayer(); |
| 413 | + |
| 414 | + // sculk_charge 0.1 |
| 415 | + // sculk_charge{roll:0.1} |
| 416 | + if (version.greaterThanOrEqualTo(MCVersion.V1_20_5)) { |
| 417 | + server.dispatchCommand(player, "test sculk_charge{roll:0.1}"); |
| 418 | + } else { |
| 419 | + server.dispatchCommand(player, "test sculk_charge 0.1"); |
| 420 | + } |
| 421 | + |
| 422 | + @SuppressWarnings("unchecked") |
| 423 | + ParticleData<Float> result = (ParticleData<Float>) results.get(); |
| 424 | + |
| 425 | + // Check the particle type is correct |
| 426 | + assertEquals(Particle.SCULK_CHARGE, result.particle()); |
| 427 | + |
| 428 | + // Check the particle properties |
| 429 | + assertEquals(0.1f, result.data()); |
| 430 | + |
| 431 | + assertNoMoreResults(results); |
| 432 | + } |
326 | 433 |
|
327 | 434 | } |
0 commit comments