Skip to content

Commit a5d9241

Browse files
committed
Initial Gold Mine Setup
1 parent 21421f7 commit a5d9241

13 files changed

Lines changed: 251 additions & 4 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,5 +45,6 @@ build/
4545
### Islands ###
4646
/configuration/skyblock/islands/hypixel_skyblock_island_template/
4747
/configuration/skyblock/islands/hypixel_skyblock_hub/
48+
/configuration/skyblock/islands/hypixel_skyblock_gold_mine/
4849
/configuration/hypixel_prototype_lobby/
4950
.gradle/

commons/src/main/java/net/swofty/commons/CustomWorlds.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
public enum CustomWorlds {
44
SKYBLOCK_ISLAND_TEMPLATE("hypixel_skyblock_island_template"),
55
SKYBLOCK_HUB("hypixel_skyblock_hub"),
6+
SKYBLOCK_GOLD_MINE("hypixel_skyblock_gold_mine"),
67
SKYBLOCK_DUNGEON_HUB("hypixel_skyblock_dungeon_hub"),
78
PROTOTYPE_LOBBY("hypixel_prototype_lobby"),
89
BEDWARS_LOBBY("hypixel_bedwars_lobby"),

commons/src/main/java/net/swofty/commons/ServerType.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ public enum ServerType {
88
SKYBLOCK_HUB(true),
99
SKYBLOCK_DUNGEON_HUB(true),
1010
SKYBLOCK_THE_FARMING_ISLANDS(true),
11+
SKYBLOCK_GOLD_MINE(true),
1112
PROTOTYPE_LOBBY(false),
1213
BEDWARS_LOBBY(false),
1314
BEDWARS_GAME(false),

loader/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ dependencies {
2727
implementation(project(":type.island"))
2828
implementation(project(":type.hub"))
2929
implementation(project(":type.thefarmingislands"))
30+
implementation(project(":type.goldmine"))
3031
implementation(project(":type.dungeonhub"))
3132
implementation(project(":type.skyblockgeneric"))
3233
implementation(project(":type.prototypelobby"))

loader/src/main/java/net/swofty/loader/Hypixel.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,14 @@ public static void main(String[] args) {
106106
ServerType type = clazz.getDeclaredConstructor().newInstance().getType();
107107
Logger.info("Found TypeLoader: " + type.name());
108108
return type == serverType;
109-
} catch (InstantiationException | IllegalAccessException | InvocationTargetException |
110-
NoSuchMethodException e) {
109+
} catch (Exception e) {
110+
Logger.error("Failed to init TypeLoader " + clazz.getName(), e);
111111
return false;
112112
}
113-
}).findFirst().orElse(null).getDeclaredConstructor().newInstance();
113+
}).findFirst().orElseThrow(() ->
114+
new IllegalStateException("No TypeLoader found for server type " + serverType)
115+
).getDeclaredConstructor().newInstance();
116+
114117
new HypixelGenericLoader(typeLoader).initialize(minecraftServer);
115118

