Skip to content
Merged
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 @@ -21,17 +21,20 @@
import com.eternalcode.core.injector.bean.processor.BeanProcessor;
import com.eternalcode.core.injector.bean.processor.BeanProcessorFactory;
import com.eternalcode.core.injector.scan.DependencyScanner;
import com.eternalcode.core.modules.ModuleService;
import com.eternalcode.core.publish.Publisher;
import com.eternalcode.core.publish.event.EternalInitializeEvent;
import com.eternalcode.core.publish.event.EternalShutdownEvent;
import dev.rollczi.litecommands.annotations.command.Command;
import dev.rollczi.litecommands.annotations.command.RootCommand;
import java.util.stream.Collectors;
import org.bukkit.Server;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.PluginManager;

import java.io.File;
import java.util.List;
import java.util.logging.Logger;

class EternalCore {
Expand All @@ -42,6 +45,7 @@ public EternalCore(Plugin plugin) {
EternalCoreEnvironment environment = new EternalCoreEnvironment(plugin.getLogger());

CompatibilityService compatibilityService = new CompatibilityService();
ModuleService moduleService = new ModuleService(plugin.getDataFolder(), plugin.getLogger());
BeanProcessor beanProcessor = BeanProcessorFactory.defaultProcessors(plugin);
BeanFactory beanFactory = new BeanFactory(beanProcessor)
.withCandidateSelf()
Expand Down Expand Up @@ -75,7 +79,19 @@ public EternalCore(Plugin plugin) {

beanFactory.addCandidate(DependencyInjector.class, () -> injector);

for (BeanCandidate beanCandidate : scanner.scan(EternalCore.class.getPackage())) {
List<BeanCandidate> beanCandidates = scanner.scan(EternalCore.class.getPackage());
List<Class<?>> scannedTypes = beanCandidates.stream().map(BeanCandidate::getType).collect(Collectors.toList());

moduleService.registerDiscoveredModules(scannedTypes);
moduleService.loadModuleDescriptions(EternalCore.class.getClassLoader());
moduleService.writeModulesFile();
moduleService.logDisabledModules();

for (BeanCandidate beanCandidate : beanCandidates) {
if (!moduleService.isEnabled(beanCandidate.getType())) {
continue;
}

beanFactory.addCandidate(beanCandidate);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import com.eternalcode.core.configuration.AbstractConfigurationFile;
import com.eternalcode.core.database.DatabaseConfig;
import com.eternalcode.core.database.DatabaseSettings;
import com.eternalcode.core.feature.teleport.settings.TeleportConfig;
import com.eternalcode.core.feature.teleport.settings.TeleportSettings;
import com.eternalcode.core.teleport.settings.TeleportConfig;
import com.eternalcode.core.teleport.settings.TeleportSettings;
import com.eternalcode.core.util.date.DateConfig;
import com.eternalcode.core.util.date.DateSettings;
import com.eternalcode.core.feature.afk.AfkConfig;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@
import com.eternalcode.commons.bukkit.runnable.OnlinePlayersRunnable;
import com.eternalcode.core.injector.annotations.Inject;
import com.eternalcode.core.injector.annotations.component.Task;
import com.eternalcode.core.modules.GatedByModule;
import com.eternalcode.core.notice.NoticeService;
import java.util.concurrent.TimeUnit;
import org.bukkit.entity.Player;

@Task(period = 1, delay = 1, unit = TimeUnit.SECONDS)
@GatedByModule
final class AdminChatReminderTask extends OnlinePlayersRunnable {

private final AdminChatService adminChatService;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.adminchat;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Private staff chat channel for players with the admin chat permission (/adminchat).")
final class AdminchatModule {

private AdminchatModule() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.afk;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Marks players as AFK after inactivity (or via /afk) and can kick them while idle.")
final class AfkModule {

private AfkModule() {
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@
import com.eternalcode.core.feature.vanish.VanishService;
import com.eternalcode.core.injector.annotations.Inject;
import com.eternalcode.core.injector.annotations.component.Task;
import com.eternalcode.core.modules.GatedByModule;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
import org.bukkit.Server;
import org.bukkit.entity.Player;

@Task(delay = 1L, period = 1L, unit = TimeUnit.MINUTES)
@GatedByModule
class AfkTask implements Runnable {

private final AfkService afkService;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.automessage;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Periodically broadcasts a rotating set of messages to the server.")
final class AutoMessageModule {

private AutoMessageModule() {
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.eternalcode.core.feature.automessage.messages.AutoMessageMessages;
import com.eternalcode.core.injector.annotations.Inject;
import com.eternalcode.core.injector.annotations.component.Service;
import com.eternalcode.core.modules.GatedByModule;
import com.eternalcode.core.notice.NoticeService;
import com.eternalcode.multification.notice.Notice;
import java.util.Collection;
Expand All @@ -18,6 +19,7 @@
import org.bukkit.entity.Entity;

@Service
@GatedByModule
class AutoMessageService {

private final AutoMessageRepository repository;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.back;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Lets players return to their previous location with /back.")
final class BackModule {

private BackModule() {
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.eternalcode.commons.bukkit.position.Position;
import com.eternalcode.commons.bukkit.position.PositionAdapter;
import com.eternalcode.core.feature.teleport.TeleportService;
import com.eternalcode.core.feature.teleport.TeleportTaskService;
import com.eternalcode.core.teleport.TeleportTaskService;
import com.eternalcode.core.injector.annotations.Inject;
import com.eternalcode.core.injector.annotations.component.Service;
import com.github.benmanes.caffeine.cache.Cache;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.broadcast;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Sends a formatted announcement to the whole server (/broadcast).")
final class BroadcastModule {

private BroadcastModule() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.burn;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Sets a player on fire for a duration (/burn).")
final class BurnModule {

private BurnModule() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.butcher;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Bulk-removes nearby entities like mobs or dropped items (/butcher).")
final class ButcherModule {

private ButcherModule() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.chat;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Formats and manages the public chat channel.")
final class ChatModule {

private ChatModule() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.clear;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Clears a player's inventory (/clear).")
final class ClearModule {

private ClearModule() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.container;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Opens portable virtual containers (anvil, enderchest, grindstone, loom, etc.) without needing the block.")
final class ContainerModule {

private ContainerModule() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.customcommand;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Lets admins define custom commands that run a set of actions or send a message.")
final class CustomCommandModule {

private CustomCommandModule() {
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@

import com.eternalcode.core.injector.annotations.Inject;
import com.eternalcode.core.injector.annotations.component.Service;
import com.eternalcode.core.modules.GatedByModule;
import com.eternalcode.core.notice.NoticeService;
import dev.rollczi.litecommands.util.StringUtil;
import java.lang.reflect.Field;
import org.bukkit.Server;
import org.bukkit.command.CommandMap;

@Service
@GatedByModule
public class CustomCommandRegistry {

private static final String FALLBACK_PREFIX = "eternalcore";
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.deathmessage;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Sends a customizable death message to the server when a player dies.")
final class DeathMessageModule {

private DeathMessageModule() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.deathteleport;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Automatically teleports players back to their death location after respawning.")
final class DeathTeleportModule {

private DeathTeleportModule() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.disposal;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Opens a virtual trash can inventory to destroy unwanted items (/disposal).")
final class DisposalModule {

private DisposalModule() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.enchant;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Lets players enchant items directly (/enchant).")
final class EnchantModule {

private EnchantModule() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.feed;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Restores a player's hunger and saturation (/feed).")
final class FeedModule {

private FeedModule() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.fireball;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Lets players launch fireballs (/fireball).")
final class FireballModule {

private FireballModule() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.fly;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Toggles flight mode for players (/fly).")
final class FlyModule {

private FlyModule() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.freeze;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Freezes a player in place until unfrozen (/freeze, /unfreeze).")
final class FreezeModule {

private FreezeModule() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.fullserverbypass;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Lets players with permission join even when the server is full.")
final class FullServerBypassModule {

private FullServerBypassModule() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.eternalcode.core.feature.fun;

import com.eternalcode.core.modules.ModuleDescription;

@ModuleDescription("Cosmetic screen-effect commands (catboy, demoscreen, elderguardian, endscreen).")
final class FunModule {

private FunModule() {
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.eternalcode.core.feature.catboy.CatboyService;
import com.eternalcode.core.injector.annotations.Inject;
import com.eternalcode.core.injector.annotations.component.Task;
import com.eternalcode.core.modules.GatedByModule;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.DyeColor;
import org.bukkit.Particle;
Expand All @@ -18,6 +19,7 @@
import java.util.concurrent.TimeUnit;

@Task(delay = 400L, period = 400L, unit = TimeUnit.MILLISECONDS)
@GatedByModule
class CatboyTask implements Runnable {

private static final String CATBOY_NAME = "Catboy";
Expand Down
Loading
Loading