Hulk Hub Core | 1.7-1.14 Support | 100% Configurable | Custom Tab | High Quality 1.0

Custom Hub Core, 1.7-1.14 Support, Cosmetics - Suitable for any server!
Supported versions
Tags
Tags
None
Hulk - The perfect hub plugin created for your server!

Any questions or problems, feel free to join discord: Coming soon - working on it.

  • Everything a NORMAL Hub core as along with:
  • Scoreboard
  • Custom Tab
  • Server selector
  • Player Visibility
  • Player Speed
  • Anti Grief
  • Disable / Enable Join message
  • Spawn System
  • Double Jump
  • No TPS Drops (20.0)

  • Quartz Support
  • Nucleus Support
  • Zoot Support
  • Portal Support
  • Vault Support
  • 1.7-1.14 Support

  • Fully configurable scoreboard.
  • Fully configurable tablist.
  • You can use any permission sytsem.
  • Fully configurable server selector.
  • Fully configurable player visibility to show or hide players.
  • Full server information status to be used as placeholders in Scoreboard, Tablist or in Server selector.
  • Allowing to use placeholders everywhere, even on Tablist, Scoreboard, Selector.

Dependencies
  • Any permission plugin
  • Vault / Nucleus / Zoot
Pricing
  • JAR - $5.00
  • SRC - $20.00
To be added:
  • EnderButt - Item to travel with.
  • Cosmetics - Cosmetics to use in the hub.
  • Prefixes - Have a tag before your rank.
Test Server
Contact me on MCM or Join the Discord.

Code:
package com.validhc.hulk;


import com.validhc.hulk.config.ItemsConfiguration;
import com.validhc.hulk.implemenation.queue.QueueImplementation;
import com.validhc.hulk.implemenation.rank.RankImplementation;
import com.validhc.hulk.implemenation.server.ServerImplementation;
import com.validhc.hulk.menu.MenuGenerator;
import com.validhc.hulk.menu.MenuTask;
import com.validhc.hulk.provider.ScoreboardProvider;
import com.validhc.hulk.provider.TabProvider;
import com.validhc.hulk.task.PlayerCountTask;

import io.github.thatkawaiisam.assemble.Assemble;
import io.github.thatkawaiisam.ziggurat.Ziggurat;

import lombok.Getter;
import lombok.Setter;
import org.bukkit.Material;

import com.validhc.hulk.menu.Menu;

import pro.javaproject.zoom.utils.CustomFile;
import pro.javaproject.zoom.utils.TaskUtil;
import pro.javaproject.zoom.utils.bukkit.ChatUtil;
import pro.javaproject.zoom.utils.bukkit.ItemBuilder;
import pro.javaproject.zoom.utils.bukkit.ListenerUtil;

import java.util.HashMap;
import java.util.Map;

public enum Hulk {

   INSTANCE;

   @Getter private HulkPlugin plugin;

   @Getter private CustomFile tabFile;
   @Getter private CustomFile scoreboardFile;
   @Getter private CustomFile itemsFile;
   @Getter private CustomFile menusFile;
   @Getter @Setter private Integer networkCount;

   @Getter private RankImplementation rankImplementation;
   @Getter private QueueImplementation queueImplementation;
   @Getter private ServerImplementation serverImplementation;

   @Getter private Map<String,Menu> menuCache;

   public void onEnable(HulkPlugin plugin) {
       this.plugin = plugin;

       this.tabFile = new CustomFile(this.plugin,"tab.yml");
       this.scoreboardFile = new CustomFile(this.plugin,"scoreboard.yml");
       this.itemsFile = new CustomFile(this.plugin,"items.yml");
       this.menusFile = new CustomFile(this.plugin,"menus.yml");

       this.networkCount = 0;
       this.rankImplementation = new RankImplementation();
       this.queueImplementation = new QueueImplementation();
       this.serverImplementation = new ServerImplementation();

       if (this.rankImplementation.getRankInterface() == null) {
           System.out.println("Failed to find a valid rank api.");
           this.plugin.getServer().shutdown();
           return;
       }

       if (this.queueImplementation.getQueueInterface() == null) {
           System.out.println("Failed to find a queue api.");
           this.plugin.getServer().shutdown();
           return;
       }

       ListenerUtil.loadListenersFromPackage(this.plugin,"com.validhc.hulk.listener");

       new Ziggurat(this.plugin,new TabProvider());
       new Assemble(this.plugin,new ScoreboardProvider());

       TaskUtil.asyncRepeating(this.plugin,new PlayerCountTask(),20);
       TaskUtil.asyncRepeating(this.plugin,new MenuTask(),30);

       this.menuCache = new HashMap<>();

       new MenuGenerator();

       for (String menu : menuCache.keySet()) {
           System.out.println(menu);
       }
   }

   public String getStatus(String server) {

       if  (!this.getServerImplementation().getServerInterface().exists(server)) {
           return ChatUtil.GRAY + "Fetching";
       }

       if (this.getServerImplementation().getServerInterface().isWhitelisted(server)) {
           return ChatUtil.WHITE + "Whitelisted";
       }

       if (!this.getServerImplementation().getServerInterface().isOnline(server)) {
           return ChatUtil.RED + "Offline";
       }

       return ChatUtil.GREEN + "Online";

   }

   public String getServerPlaceHolder(String string,String server) {
       return string
               .replace("{status}", !this.getServerImplementation().getServerInterface().exists(server) ? "Fetching" : Hulk.INSTANCE.getStatus(server))
               .replace("{players}", !this.getServerImplementation().getServerInterface().exists(server) ? "0" : "" + this.getServerImplementation().getServerInterface().getOnlinePlayers(server))
               .replace("{max-players}", !this.getServerImplementation().getServerInterface().exists(server) ? "0" : "" + this.getServerImplementation().getServerInterface().getMaxPlayers(server));
   }

   public org.bukkit.inventory.ItemStack getVisibilityItem(boolean on) {

       final String path = on ? "on":"off";

       return new ItemBuilder(Material.valueOf(this.getItemsFile().getConfig().getString("hide-" + path + ".material")))
               .name(ItemsConfiguration.getString("hide-" + path + ".name"))
               .durability(this.getItemsFile().getConfig().getInt("hide-" + path + ".durability"))
               .build();
   }

}
Top
You need to upgrade!
Our dark style is reserved for our Premium members. Upgrade here.