From ff54aab560ccb112ebc1321c58a3d0857812eee9 Mon Sep 17 00:00:00 2001 From: Sam Date: Sun, 24 Sep 2017 21:25:04 +0100 Subject: [PATCH] More hub changes --- .../ui/page/AchievementMainPage.java | 4 +- .../achievement/ui/page/AchievementPage.java | 2 +- .../achievement/ui/page/ArcadeMainPage.java | 2 +- .../core/achievement/ui/page/UHCMainPage.java | 2 +- .../mineplex/core/newnpc/NewNPCManager.java | 9 +- .../core/newnpc/NewNPCRepository.java | 2 +- .../core/profile/ui/ProfileMainPage.java | 2 +- .../src/mineplex/hub/HubManager.java | 10 +- .../src/mineplex/hub/hubgame/CycledGame.java | 91 +------------------ .../src/mineplex/hub/hubgame/HubGame.java | 82 ++++++++++++++--- .../mineplex/hub/hubgame/HubGameManager.java | 8 +- .../src/mineplex/hub/hubgame/HubGameType.java | 4 + .../src/mineplex/hub/hubgame/SimpleGame.java | 31 ++++++- .../common/damage/DamageComponent.java | 14 +++ .../hub/plugin/HalloweenHubPlugin.java | 46 ++++++++++ .../HubType.java => plugin/HubPlugin.java} | 17 ++-- 16 files changed, 199 insertions(+), 127 deletions(-) create mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/plugin/HalloweenHubPlugin.java rename Plugins/Mineplex.Hub/src/mineplex/hub/{events/HubType.java => plugin/HubPlugin.java} (66%) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/AchievementMainPage.java b/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/AchievementMainPage.java index bab3f5efd..9282ebda0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/AchievementMainPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/AchievementMainPage.java @@ -68,8 +68,8 @@ public class AchievementMainPage extends ShopPageBase lore = new ArrayList(); lore.add(" "); - category.addStats(getClientManager(), _statsManager, lore, category == AchievementCategory.GLOBAL ? 10 : 2, - getPlayer(), _targetName, _targetStats); +// category.addStats(getClientManager(), _statsManager, lore, category == AchievementCategory.GLOBAL ? 10 : 2, +// getPlayer(), _targetName, _targetStats); lore.add(" "); addAchievements(category, lore, 9); lore.add(ChatColor.RESET + "Click for more details!"); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/AchievementPage.java b/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/AchievementPage.java index e5d931a7c..27106c9b4 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/AchievementPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/AchievementPage.java @@ -236,7 +236,7 @@ public class AchievementPage extends ShopPageBase lore = new ArrayList(); lore.add(" "); - _category.addStats(getClientManager(), _statsManager, lore, getPlayer(), _targetName, _targetStats); + //_category.addStats(getClientManager(), _statsManager, lore, getPlayer(), _targetName, _targetStats); ItemStack item = new ItemStack(material); ItemMeta meta = item.getItemMeta(); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/ArcadeMainPage.java b/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/ArcadeMainPage.java index b61471755..b791160d3 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/ArcadeMainPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/ArcadeMainPage.java @@ -41,7 +41,7 @@ public class ArcadeMainPage extends AchievementMainPage ArrayList lore = new ArrayList(); lore.add(" "); - category.addStats(getClientManager(), _statsManager, lore, 2, getPlayer(), _targetName, _targetStats); + //category.addStats(getClientManager(), _statsManager, lore, 2, getPlayer(), _targetName, _targetStats); lore.add(" "); addAchievements(category, lore, 9); lore.add(" "); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/UHCMainPage.java b/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/UHCMainPage.java index a020aa599..7d5106f22 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/UHCMainPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/UHCMainPage.java @@ -41,7 +41,7 @@ public class UHCMainPage extends AchievementMainPage ArrayList lore = new ArrayList(); lore.add(" "); - category.addStats(getClientManager(), _statsManager, lore, getPlayer(), _targetName, _targetStats); + //category.addStats(getClientManager(), _statsManager, lore, getPlayer(), _targetName, _targetStats); lore.add(" "); addAchievements(category, lore, 9); lore.add(" "); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/newnpc/NewNPCManager.java b/Plugins/Mineplex.Core/src/mineplex/core/newnpc/NewNPCManager.java index 5d0d772dc..5ae259d2e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/newnpc/NewNPCManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/newnpc/NewNPCManager.java @@ -81,7 +81,13 @@ public class NewNPCManager extends MiniPlugin // Loading NPCs on the main thread makes sure that _npcs is populated before anything tries to spawn NPCs. loadNPCs(); // Any NPC with the metadata DUMMY will always be spawned regardless, useful for testing designs - spawnNPCs("DUMMY", null); + spawnNPCs("DUMMY", npc -> + { + if (npc instanceof PlayerNPC) + { + npc.getNameTag(); + } + }); generatePermissions(); } @@ -232,7 +238,6 @@ public class NewNPCManager extends MiniPlugin /** * Used by {@link NPCMoveCommand}. Has no other purpose. */ - @Deprecated public void setPlayerTeleport(Player player) { _teleportMap.put(player, player.getLocation()); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/newnpc/NewNPCRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/newnpc/NewNPCRepository.java index 92b8db4f9..7858eeea2 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/newnpc/NewNPCRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/newnpc/NewNPCRepository.java @@ -30,7 +30,7 @@ class NewNPCRepository extends RepositoryBase /** * A SQL statement that inserts an entry and returns the id field generated. */ - private static final String INSERT_NPC = "INSERT INTO newNPCs (entity_type, name, world, x, y, z, yaw, pitch, in_hand, in_hand_data, helmet, chestplate, leggings, boots, metadata, skinValue, skinSignature) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);"; + private static final String INSERT_NPC = "INSERT INTO newNPCs (entity_type, name, world, x, y, z, yaw, pitch, in_hand, in_hand_data, helmet, chestplate, leggings, boots, metadata, skinValue, skinSignature) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);"; /** * A SQL statement that deletes an entry with a specific id field. */ diff --git a/Plugins/Mineplex.Core/src/mineplex/core/profile/ui/ProfileMainPage.java b/Plugins/Mineplex.Core/src/mineplex/core/profile/ui/ProfileMainPage.java index a85781b3e..d1236cae6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/profile/ui/ProfileMainPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/profile/ui/ProfileMainPage.java @@ -73,7 +73,7 @@ public class ProfileMainPage extends ShopPageBase private void addStatsButton() { - addButton(11, STATS_ITEM, new PageChangeButton()); + //addButton(11, STATS_ITEM, new PageChangeButton()); } private class PageChangeButton implements IButton diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index d2e79ed80..87e46d5d8 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -90,7 +90,8 @@ import mineplex.core.updater.event.UpdateEvent; import mineplex.core.youtube.YoutubeManager; import mineplex.hub.commands.GadgetToggle; import mineplex.hub.doublejump.JumpManager; -import mineplex.hub.events.HubType; +import mineplex.hub.plugin.HalloweenHubPlugin; +import mineplex.hub.plugin.HubPlugin; import mineplex.hub.gamemode.GameModeManager; import mineplex.hub.hubgame.HubGameManager; import mineplex.hub.modules.ForcefieldManager; @@ -137,6 +138,8 @@ public class HubManager extends MiniClientPlugin implements IChatMess private final JumpManager _jumpManager; private final HologramManager _hologramManager; + private final HubPlugin _hubPlugin; + private final WorldDataModule _worldData; private final Location _spawn; @@ -184,7 +187,7 @@ public class HubManager extends MiniClientPlugin implements IChatMess new MavericksManager(_plugin, cosmeticManager, hologramManager, this); new SoccerManager(this, _gadgetManager); - new KothManager(this, _gadgetManager); + //new KothManager(this, _gadgetManager); new MenuManager(_plugin); new NewInteractionsManager(); @@ -229,7 +232,7 @@ public class HubManager extends MiniClientPlugin implements IChatMess require(ProfileManager.class); require(HubPlayerManager.class); - new HubType(); + _hubPlugin = new HalloweenHubPlugin(); generatePermissions(); } @@ -285,7 +288,6 @@ public class HubManager extends MiniClientPlugin implements IChatMess runSyncLater(Bukkit::shutdown, 40); }, 60); - } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/CycledGame.java b/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/CycledGame.java index 777451105..c6014618d 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/CycledGame.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/CycledGame.java @@ -1,33 +1,18 @@ package mineplex.hub.hubgame; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import org.bukkit.Location; import org.bukkit.entity.Player; -import org.bukkit.event.Listener; -import mineplex.core.Managers; -import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilServer; -import mineplex.core.lifetimes.PhasedLifetime; -import mineplex.core.newnpc.NPC; -import mineplex.hub.hubgame.CycledGame.GameState; -import mineplex.hub.hubgame.common.HubGameComponent; import mineplex.hub.hubgame.event.HubGamePlayerDeathEvent; import mineplex.hub.hubgame.event.HubGameStateChangeEvent; -import mineplex.hub.world.WorldDataModule; -public abstract class CycledGame extends PhasedLifetime implements HubGame, Listener +public abstract class CycledGame extends HubGame { - private final HubGameManager _manager; - private final Map>, HubGameComponent> _components; - // Game Properties - private final HubGameType _type; private GameState _state; // Game Timer @@ -39,21 +24,13 @@ public abstract class CycledGame extends PhasedLifetime implements Hu private final List _allPlayers; private final List _places; - // NPC - private NPC _npc; - // Lobby - private Location _spawn; private int _countdown; - // World - protected WorldDataModule _worldData; - public CycledGame(HubGameManager manager, HubGameType type) { - _manager = manager; - _components = new HashMap<>(); - _type = type; + super(manager, type); + _state = GameState.Waiting; _queuedPlayers = new ArrayList<>(); @@ -63,41 +40,7 @@ public abstract class CycledGame extends PhasedLifetime implements Hu _countdown = -1; - _worldData = Managers.require(WorldDataModule.class); - - _spawn = _worldData.getCustomLocation(type.name() + " SPAWN").get(0); - start(_state); - UtilServer.RegisterEvents(this); - } - - @Override - public HubGameManager getManager() - { - return _manager; - } - - @Override - public void setNpc(NPC npc) - { - _npc = npc; - - if (npc.getEntity() != null) - { - _spawn.setYaw(UtilAlg.GetYaw(UtilAlg.getTrajectory(_spawn, npc.getEntity().getLocation()))); - } - } - - @Override - public NPC getNpc() - { - return _npc; - } - - @Override - public WorldDataModule getWorldData() - { - return _worldData; } @Override @@ -111,26 +54,6 @@ public abstract class CycledGame extends PhasedLifetime implements Hu return _allPlayers; } - @Override - public Location getSpawn() - { - return _spawn; - } - - @SuppressWarnings("unchecked") - protected > T registerComponent(T instance) - { - _components.put((Class>) instance.getClass(), instance); - register(instance); - return instance; - } - - @SuppressWarnings("unchecked") - public > T getComponent(Class clazz) - { - return (T) _components.get(clazz); - } - /* Game Events */ @@ -180,6 +103,7 @@ public abstract class CycledGame extends PhasedLifetime implements Hu UtilServer.CallEvent(event); } + @Override public void onCleanupPlayer(Player player) { _queuedPlayers.remove(player); @@ -193,11 +117,6 @@ public abstract class CycledGame extends PhasedLifetime implements Hu return _state == GameState.Live; } - public HubGameType getGameType() - { - return _type; - } - public void setState(GameState state) { _state = state; @@ -234,7 +153,7 @@ public abstract class CycledGame extends PhasedLifetime implements Hu public List getNextPlayers() { - return _queuedPlayers.subList(0, Math.min(_queuedPlayers.size(), _type.getMaxPlayers())); + return _queuedPlayers.subList(0, Math.min(_queuedPlayers.size(), getGameType().getMaxPlayers())); } public List getPlaces() diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/HubGame.java b/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/HubGame.java index 68234f21c..150853d8a 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/HubGame.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/HubGame.java @@ -1,47 +1,103 @@ package mineplex.hub.hubgame; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.bukkit.Location; import org.bukkit.entity.Player; +import org.bukkit.event.Listener; +import mineplex.core.Managers; import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilServer; +import mineplex.core.lifetimes.PhasedLifetime; import mineplex.core.newnpc.NPC; +import mineplex.hub.hubgame.CycledGame.GameState; +import mineplex.hub.hubgame.common.HubGameComponent; import mineplex.hub.hubgame.ui.HubGamePage; import mineplex.hub.world.WorldDataModule; -public interface HubGame +public abstract class HubGame extends PhasedLifetime implements Listener { - HubGameManager getManager(); + private final HubGameManager _manager; + private final HubGameType _type; + private final Map>, HubGameComponent> _components; - HubGameType getGameType(); + protected final WorldDataModule _worldData; - void setNpc(NPC npc); + private final Location _spawn; - NPC getNpc(); + public HubGame(HubGameManager manager, HubGameType type) + { + _manager = manager; + _type = type; + _components = new HashMap<>(); - WorldDataModule getWorldData(); + _worldData = Managers.require(WorldDataModule.class); + _spawn = _worldData.getCustomLocation(type.name() + " SPAWN").get(0); - Location getSpawn(); + start(GameState.Waiting); + UtilServer.RegisterEvents(this); + } - void onPlayerDeath(Player player); + public abstract void onPlayerDeath(Player player); - List getAlivePlayers(); + public abstract List getAlivePlayers(); - default boolean isAlive(Player player) + public abstract void onCleanupPlayer(Player player); + + public HubGameManager getManager() + { + return _manager; + } + + public HubGameType getGameType() + { + return _type; + } + + @SuppressWarnings("unchecked") + protected > T registerComponent(T instance) + { + _components.put((Class>) instance.getClass(), instance); + register(instance); + return instance; + } + + @SuppressWarnings("unchecked") + public > T getComponent(Class clazz) + { + return (T) _components.get(clazz); + } + + public void setNpc(NPC npc) + { + if (npc.getEntity() != null) + { + _spawn.setYaw(UtilAlg.GetYaw(UtilAlg.getTrajectory(_spawn, npc.getEntity().getLocation()))); + } + } + + public Location getSpawn() + { + return _spawn; + } + + public boolean isAlive(Player player) { return getAlivePlayers().contains(player); } - default void announce(String message) + public void announce(String message) { getAlivePlayers().forEach(player -> player.sendMessage(F.main(getManager().getName(), message))); } - default HubGamePage getInformationPage(Player player) + public HubGamePage getInformationPage(Player player) { return new HubGamePage<>(getManager(), getManager().getShop(), getManager().getClientManager(), getManager().getDonationManager(), player, this); } - } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/HubGameManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/HubGameManager.java index 42058282f..7aa439ecb 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/HubGameManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/HubGameManager.java @@ -101,13 +101,7 @@ public class HubGameManager extends MiniPlugin @EventHandler public void playerQuit(PlayerQuitEvent event) { - _games.forEach(game -> - { - if (game instanceof CycledGame) - { - ((CycledGame) game).onCleanupPlayer(event.getPlayer()); - } - }); + _games.forEach(game -> game.onCleanupPlayer(event.getPlayer())); } @EventHandler diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/HubGameType.java b/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/HubGameType.java index d6f770cfc..5b7990525 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/HubGameType.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/HubGameType.java @@ -20,6 +20,10 @@ public enum HubGameType "You can place blocks!", "Kill your opponent to win!" }, new ItemStack(Material.DIAMOND_SWORD), 2, 2), + FOOTBALL("Soccer", new String[] + { + + }, new ItemStack(Material.SLIME_BALL), 1, 6), ; private final String _name; diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/SimpleGame.java b/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/SimpleGame.java index 5c2de632a..5d1910bbf 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/SimpleGame.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/SimpleGame.java @@ -1,8 +1,37 @@ package mineplex.hub.hubgame; -public class SimpleGame +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.entity.Player; + +public class SimpleGame extends HubGame { + private final List _players; + public SimpleGame(HubGameManager manager, HubGameType type) + { + super(manager, type); + _players = new ArrayList<>(); + } + + @Override + public void onPlayerDeath(Player player) + { + player.teleport(getSpawn()); + } + + @Override + public List getAlivePlayers() + { + return _players; + } + + @Override + public void onCleanupPlayer(Player player) + { + _players.remove(player); + } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/common/damage/DamageComponent.java b/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/common/damage/DamageComponent.java index 5cacf5806..9c4e309de 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/common/damage/DamageComponent.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/common/damage/DamageComponent.java @@ -13,6 +13,7 @@ import mineplex.hub.hubgame.HubGame; import mineplex.hub.hubgame.common.HubGameComponent; import mineplex.hub.hubgame.event.HubGameStateChangeEvent; import mineplex.minecraft.game.core.combat.event.CombatDeathEvent; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; public class DamageComponent extends HubGameComponent { @@ -68,6 +69,19 @@ public class DamageComponent extends HubGameComponent event.setCancelled(false); } + @EventHandler + public void increaseKnockback(CustomDamageEvent event) + { + Player damagee = event.GetDamageePlayer(); + + if (damagee == null || !_game.isAlive(damagee)) + { + return; + } + + event.AddKnockback("Damage Component", 1.4); + } + @EventHandler public void playerDeath(CombatDeathEvent event) { diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/plugin/HalloweenHubPlugin.java b/Plugins/Mineplex.Hub/src/mineplex/hub/plugin/HalloweenHubPlugin.java new file mode 100644 index 000000000..13e9a2f33 --- /dev/null +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/plugin/HalloweenHubPlugin.java @@ -0,0 +1,46 @@ +package mineplex.hub.plugin; + +import net.md_5.bungee.api.ChatColor; + +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTextTop; +import mineplex.core.titles.tracks.custom.ScrollAnimation; +import mineplex.core.updater.UpdateType; +import mineplex.core.utils.UtilScheduler; + +public class HalloweenHubPlugin extends HubPlugin +{ + + private final String[] NEWS_TEXT = new ScrollAnimation("HAPPY HALLOWEEN") + .withPrimaryColour(ChatColor.GOLD) + .withSecondaryColour(ChatColor.WHITE) + .withTertiaryColour(ChatColor.YELLOW) + .bold() + .build(); + + private int _newsIndex; + + public HalloweenHubPlugin() + { + super("Halloween"); + + _newsManager.setEnabled(false); + UtilScheduler.runEvery(UpdateType.FASTEST, this::displayNews); + } + + @Override + protected void setupWorld() + { + _manager.GetSpawn().getWorld().setTime(18000); + } + + private void displayNews() + { + if (++_newsIndex == NEWS_TEXT.length) + { + _newsIndex = 0; + } + + UtilTextTop.display(NEWS_TEXT[_newsIndex], UtilServer.getPlayers()); + } +} diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/events/HubType.java b/Plugins/Mineplex.Hub/src/mineplex/hub/plugin/HubPlugin.java similarity index 66% rename from Plugins/Mineplex.Hub/src/mineplex/hub/events/HubType.java rename to Plugins/Mineplex.Hub/src/mineplex/hub/plugin/HubPlugin.java index 913fbed2c..22a915753 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/events/HubType.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/plugin/HubPlugin.java @@ -1,4 +1,4 @@ -package mineplex.hub.events; +package mineplex.hub.plugin; import mineplex.core.MiniPlugin; import mineplex.hub.HubManager; @@ -6,33 +6,36 @@ import mineplex.hub.hubgame.HubGame; import mineplex.hub.hubgame.HubGameManager; import mineplex.hub.hubgame.duel.Duels; import mineplex.hub.hubgame.tron.Tron; +import mineplex.hub.news.NewsManager; /** - * Hub Types are effectively managers for specific events within the hub. Such as a Halloween or Christmas variants of the hub. - * HubType means that lots of + * Hub Plugins are effectively managers for specific events within the hub. Such as a Halloween or Christmas variants of the hub. + * HubPlugin means that lots of *
- *     if (HubType == HubType.SomeHubType)
+ *     if (HubPlugin == HubPlugin.SomeHubVariant)
  * 
* * checks aren't needed within the entire hub, making it cleaner and easier to maintain. */ -public class HubType extends MiniPlugin +public class HubPlugin extends MiniPlugin { protected final HubManager _manager; protected final HubGameManager _hubGameManager; + protected final NewsManager _newsManager; - public HubType() + public HubPlugin() { this("Normal"); } - public HubType(String moduleName) + public HubPlugin(String moduleName) { super(moduleName); _manager = require(HubManager.class); _hubGameManager = require(HubGameManager.class); + _newsManager = require(NewsManager.class); setupWorld(); addHubGames();