Skip to content

Commit a6c52f7

Browse files
committed
Adds vibration, shriek, sculk_charge, and dust_color_transition particle tests
1 parent c5bba4a commit a6c52f7

File tree

2 files changed

+143
-38
lines changed
  • commandapi-platforms/commandapi-bukkit/commandapi-bukkit-test

2 files changed

+143
-38
lines changed

commandapi-platforms/commandapi-bukkit/commandapi-bukkit-test/commandapi-bukkit-test-impl-1.20.5/src/main/java/dev/jorel/commandapi/test/ArgumentNMS.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -785,9 +785,7 @@ public ParticleData<?> getParticle(CommandContext cmdCtx, String key) {
785785
String nmsKey = registry.getResourceKey(particleOptions.getType()).get().location().getPath();
786786
result = new ParticleData(map.get(nmsKey), baseNMS.getParticle(cmdCtx, key).data());
787787
}
788-
789-
790-
788+
791789
return result;
792790
}
793791

commandapi-platforms/commandapi-bukkit/commandapi-bukkit-test/commandapi-bukkit-test-tests/src/test/java/dev/jorel/commandapi/test/arguments/ArgumentParticleTests.java

Lines changed: 142 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package dev.jorel.commandapi.test.arguments;
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
45
import static org.junit.jupiter.api.Assertions.assertTrue;
56
import static org.junit.jupiter.api.Assumptions.assumeFalse;
67
import static org.junit.jupiter.api.Assumptions.assumeTrue;
@@ -13,6 +14,9 @@
1314
import org.bukkit.Material;
1415
import org.bukkit.Particle;
1516
import org.bukkit.Particle.DustOptions;
17+
import org.bukkit.Particle.DustTransition;
18+
import org.bukkit.Vibration;
19+
import org.bukkit.Vibration.Destination.BlockDestination;
1620
import org.bukkit.block.data.BlockData;
1721
import org.bukkit.block.data.Snowable;
1822
import org.bukkit.inventory.ItemStack;
@@ -185,6 +189,40 @@ void executionTestWithParticleArgumentDustRandom() {
185189
assertNoMoreResults(results);
186190
}
187191

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+
188226
@Test
189227
void executionTestWithParticleArgumentBlock() {
190228
Mut<ParticleData<?>> results = Mut.of();
@@ -288,40 +326,109 @@ void executionTestWithParticleArgumentEntityEffect() {
288326
assertNoMoreResults(results);
289327
}
290328

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+
}
326433

327434
}

0 commit comments

Comments
 (0)