Skip to content

Commit 4c9b8f5

Browse files
authored
Merge pull request #588 from ItzKatze/master
Feat: more skyblock islands
2 parents f3110d5 + e97dd85 commit 4c9b8f5

25 files changed

Lines changed: 1044 additions & 30 deletions

File tree

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@ public enum CustomWorlds {
55
SKYBLOCK_HUB("hypixel_skyblock_hub"),
66
SKYBLOCK_SPIDERS_DEN("hypixel_skyblock_spiders_den"),
77
SKYBLOCK_THE_END("hypixel_skyblock_the_end"),
8+
SKYBLOCK_CRIMSON_ISLE("hypixel_skyblock_crimson_isle"),
89
SKYBLOCK_GOLD_MINE("hypixel_skyblock_gold_mine"),
910
SKYBLOCK_DEEP_CAVERNS("hypixel_skyblock_deep_caverns"),
1011
SKYBLOCK_DWARVEN_MINES("hypixel_skyblock_dwarven_mines"),
12+
SKYBLOCK_THE_PARK("hypixel_skyblock_the_park"),
13+
SKYBLOCK_GALATEA("hypixel_skyblock_galatea"),
14+
SKYBLOCK_BACKWATER_BAYOU("hypixel_skyblock_backwater_bayou"),
1115
SKYBLOCK_DUNGEON_HUB("hypixel_skyblock_dungeon_hub"),
1216
PROTOTYPE_LOBBY("hypixel_prototype_lobby"),
1317
BEDWARS_LOBBY("hypixel_bedwars_lobby"),

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,15 @@ public enum ServerType {
88
SKYBLOCK_HUB(true),
99
SKYBLOCK_SPIDERS_DEN(true),
1010
SKYBLOCK_THE_END(true),
11+
SKYBLOCK_CRIMSON_ISLE(true),
1112
SKYBLOCK_DUNGEON_HUB(true),
1213
SKYBLOCK_THE_FARMING_ISLANDS(true),
1314
SKYBLOCK_GOLD_MINE(true),
1415
SKYBLOCK_DEEP_CAVERNS(true),
1516
SKYBLOCK_DWARVEN_MINES(true),
17+
SKYBLOCK_THE_PARK(true),
18+
SKYBLOCK_GALATEA(true),
19+
SKYBLOCK_BACKWATER_BAYOU(true),
1620
PROTOTYPE_LOBBY(false),
1721
BEDWARS_LOBBY(false),
1822
BEDWARS_GAME(false),

loader/build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,13 @@ dependencies {
2929
implementation(project(":type.thefarmingislands"))
3030
implementation(project(":type.spidersden"))
3131
implementation(project(":type.theend"))
32+
implementation(project(":type.crimsonisle"))
3233
implementation(project(":type.goldmine"))
3334
implementation(project(":type.deepcaverns"))
3435
implementation(project(":type.dwarvenmines"))
36+
implementation(project(":type.thepark"))
37+
implementation(project(":type.galatea"))
38+
implementation(project(":type.backwaterbayou"))
3539
implementation(project(":type.dungeonhub"))
3640
implementation(project(":type.skyblockgeneric"))
3741
implementation(project(":type.prototypelobby"))

settings.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,13 @@ include(":type.prototypelobby")
1818
include(":type.thefarmingislands")
1919
include("type.spidersden")
2020
include("type.theend")
21+
include("type.crimsonisle")
2122
include(":type.goldmine")
2223
include(":type.deepcaverns")
2324
include(":type.dwarvenmines")
25+
include("type.thepark")
26+
include("type.galatea")
27+
include("type.backwaterbayou")
2428
include(":type.island")
2529
include(":type.hub")
2630
include(":type.dungeonhub")
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
plugins {
2+
java
3+
}
4+
5+
group = "net.swofty"
6+
version = "3.0"
7+
8+
java {
9+
sourceCompatibility = JavaVersion.VERSION_25
10+
targetCompatibility = JavaVersion.VERSION_25
11+
toolchain {
12+
languageVersion.set(JavaLanguageVersion.of(25))
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.12.20c-1.21.11") {
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+
implementation("org.joml:joml:1.10.8")
27+
}
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
package net.swofty.type.backwaterbayou;
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.backwaterbayou.tab.BackwaterBayouServerModule;
11+
import net.swofty.type.generic.SkyBlockTypeLoader;
12+
import net.swofty.type.generic.entity.npc.HypixelNPC;
13+
import net.swofty.type.generic.event.HypixelEventClass;
14+
import net.swofty.type.generic.tab.TablistManager;
15+
import net.swofty.type.generic.tab.TablistModule;
16+
import net.swofty.type.skyblockgeneric.SkyBlockGenericLoader;
17+
import net.swofty.type.skyblockgeneric.tabmodules.AccountInformationModule;
18+
import net.swofty.type.skyblockgeneric.tabmodules.SkyBlockPlayersOnlineModule;
19+
import org.jetbrains.annotations.Nullable;
20+
import org.tinylog.Logger;
21+
22+
import java.util.ArrayList;
23+
import java.util.List;
24+
import java.util.stream.Collectors;
25+
26+
public class TypeBackwaterBayouLoader implements SkyBlockTypeLoader {
27+
@Override
28+
public ServerType getType() {
29+
return ServerType.SKYBLOCK_BACKWATER_BAYOU;
30+
}
31+
32+
@Override
33+
public void onInitialize(MinecraftServer server) {
34+
Logger.info("TypeBackwaterBayouLoader initialized!");
35+
}
36+
37+
@Override
38+
public void afterInitialize(MinecraftServer server) {
39+
40+
}
41+
42+
@Override
43+
public LoaderValues getLoaderValues() {
44+
return new LoaderValues(
45+
(type) -> switch (type) {
46+
default -> new Pos(-12.5, 74, -10.5, -55, 0);
47+
}, // Spawn position
48+
true // Announce death messages
49+
);
50+
}
51+
52+
public TablistManager getTablistManager() {
53+
return new TablistManager() {
54+
@Override
55+
public List<TablistModule> getModules() {
56+
return new ArrayList<>(List.of(
57+
new SkyBlockPlayersOnlineModule(1),
58+
new SkyBlockPlayersOnlineModule(2),
59+
new BackwaterBayouServerModule(),
60+
new AccountInformationModule()
61+
));
62+
}
63+
};
64+
}
65+
66+
@Override
67+
public List<HypixelEventClass> getTraditionalEvents() {
68+
return SkyBlockGenericLoader.loopThroughPackage(
69+
"net.swofty.type.backwaterbayou.events",
70+
HypixelEventClass.class
71+
).collect(Collectors.toList());
72+
}
73+
74+
@Override
75+
public List<HypixelEventClass> getCustomEvents() {
76+
return new ArrayList<>();
77+
}
78+
79+
@Override
80+
public List<HypixelNPC> getNPCs() {
81+
return new ArrayList<>(SkyBlockGenericLoader.loopThroughPackage(
82+
"net.swofty.type.backwaterbayou.npcs",
83+
HypixelNPC.class
84+
).toList());
85+
}
86+
87+
@Override
88+
public List<ServiceToClient> getServiceRedisListeners() {
89+
return List.of();
90+
}
91+
92+
@Override
93+
public List<ProxyToClient> getProxyRedisListeners() {
94+
return List.of();
95+
}
96+
97+
@Override
98+
public List<ServiceType> getRequiredServices() {
99+
return new ArrayList<>(List.of(ServiceType.DATA_MUTEX));
100+
}
101+
102+
@Override
103+
public @Nullable CustomWorlds getMainInstance() {
104+
return CustomWorlds.SKYBLOCK_BACKWATER_BAYOU;
105+
}
106+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package net.swofty.type.backwaterbayou.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.backwaterbayou.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 BackwaterBayouServerModule 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: §7Backwater Bayou", TablistSkinRegistry.GRAY));
19+
entries.add(new TablistEntry(" Server: §8" + HypixelConst.getServerName(), TablistSkinRegistry.GRAY));
20+
21+
fillRestWithGray(entries);
22+
23+
return entries;
24+
}
25+
}

type.crimsonisle/build.gradle.kts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
plugins {
2+
java
3+
}
4+
5+
group = "net.swofty"
6+
version = "3.0"
7+
8+
java {
9+
sourceCompatibility = JavaVersion.VERSION_25
10+
targetCompatibility = JavaVersion.VERSION_25
11+
toolchain {
12+
languageVersion.set(JavaLanguageVersion.of(25))
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.12.20c-1.21.11") {
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+
implementation("org.joml:joml:1.10.8")
27+
}
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
package net.swofty.type.crimsonisle;
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.crimsonisle.tab.CrimsonIsleServerModule;
11+
import net.swofty.type.generic.SkyBlockTypeLoader;
12+
import net.swofty.type.generic.entity.npc.HypixelNPC;
13+
import net.swofty.type.generic.event.HypixelEventClass;
14+
import net.swofty.type.generic.tab.TablistManager;
15+
import net.swofty.type.generic.tab.TablistModule;
16+
import net.swofty.type.skyblockgeneric.SkyBlockGenericLoader;
17+
import net.swofty.type.skyblockgeneric.tabmodules.AccountInformationModule;
18+
import net.swofty.type.skyblockgeneric.tabmodules.SkyBlockPlayersOnlineModule;
19+
import org.jetbrains.annotations.Nullable;
20+
import org.tinylog.Logger;
21+
22+
import java.util.ArrayList;
23+
import java.util.List;
24+
import java.util.stream.Collectors;
25+
26+
public class TypeCrimsonIsleLoader implements SkyBlockTypeLoader {
27+
@Override
28+
public ServerType getType() {
29+
return ServerType.SKYBLOCK_CRIMSON_ISLE;
30+
}
31+
32+
@Override
33+
public void onInitialize(MinecraftServer server) {
34+
Logger.info("TypeCrimsonIsleLoader initialized!");
35+
}
36+
37+
@Override
38+
public void afterInitialize(MinecraftServer server) {
39+
40+
}
41+
42+
@Override
43+
public LoaderValues getLoaderValues() {
44+
return new LoaderValues(
45+
(type) -> switch (type) {
46+
default -> new Pos(-360.5, 80, -430.5, -180, 0);
47+
}, // Spawn position
48+
true // Announce death messages
49+
);
50+
}
51+
52+
public TablistManager getTablistManager() {
53+
return new TablistManager() {
54+
@Override
55+
public List<TablistModule> getModules() {
56+
return new ArrayList<>(List.of(
57+
new SkyBlockPlayersOnlineModule(1),
58+
new SkyBlockPlayersOnlineModule(2),
59+
new CrimsonIsleServerModule(),
60+
new AccountInformationModule()
61+
));
62+
}
63+
};
64+
}
65+
66+
@Override
67+
public List<HypixelEventClass> getTraditionalEvents() {
68+
return SkyBlockGenericLoader.loopThroughPackage(
69+
"net.swofty.type.crimsonisle.events",
70+
HypixelEventClass.class
71+
).collect(Collectors.toList());
72+
}
73+
74+
@Override
75+
public List<HypixelEventClass> getCustomEvents() {
76+
return new ArrayList<>();
77+
}
78+
79+
@Override
80+
public List<HypixelNPC> getNPCs() {
81+
return new ArrayList<>(SkyBlockGenericLoader.loopThroughPackage(
82+
"net.swofty.type.crimsonisle.npcs",
83+
HypixelNPC.class
84+
).toList());
85+
}
86+
87+
@Override
88+
public List<ServiceToClient> getServiceRedisListeners() {
89+
return List.of();
90+
}
91+
92+
@Override
93+
public List<ProxyToClient> getProxyRedisListeners() {
94+
return List.of();
95+
}
96+
97+
@Override
98+
public List<ServiceType> getRequiredServices() {
99+
return new ArrayList<>(List.of(ServiceType.DATA_MUTEX));
100+
}
101+
102+
@Override
103+
public @Nullable CustomWorlds getMainInstance() {
104+
return CustomWorlds.SKYBLOCK_CRIMSON_ISLE;
105+
}
106+
}

0 commit comments

Comments
 (0)