Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
d662d60
fix: ortho
iambibi Jul 4, 2026
e5396b1
feat: add Vampirism enchantment
iambibi Jul 4, 2026
7ce1435
feat: add Loot Tables
iambibi Jul 4, 2026
76dfb85
fix: modifier already applied
iambibi Jul 5, 2026
ecd11ff
feat: commit, a commit, move ambient, add base of bloody night
iambibi Jul 5, 2026
cb38abc
feat: base of raids and types of bloody mobs
iambibi Jul 7, 2026
a9f9958
build: fix
iambibi Jul 7, 2026
a593a8a
fix: bug when stop all registry with acces in CustomMobsRegistry
iambibi Jul 7, 2026
7459d76
fix: modifier stay when reload
iambibi Jul 7, 2026
3ec7cee
fix: modifier already applied
iambibi Jul 7, 2026
ce66e61
fix: forget glow color
iambibi Jul 7, 2026
549be1a
fix: spam client log "Requested creation of existing team 'omc_glow_d…
iambibi Jul 7, 2026
31db82c
fix: bloody ambient time bugged when death or time change
iambibi Jul 7, 2026
617f6e9
fix: blood moon
iambibi Jul 7, 2026
5e2422b
fix: missing listeners
iambibi Jul 8, 2026
dc09a7a
fix: end event on stop server, (+ protection when entities load if bl…
iambibi Jul 8, 2026
c23b214
fix: condition
iambibi Jul 8, 2026
478e26b
fix: Entity is currently prevented from being removed from the world …
iambibi Jul 8, 2026
f425cb8
fix: glowing and fixed time
iambibi Jul 8, 2026
e9f190b
fix: fixed weather ambient
iambibi Jul 8, 2026
9b8428c
fix: broadcast miraculous fishing event
iambibi Jul 8, 2026
9bb5ee5
fix: Player is either on another team or not on any team. Cannot remo…
iambibi Jul 8, 2026
bedb273
fix: divers
iambibi Jul 8, 2026
45e200f
change: blood moon texture
iambibi Jul 11, 2026
c616303
Merge remote-tracking branch 'origin/master' into feat/bloody-night
iambibi Jul 11, 2026
d0331ea
update nms code to 26.2
iambibi Jul 11, 2026
dbf6c94
fix: ChatFormatting color to TeamColor
iambibi Jul 11, 2026
750a330
revert: back texture blood moon (with shader it bugged)
iambibi Jul 11, 2026
b6b9b78
fix: Player is either on another team or not on any team. Cannot remo…
iambibi Jul 11, 2026
7f7868c
feat add shader for Blood Moon without deleting any moon textures. (j…
iambibi Jul 13, 2026
79dc540
change: balances
iambibi Jul 13, 2026
0a3f5a7
fix: chunk loading
iambibi Jul 14, 2026
51249ea
tested
iambibi Jul 14, 2026
a95c766
change: buff bloody monsters
iambibi Jul 14, 2026
f4677bb
feat: add base of Vampire Boss (summoning, support bossbar for Custom…
iambibi Jul 14, 2026
bbfb309
feat: add BloodExplosionAttack
iambibi Jul 14, 2026
2aa3cec
feat: add VampireBatAttack
iambibi Jul 15, 2026
3a66041
feat: add VampireSlave, spawn when VampireBoss was hit
iambibi Jul 15, 2026
e44e288
change: buff slave
iambibi Jul 15, 2026
f16cae3
feat: boss rewards manager
iambibi Jul 15, 2026
5d8f837
change: buff/nerf/fix big commit ahah
iambibi Jul 15, 2026
cb659bc
fix: review of louty
iambibi Jul 16, 2026
71b590d
fix: sfx on water
iambibi Jul 16, 2026
0140aea
fix: sfx on water
iambibi Jul 16, 2026
f45b94a
change: ia placeholder for attribute with ancient fisher armor
iambibi Jul 16, 2026
c2d94ef
change: improve spawn raid and vampire
iambibi Jul 16, 2026
37e19d6
change: improve spawn raid and vampire
iambibi Jul 16, 2026
5b45537
change: improve loot table for difficulty of each mob
iambibi Jul 16, 2026
337d9fc
change: improve creeper set Enraged
iambibi Jul 16, 2026
a44e8fb
feat: add info menu bloody event
iambibi Jul 16, 2026
40b7d40
fix; weather when weather fixe at none
iambibi Jul 16, 2026
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
12 changes: 11 additions & 1 deletion src/main/java/fr/openmc/core/ListenersManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,15 @@
import fr.openmc.core.features.itemsadder.SpawnerExtractorListener;
import fr.openmc.core.hooks.itemsadder.ItemsAdderHook;
import fr.openmc.core.listeners.*;
import fr.openmc.core.registry.ambient.listeners.AmbientFixedTimeListener;
import fr.openmc.core.registry.ambient.listeners.AmbientWeatherListener;
import fr.openmc.core.registry.ambient.listeners.BiomesOnChunkLoad;
import fr.openmc.core.registry.ambient.listeners.CustomAmbientListener;
import fr.openmc.core.registry.lootboxes.listener.DesactivateFireworkDamageListener;
import fr.openmc.core.registry.mobs.listeners.CustomMobBossbarListener;
import fr.openmc.core.registry.mobs.listeners.CustomMobDeathListener;
import fr.openmc.core.registry.mobs.listeners.CustomMobLoadListener;
import fr.openmc.core.utils.nms.entity.EntityGlowNMS;
import org.bukkit.Bukkit;
import org.bukkit.Server;
import org.bukkit.event.Listener;
Expand All @@ -34,6 +39,7 @@ public static void init() {
new PlayerDeathListener(),
new AsyncChatListener(OMCPlugin.getInstance()),
new InteractListener(),
new DesactivateFireworkDamageListener(),
new BlockPlaceListener(),
new EquipableItemListener(),
new NoMoreRabbit(),
Expand All @@ -42,7 +48,11 @@ public static void init() {
new BlockBreakListener(),
new CustomAmbientListener(),
new BiomesOnChunkLoad(),
new AmbientWeatherListener()
new AmbientWeatherListener(),
new AmbientFixedTimeListener(),
new EntityGlowNMS(),
new CustomMobBossbarListener(),
new CustomMobLoadListener()
);

if (!OMCPlugin.isUnitTestVersion()) {
Expand Down
20 changes: 14 additions & 6 deletions src/main/java/fr/openmc/core/OMCRegistry.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import io.papermc.paper.plugin.bootstrap.BootstrapContext;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

Expand All @@ -26,6 +27,7 @@ public final class OMCRegistry {
public static CustomAmbientRegistry CUSTOM_AMBIENTS;
public static CustomLootboxRegistry CUSTOM_LOOTBOXES;

private static final List<LifecycleRegistry> LOADED = new ArrayList<>();

private static final List<RegistryContext> ALL = List.of(
new RegistryContext(
Expand Down Expand Up @@ -54,7 +56,7 @@ public static void bootstrapAll(BootstrapContext context) {
if (Arrays.stream(ctx.loadingTypes())
.noneMatch(t -> t == RegistryLoadingType.BOOTSTRAP)) continue;

LifecycleRegistry r = ctx.registry().get();
LifecycleRegistry r = load(ctx);
try {
r.bootstrap(context);
} catch (IOException e) {
Expand All @@ -70,7 +72,7 @@ public static void initAll() {
if (Arrays.stream(ctx.loadingTypes())
.noneMatch(t -> t == RegistryLoadingType.RUNTIME)) continue;

LifecycleRegistry r = ctx.registry().get();
LifecycleRegistry r = load(ctx);
r.init();
OMCLogger.successFormatted("Registre {} chargé pendant le runtime", r.getClass().getSimpleName());
}
Expand All @@ -81,17 +83,23 @@ public static void postInitAll() {
if (Arrays.stream(ctx.loadingTypes())
.noneMatch(t -> t == RegistryLoadingType.AFTER_IA)) continue;

LifecycleRegistry r = ctx.registry().get();
LifecycleRegistry r = load(ctx);
r.postInit();
OMCLogger.successFormatted("Registre {} chargé après ItemsAdder", r.getClass().getSimpleName());
}
}

public static void stopAll() {
for (RegistryContext ctx : OMCRegistry.ALL) {
LifecycleRegistry r = ctx.registry().get();
for (LifecycleRegistry r : LOADED) {
r.stop();
OMCLogger.successFormatted("Registre {} stoppé", r.getClass().getSimpleName());
}
LOADED.clear();
}

private static LifecycleRegistry load(RegistryContext ctx) {
LifecycleRegistry registry = ctx.registry().get();
LOADED.add(registry);
return registry;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@

import java.sql.SQLException;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
Expand Down Expand Up @@ -70,6 +71,10 @@ public void init() {

@Override
public void save() {
if (outgoingEvent != null) {
outgoingEvent.getDailyEvent().end();
}

saveIncomingEventsDB(new IncomingEventsDB(incomingEvents));
}

Expand Down Expand Up @@ -231,4 +236,16 @@ public static DailyEvent getDailyEvent(String id) {
.findFirst()
.orElse(null);
}

/**
* Permet d'obtenir le temps restant d'un evenement journalier en secondes
* @param event l'event
* @return le temps restant en secondes
*/
public static double getRemainingTime(DailyEvent event) {
if (!isActiveDailyEvent()) return -1;
if (getActiveDailyEvent() != event) return -1;

return outgoingEvent.getScheduledStartDate().until(DateUtils.getLocalDateTime(), ChronoUnit.SECONDS);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,15 @@ public static void forceStartCommand(Player player,
DailyEventsManager.getDailyEvent(dailyEvent), DateUtils.getLocalDateTime());
DailyEventsManager.outgoingEvent.getDailyEvent().start();
}

@Subcommand("forceEnd")
@CommandPermission("omc.admins.commands.dailyevent.forceend")
public static void forceEndCommand(Player player) {
if (DailyEventsManager.outgoingEvent != null) {
// * On arrete l'evenement en cours
DailyEventsManager.endEventTask.cancel();
DailyEventsManager.endEventTask = null;
DailyEventsManager.outgoingEvent.getDailyEvent().end();
}
}
}
Original file line number Diff line number Diff line change
@@ -1,21 +1,31 @@
package fr.openmc.core.features.events.contents.dailyevents.contents.bloodynight;

import fr.openmc.api.menulib.Menu;
import fr.openmc.core.OMCRegistry;
import fr.openmc.core.bootstrap.features.types.HasListeners;
import fr.openmc.core.features.events.contents.dailyevents.contents.bloodynight.listeners.MonsterSpawnLIstener;
import fr.openmc.core.features.events.contents.dailyevents.contents.bloodynight.listeners.PlayerKillMonsterListener;
import fr.openmc.core.features.events.contents.dailyevents.contents.bloodynight.menu.BloodyNightMenu;
import fr.openmc.core.features.events.contents.dailyevents.models.dailyevent.DailyEvent;
import fr.openmc.core.features.events.contents.dailyevents.models.dailyevent.HasAmbient;
import fr.openmc.core.features.events.contents.dailyevents.models.dailyevent.HasBroadcast;
import fr.openmc.core.features.events.contents.dailyevents.models.dailyevent.HasToast;
import fr.openmc.core.features.events.models.HasMenu;
import fr.openmc.core.registry.ambient.CustomAmbient;
import fr.openmc.core.utils.nms.toast.CustomToastData;
import fr.openmc.core.utils.text.messages.TranslationManager;
import net.kyori.adventure.text.Component;
import net.minecraft.advancements.AdvancementType;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack;

import java.util.List;
import java.util.Set;

public class BloodyNightEvent extends DailyEvent implements HasToast, HasAmbient, HasBroadcast {
public class BloodyNightEvent extends DailyEvent
implements HasToast, HasAmbient, HasBroadcast, HasListeners, HasMenu {
@Override
public String getEventId() {
return "bloody_night";
Expand All @@ -33,16 +43,12 @@ public int getDuration() {

@Override
public Runnable onStart() {
return () -> {
System.out.println("BLOODY NIGHT START");
};
return () -> BloodyNightManager.start(this);
}

@Override
public Runnable onEnd() {
return () -> {
System.out.println("BLOODY NIGHT END");
};
return () -> BloodyNightManager.stop(this);
}

@Override
Expand Down Expand Up @@ -92,4 +98,17 @@ public Component getStartBroadcast() {
public Component getEndBroadcast() {
return TranslationManager.translation("feature.dailyevents.bloodynight.broadcast.end");
}

@Override
public Set<Listener> getListeners() {
return Set.of(
new PlayerKillMonsterListener(),
new MonsterSpawnLIstener()
);
}

@Override
public Menu getInfoMenu(Player player) {
return new BloodyNightMenu(player);
}
}
Loading
Loading