feat(tamer): capture and relocate mobs
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
package games.dmg.spigottyrant;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
final class CapturedMobServiceTest {
|
||||
private final CapturedMobService service = new CapturedMobService();
|
||||
|
||||
@Test
|
||||
void captureAddsSnapshotAndSuccessfulReleaseRemovesExactlyThatMob() {
|
||||
UUID captureId = UUID.fromString("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa");
|
||||
PlayerState tamer = tamer();
|
||||
|
||||
PlayerState captured = service.capture(
|
||||
tamer, captureId, "ZOMBIE", "{id:\"minecraft:zombie\"}"
|
||||
);
|
||||
CapturedMob mob = service.find(captured, captureId).orElseThrow();
|
||||
PlayerState released = service.release(captured, captureId);
|
||||
|
||||
assertEquals("ZOMBIE", mob.entityType());
|
||||
assertEquals("{id:\"minecraft:zombie\"}", mob.data().get("snapshot"));
|
||||
assertEquals(java.util.List.of(), released.capturedMobs());
|
||||
}
|
||||
|
||||
@Test
|
||||
void enderDragonCanNeverBeCapturedAndMissingReleaseDoesNotMutate() {
|
||||
assertThrows(IllegalArgumentException.class, () -> service.capture(
|
||||
tamer(), UUID.randomUUID(), "ENDER_DRAGON", "snapshot"
|
||||
));
|
||||
assertEquals(tamer(), service.release(tamer(), UUID.randomUUID()));
|
||||
}
|
||||
|
||||
private static PlayerState tamer() {
|
||||
return new PlayerState(
|
||||
UUID.fromString("11111111-1111-1111-1111-111111111111"), "Tamer",
|
||||
Optional.empty(), Optional.empty(), TyrantClass.TAMER, Optional.empty(),
|
||||
Map.of(), Set.of(Ability.TAMER_CAPTURE), java.util.List.of()
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user