116119
/**

settings.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ include(":loader")
1414

1515
include(":type.prototypelobby")
1616
include(":type.thefarmingislands")
17+
include(":type.goldmine")
1718
include(":type.island")
1819
include(":type.hub")
1920
include(":type.dungeonhub")

type.goldmine/build.gradle.kts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
plugins {
2+
java
3+
}
4+
5+
group = "net.swofty"
6+
version = "3.0"
7+
8+
java {
9+
sourceCompatibility = JavaVersion.VERSION_21
10+
targetCompatibility = JavaVersion.VERSION_21
11+
toolchain {
12+
languageVersion.set(JavaLanguageVersion.of(21))
13+
}
14+
}
15+
16+
dependencies {
17+
implementation(project(":type.skyblockgeneric"))
18+
implementation(project(":type.generic"))
19+
implementation(project(":commons"))
20+
implementation(project(":proxy.api"))
21+
compileOnly("net.minestom:minestom:2025.08.18-1.21.8") {
22+
exclude(group = "org.jboss.shrinkwrap.resolver", module = "shrinkwrap-resolver-depchain")
23+
}
24+
implementation("org.tinylog:tinylog-api:2.7.0")
25+
implementation("org.tinylog:tinylog-impl:2.7.0")
26+
}
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
package net.swofty.type.goldmine;
2+
3+
import net.minestom.server.MinecraftServer;
4+
import net.minestom.server.coordinate.Pos;
5+
import net.swofty.commons.CustomWorlds;
6+
import net.swofty.commons.ServerType;
7+
import net.swofty.commons.ServiceType;
8+
import net.swofty.proxyapi.redis.ProxyToClient;
9+
import net.swofty.proxyapi.redis.ServiceToClient;
10+
import net.swofty.type.generic.SkyBlockTypeLoader;
11+
import net.swofty.type.generic.entity.animalnpc.HypixelAnimalNPC;
12+
import net.swofty.type.generic.entity.npc.HypixelNPC;
13+
import net.swofty.type.generic.entity.villager.HypixelVillagerNPC;
14+
import net.swofty.type.generic.event.HypixelEventClass;
15+
import net.swofty.type.generic.tab.TablistManager;
16+
import net.swofty.type.generic.tab.TablistModule;
17+
import net.swofty.type.goldmine.tab.GoldMineServerModule;
18+
import net.swofty.type.skyblockgeneric.tabmodules.AccountInformationModule;
19+
import net.swofty.type.skyblockgeneric.tabmodules.SkyBlockPlayersOnlineModule;
20+
import net.swofty.type.skyblockgeneric.SkyBlockGenericLoader;
21+
import org.jetbrains.annotations.Nullable;
22+
import org.tinylog.Logger;
23+
24+
import java.util.ArrayList;
25+
import java.util.List;
26+
import java.util.stream.Collectors;
27+
28+
public class TypeGoldMineLoader implements SkyBlockTypeLoader {
29+
@Override
30+
public ServerType getType() {
31+
return ServerType.SKYBLOCK_GOLD_MINE;
32+
}
33+
34+
@Override
35+
public void onInitialize(MinecraftServer server) {
36+
Logger.info("TypeGoldMineLoader initialized!");
37+
}
38+
39+
@Override
40+
public void afterInitialize(MinecraftServer server) {
41+
42+
}
43+
44+
@Override
45+
public LoaderValues getLoaderValues() {
46+
return new LoaderValues(
47+
(type) -> switch (type) {
48+
default -> new Pos(-4, 74, -271, -180, 0); // TODO: UPDATE THIS POSITION TO PROPER LOCATION
49+
}, // Spawn position
50+
true // Announce death messages
51+
);
52+
}
53+
54+
public TablistManager getTablistManager() {
55+
return new TablistManager() {
56+
@Override
57+
public List<TablistModule> getModules() {
58+
return new ArrayList<>(List.of(
59+
new SkyBlockPlayersOnlineModule(1),
60+
new SkyBlockPlayersOnlineModule(2),
61+
new GoldMineServerModule(),
62+
new AccountInformationModule()
63+
));
64+
}
65+
};
66+
}
67+
68+
@Override
69+
public List<HypixelEventClass> getTraditionalEvents() {
70+
return SkyBlockGenericLoader.loopThroughPackage(
71+
"net.swofty.type.goldmine.events",
72+
HypixelEventClass.class
73+
).collect(Collectors.toList());
74+
}
75+
76+
@Override
77+
public List<HypixelEventClass> getCustomEvents() {
78+
return new ArrayList<>();
79+
}
80+
81+
@Override
82+
public List<HypixelNPC> getNPCs() {
83+
List<HypixelNPC> npcs = new ArrayList<>();
84+
85+
npcs.addAll(SkyBlockGenericLoader.loopThroughPackage(
86+
"net.swofty.type.goldmine.npcs",
87+
HypixelNPC.class
88+
).toList());
89+
90+
return npcs;
91+
}
92+
93+
@Override
94+
public List<ServiceToClient> getServiceRedisListeners() {
95+
return List.of();
96+
}
97+
98+
@Override
99+
public List<ProxyToClient> getProxyRedisListeners() {
100+
return List.of();
101+
}
102+
103+
@Override
104+
public List<HypixelVillagerNPC> getVillagerNPCs() {
105+
return new ArrayList<>(SkyBlockGenericLoader.loopThroughPackage(
106+
"net.swofty.type.goldmine.villagers",
107+
HypixelVillagerNPC.class
108+
).toList());
109+
}
110+
111+
@Override
112+
public List<HypixelAnimalNPC> getAnimalNPCs() {
113+
return new ArrayList<>();
114+
}
115+
116+
@Override
117+
public List<ServiceType> getRequiredServices() {
118+
return new ArrayList<>(List.of(ServiceType.DATA_MUTEX));
119+
}
120+
121+
@Override
122+
public @Nullable CustomWorlds getMainInstance() {
123+
return CustomWorlds.SKYBLOCK_GOLD_MINE;
124+
}
125+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package net.swofty.type.goldmine.events;
2+
3+
import lombok.SneakyThrows;
4+
import net.minestom.server.event.player.AsyncPlayerConfigurationEvent;
5+
import net.swofty.type.generic.HypixelConst;
6+
import net.swofty.type.generic.event.EventNodes;
7+
import net.swofty.type.generic.event.HypixelEvent;
8+
import net.swofty.type.generic.event.HypixelEventClass;
9+
import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
10+
11+
public class ActionPlayerJoin implements HypixelEventClass {
12+
13+
@SneakyThrows
14+
@HypixelEvent(node = EventNodes.PLAYER, requireDataLoaded = false)
15+
public void run(AsyncPlayerConfigurationEvent event) {
16+
17+
final SkyBlockPlayer player = (SkyBlockPlayer) event.getPlayer();
18+
19+
event.setSpawningInstance(HypixelConst.getInstanceContainer());
20+
player.setRespawnPoint(HypixelConst.getTypeLoader()
21+
.getLoaderValues()
22+
.spawnPosition()
23+
.apply(player.getOriginServer())
24+
);
25+
}
26+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package net.swofty.type.goldmine.tab;
2+
3+
import net.swofty.type.generic.HypixelConst;
4+
import net.swofty.type.generic.tab.TablistModule;
5+
import net.swofty.type.generic.tab.TablistSkinRegistry;
6+
import net.swofty.type.generic.user.HypixelPlayer;
7+
8+
import java.util.ArrayList;
9+
import java.util.List;
10+
11+
public class GoldMineServerModule extends TablistModule {
12+
@Override
13+
public List<TablistEntry> getEntries(HypixelPlayer player) {
14+
ArrayList<TablistEntry> entries = new ArrayList<>(List.of(
15+
new TablistEntry(getCentered("§3§lServer Info"), TablistSkinRegistry.CYAN)
16+
));
17+
18+
entries.add(new TablistEntry("§b§lArea: §7Gold Mine", TablistSkinRegistry.GRAY));
19+
entries.add(new TablistEntry(" Server: §8" + HypixelConst.getServerName(), TablistSkinRegistry.GRAY));
20+
21+
fillRestWithGray(entries);
22+
23+
return entries;
24+
}
25+
}

0 commit comments

Comments
 (0)