This commit is contained in:
1 parent
9ed5dea830
commit
cee4690be9
1 file changed
+17
@@ -483,6 +483,11 @@ class GreatSwordNativeTest {
|
||||
|
||||
@Test void restartAndDifferentHolderCannotReapplyACompletedChargedStrike() throws Exception {
|
||||
org.bukkit.inventory.ItemStack sheet;
|
||||
java.time.Instant persistedDeadline;
|
||||
java.util.UUID characterId;
|
||||
// This scenario checks an unexpired persisted recovery, not the packaged
|
||||
// 0.75-second wall-clock boundary (covered by the fixed-clock test below).
|
||||
java.nio.file.Files.writeString(data.resolve("config.yml"),"great-sword-recovery-seconds: 600\n");
|
||||
try (var f = new FantasyStickLifecycleNativeTest.Fixture(data)) {
|
||||
f.plugin.setEnabled(true);
|
||||
var a = new FantasyStickLifecycleNativeTest.Actor(data); withGreatSword(data, a, 12);
|
||||
@@ -502,6 +507,12 @@ class GreatSwordNativeTest {
|
||||
f.dispatcher.accept(new io.papermc.paper.event.player.PrePlayerAttackEntityEvent(a.player, target, true));
|
||||
PartyBookNativeTest.drain(f); PartyBookNativeTest.drain(f);
|
||||
verify(target, times(1)).damage(anyDouble(), any(org.bukkit.damage.DamageSource.class));
|
||||
characterId=a.core.record.id();
|
||||
var stored=(games.dmg.fantasystick.persistence.CharacterStorage)
|
||||
FantasyStickLifecycleNativeTest.Fixture.field(f.plugin,"characters");
|
||||
persistedDeadline=stored.find(characterId).join().orElseThrow().cooldowns().get("great_sword");
|
||||
assertTrue(persistedDeadline.isAfter(java.time.Instant.now().plusSeconds(300)),
|
||||
"This restart/transfer check must still be before its acknowledged recovery deadline");
|
||||
sheet = a.core.inventory.getItemInOffHand().clone();
|
||||
a.core.inventory.setItemInOffHand(null); f.changed(a); PartyBookNativeTest.drain(f); f.awaitCharacterAndReceipt(a);
|
||||
f.plugin.setEnabled(false);
|
||||
@@ -511,6 +522,12 @@ class GreatSwordNativeTest {
|
||||
var b = new FantasyStickLifecycleNativeTest.Actor(data);
|
||||
b.core.inventory.setItemInOffHand(sheet);
|
||||
f.players.put(b.core.id, b.player); f.activate(b);
|
||||
var restored=(games.dmg.fantasystick.persistence.CharacterStorage)
|
||||
FantasyStickLifecycleNativeTest.Fixture.field(f.plugin,"characters");
|
||||
assertEquals(persistedDeadline,restored.find(characterId).join().orElseThrow()
|
||||
.cooldowns().get("great_sword"));
|
||||
assertTrue(persistedDeadline.isAfter(java.time.Instant.now().plusSeconds(300)),
|
||||
"The transferred holder must attack before the same persisted recovery expires");
|
||||
when(b.player.getAttackCooldown()).thenReturn(1.0f);
|
||||
var target = mock(org.bukkit.entity.LivingEntity.class);
|
||||
when(target.getUniqueId()).thenReturn(java.util.UUID.randomUUID());
|
||||
|
||||
Reference in new issue
Block a user