Skip to content
This repository was archived by the owner on Dec 8, 2024. It is now read-only.

Add an insomnia game event #9

Open
wants to merge 4 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ public class EventPool implements Runnable {
new SuperJumpEvent(),
new OneHeartEvent(),
new IncreasedMobDamageEvent(),
new AdventureEvent()
new AdventureEvent(),
new Insomnia()
);

private @Inject Plugin plugin;
Expand Down Expand Up @@ -72,7 +73,7 @@ public void run() {
Bukkit.getPluginManager().registerEvent(
entry.getKey(),
current,
EventPriority.NORMAL,
current.priority(),
entry.getValue(),
plugin
);
Expand All @@ -95,9 +96,14 @@ public void run() {
}
}

int interval = configuration.get().getInt("events.interval", 10);

if (current.subtractDuration()) {
interval -= current.duration();
}

current = null;

int interval = configuration.get().getInt("events.interval", 10);
if (interval < 1) {
run();
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import net.kyori.adventure.text.Component;
import net.kyori.adventure.title.Title;
import org.bukkit.event.Event;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import team.devblook.pepitocore.api.Identity;
import team.devblook.pepitocore.plugin.module.event.GameEventExecutor;
Expand Down Expand Up @@ -39,4 +40,12 @@ default void end() {
default Map<Class<? extends Event>, GameEventExecutor<? extends Event>> events() {
return DEFAULT_EVENTS;
}

default EventPriority priority() {
return EventPriority.NORMAL;
}

default boolean subtractDuration() {
return false;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
package team.devblook.pepitocore.plugin.module.event.type;

import net.kyori.adventure.bossbar.BossBar;
import net.kyori.adventure.key.Key;
import net.kyori.adventure.sound.Sound;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.TextColor;
import net.kyori.adventure.title.Title;
import org.bukkit.Bukkit;
import org.bukkit.event.Event;
import org.bukkit.event.EventPriority;
import org.bukkit.event.player.PlayerBedEnterEvent;
import team.devblook.pepitocore.plugin.module.event.GameEventExecutor;
import team.devblook.pepitocore.plugin.module.event.model.GameEvent;

import java.time.Duration;
import java.util.Map;

public class Insomnia implements GameEvent {

private final BossBar bossBar = BossBar.bossBar(
this::name,
1.0f,
BossBar.Color.BLUE,
BossBar.Overlay.PROGRESS
);

@Override
public Component name() {
return Component.text("ɪɴѕᴏᴍɴɪᴏ", TextColor.fromHexString("#2661e0"));
}

@Override
public Component description() {
return Component.text()
.appendNewline()
.appendNewline()
.appendNewline()
.appendNewline()
.append(Component.text("¡No podrás dormir!", TextColor.fromHexString("#2661e0")))
.appendNewline()
.appendNewline()
.append(Component.text(" Ahora es de noche y parece que por el mal día no puedes", TextColor.color(0xE4FFE5)))
.appendNewline()
.append(Component.text(" dormir, cuidado con los peligros de la noche.", TextColor.color(0xE4FFE5)))
.appendNewline()
.appendNewline()
.appendNewline()
.build();
}

@Override
public Title title() {
return Title.title(
Component.text("¡ɪɴѕᴏᴍɴɪᴏ!", TextColor.fromHexString("#2661e0")),
Component.text("Nos quedamos sin píldoras para dormir", TextColor.color(0xE4FFE5)),
Title.Times.times(
Duration.ofSeconds(2),
Duration.ofSeconds(5),
Duration.ofSeconds(2)
)
);
}

@Override
public Sound sound() {
return Sound.sound(
Key.key("minecraft", "entity.enderman.death"),
Sound.Source.PLAYER,
1.0f,
1.0f
);
}

@Override
public BossBar bossBar() {
return this.bossBar;
}

@Override
public int duration() {
return 9;
}

@Override
public String id() {
return "insomnia";
}

@Override
public void begin() {
Bukkit.getWorlds().get(0).setTime(13000);
}

@Override
public Map<Class<? extends Event>, GameEventExecutor<? extends Event>> events() {
return Map.of(
PlayerBedEnterEvent.class,
new GameEventExecutor<>(
PlayerBedEnterEvent.class,
event -> {
if (event.getBedEnterResult() == PlayerBedEnterEvent.BedEnterResult.OK) {
event.getPlayer().sendMessage(Component.text(
"No puedes dormir ahora, no tienes sueño.",
TextColor.fromHexString("#E7783C")
));
event.setCancelled(true);
}
}
)
);
}

@Override
public EventPriority priority() {
return EventPriority.LOWEST;
}

@Override
public boolean subtractDuration() {
return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ public void onEnterBed(PlayerBedEnterEvent event) {
return;
}

if (event.isCancelled()) {
return;
}

int sleeping = SLEEPING.incrementAndGet();
int needed = needed();

Expand Down