Skip to content

Commit 0ac382f

Browse files
committed
feat: spiders den and the end
1 parent e75a5a7 commit 0ac382f

17 files changed

Lines changed: 483 additions & 17 deletions

File tree

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
public enum CustomWorlds {
44
SKYBLOCK_ISLAND_TEMPLATE("hypixel_skyblock_island_template"),
55
SKYBLOCK_HUB("hypixel_skyblock_hub"),
6+
SKYBLOCK_SPIDERS_DEN("hypixel_skyblock_spiders_den"),
7+
SKYBLOCK_THE_END("hypixel_skyblock_the_end"),
68
SKYBLOCK_GOLD_MINE("hypixel_skyblock_gold_mine"),
79
SKYBLOCK_DEEP_CAVERNS("hypixel_skyblock_deep_caverns"),
810
SKYBLOCK_DWARVEN_MINES("hypixel_skyblock_dwarven_mines"),

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
public enum ServerType {
77
SKYBLOCK_ISLAND(true),
88
SKYBLOCK_HUB(true),
9+
SKYBLOCK_SPIDERS_DEN(true),
10+
SKYBLOCK_THE_END(true),
911
SKYBLOCK_DUNGEON_HUB(true),
1012
SKYBLOCK_THE_FARMING_ISLANDS(true),
1113
SKYBLOCK_GOLD_MINE(true),

loader/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ dependencies {
2727
implementation(project(":type.island"))
2828
implementation(project(":type.hub"))
2929
implementation(project(":type.thefarmingislands"))
30+
implementation(project(":type.spidersden"))
31+
implementation(project(":type.theend"))
3032
implementation(project(":type.goldmine"))
3133
implementation(project(":type.deepcaverns"))
3234
implementation(project(":type.dwarvenmines"))

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ ToProxyChannels.PROXY_IS_ONLINE, new JSONObject(), (response) -> {
357357
Logger.error("Proxy did not respond to alive check. Shutting down...");
358358
System.exit(0);
359359
}
360-
}, TaskSchedule.tick(4), TaskSchedule.stop());
360+
}, TaskSchedule.tick(20), TaskSchedule.stop());
361361

362362
return TaskSchedule.seconds(1);
363363
}, ExecutionType.TICK_END);

settings.gradle.kts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ include(":loader")
1414

1515
include(":type.prototypelobby")
1616
include(":type.thefarmingislands")
17+
include("type.spidersden")
18+
include("type.theend")
1719
include(":type.goldmine")
1820
include(":type.deepcaverns")
1921
include(":type.dwarvenmines")
@@ -28,4 +30,4 @@ include(":service.api")
2830
include(":service.datamutex")
2931
include(":service.party")
3032
include(":service.darkauction")
31-
include(":anticheat")
33+
include(":anticheat")

type.hub/src/main/java/net/swofty/type/hub/TypeHubLoader.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,8 @@ public LoaderValues getLoaderValues() {
136136
return new LoaderValues(
137137
(type) -> switch (type) {
138138
case SKYBLOCK_THE_FARMING_ISLANDS -> new Pos(74, 72, -180, 35, 0);
139-
case SKYBLOCK_GOLD_MINE -> new Pos(-9.5, 64, -228, 0, 0); // TODO: UPDATE TO PROPER POSITION
139+
case SKYBLOCK_SPIDERS_DEN -> new Pos(-159.5, 73, -158.5, -45, 0);
140+
case SKYBLOCK_GOLD_MINE -> new Pos(-9.5, 64, -228.5, 0, 0);
140141
case SKYBLOCK_DUNGEON_HUB -> new Pos(-44, 88, 11.5, 0, 0);
141142
default -> new Pos(-2.5, 72.5, -69.5, 180, 0);
142143
}, // Spawn position

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/SkyBlockGenericLoader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ public void initialize(MinecraftServer server) {
292292
MinecraftServer.getDimensionTypeRegistry().register(
293293
Key.key("skyblock:island"),
294294
DimensionType.builder()
295-
.ambientLight(2)
295+
.ambientLight(1)
296296
.build());
297297
SkyBlockIsland.runVacantLoop(MinecraftServer.getSchedulerManager());
298298

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/utility/LaunchPads.java

Lines changed: 95 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,15 @@ public enum LaunchPads {
3636
boolean hasRequirement = player.getSkills().getCurrentLevel(SkillCategories.FARMING) >= 5;
3737
if (!hasRequirement) {
3838
return PlayerHolograms.ExternalPlayerHologram.builder()
39-
.pos(new Pos(80, 73.3, -184.5))
39+
.pos(new Pos(79.5, 73.3, -184.5))
4040
.player(player)
41-
.text(new String[]{"§bTravel To:", "§aThe Farming Islands", "§cRequires Farming Level 5"})
41+
.text(new String[]{"§bTravel to:", "§aThe Farming Islands", "§cRequires Farming Level 5"})
4242
.build();
4343
} else {
4444
return PlayerHolograms.ExternalPlayerHologram.builder()
45-
.pos(new Pos(80, 73.3, -184.5))
45+
.pos(new Pos(79.5, 73.3, -184.5))
4646
.player(player)
47-
.text(new String[]{"§bTravel To:", "§aThe Farming Islands"})
47+
.text(new String[]{"§bTravel to:", "§aThe Farming Islands"})
4848
.build();
4949
}
5050
}
@@ -61,7 +61,89 @@ public enum LaunchPads {
6161
(player) -> PlayerHolograms.ExternalPlayerHologram.builder()
6262
.pos(new Pos(111.5, 71.7, -202.5))
6363
.player(player)
64-
.text(new String[]{"§bTravel To:", "§aThe Village"})
64+
.text(new String[]{"§bTravel to:", "§aThe Village"})
65+
.build()
66+
),
67+
68+
GRAVEYARD_TO_SPIDERS_DEN(
69+
getSlimeBlocksNear(new Pos(-162, 73, -161)),
70+
ServerType.SKYBLOCK_HUB,
71+
ServerType.SKYBLOCK_SPIDERS_DEN,
72+
new Pos(-202.5, 83, -233.5),
73+
(player) -> player.sendTo(ServerType.SKYBLOCK_SPIDERS_DEN),
74+
(player) -> player.getSkills().getCurrentLevel(SkillCategories.COMBAT) >= 1,
75+
"§cYou must be at least Combat Level I to join this island!",
76+
(player) -> {
77+
boolean hasRequirement = player.getSkills().getCurrentLevel(SkillCategories.COMBAT) >= 1;
78+
if (!hasRequirement) {
79+
return PlayerHolograms.ExternalPlayerHologram.builder()
80+
.pos(new Pos(-162.5, 75, -161.5))
81+
.player(player)
82+
.text(new String[]{"§bTravel to:", "§aSpider's Den", "§cRequires Combat Level 1"})
83+
.build();
84+
} else {
85+
return PlayerHolograms.ExternalPlayerHologram.builder()
86+
.pos(new Pos(-162.5, 75, -161.5))
87+
.player(player)
88+
.text(new String[]{"§bTravel to:", "§aSpider's Den"})
89+
.build();
90+
}
91+
}
92+
),
93+
94+
SPIDERS_DEN_TO_GRAVEYARD(
95+
getSlimeBlocksNear(new Pos(-197, 83, -228)),
96+
ServerType.SKYBLOCK_SPIDERS_DEN,
97+
ServerType.SKYBLOCK_HUB,
98+
new Pos(-159.5, 73, -158.5),
99+
(player) -> player.sendTo(ServerType.SKYBLOCK_HUB),
100+
(player) -> true,
101+
"",
102+
(player) -> PlayerHolograms.ExternalPlayerHologram.builder()
103+
.pos(new Pos(-197.5, 83, -228.5))
104+
.player(player)
105+
.text(new String[]{"§bTravel to:", "§aHub Island"})
106+
.build()
107+
),
108+
109+
SPIDERS_DEN_TO_THE_END(
110+
getSlimeBlocksNear(new Pos(-383.5, 119, -261)),
111+
ServerType.SKYBLOCK_SPIDERS_DEN,
112+
ServerType.SKYBLOCK_THE_END,
113+
new Pos(-503, 101, -275),
114+
(player) -> player.sendTo(ServerType.SKYBLOCK_THE_END),
115+
(player) -> player.getSkills().getCurrentLevel(SkillCategories.COMBAT) >= 12,
116+
"§cYou must be at least Combat Level XII to join this island!",
117+
(player) -> {
118+
boolean hasRequirement = player.getSkills().getCurrentLevel(SkillCategories.COMBAT) >= 12;
119+
if (!hasRequirement) {
120+
return PlayerHolograms.ExternalPlayerHologram.builder()
121+
.pos(new Pos(-383, 120, -261))
122+
.player(player)
123+
.text(new String[]{"§bTravel to:", "§aThe End", "§cRequires Combat Level 12"})
124+
.build();
125+
} else {
126+
return PlayerHolograms.ExternalPlayerHologram.builder()
127+
.pos(new Pos(-383, 120, -261))
128+
.player(player)
129+
.text(new String[]{"§bTravel to:", "§aThe End"})
130+
.build();
131+
}
132+
}
133+
),
134+
135+
THE_END_TO_SPIDERS_DEN(
136+
getSlimeBlocksNear(new Pos(-197, 83, -228)),
137+
ServerType.SKYBLOCK_THE_END,
138+
ServerType.SKYBLOCK_SPIDERS_DEN,
139+
new Pos(-378, 118.5, -261),
140+
(player) -> player.sendTo(ServerType.SKYBLOCK_SPIDERS_DEN),
141+
(player) -> true,
142+
"",
143+
(player) -> PlayerHolograms.ExternalPlayerHologram.builder()
144+
.pos(new Pos(-495, 102, -275))
145+
.player(player)
146+
.text(new String[]{"§bTravel to:", "§aSpider's Den"})
65147
.build()
66148
),
67149

@@ -77,15 +159,15 @@ public enum LaunchPads {
77159
boolean hasRequirement = player.getSkills().getCurrentLevel(SkillCategories.MINING) >= 1;
78160
if (!hasRequirement) {
79161
return PlayerHolograms.ExternalPlayerHologram.builder()
80-
.pos(new Pos(-9.5, 64.7, -230.5))
162+
.pos(new Pos(-9.5, 64.7, -231.5))
81163
.player(player)
82-
.text(new String[]{"§bTravel To:", "§aGold Mine", "§cRequires Mining Level 1"})
164+
.text(new String[]{"§bTravel to:", "§aGold Mine", "§cRequires Mining Level 1"})
83165
.build();
84166
} else {
85167
return PlayerHolograms.ExternalPlayerHologram.builder()
86-
.pos(new Pos(-9.5, 64.7, -230.5))
168+
.pos(new Pos(-9.5, 64.7, -231.5))
87169
.player(player)
88-
.text(new String[]{"§bTravel To:", "§aGold Mine"})
170+
.text(new String[]{"§bTravel to:", "§aGold Mine"})
89171
.build();
90172
}
91173
}
@@ -100,9 +182,9 @@ public enum LaunchPads {
100182
(player) -> true,
101183
"",
102184
(player) -> PlayerHolograms.ExternalPlayerHologram.builder()
103-
.pos(new Pos(-5, 73.3, -269))
185+
.pos(new Pos(-4.5, 73.3, -268.5))
104186
.player(player)
105-
.text(new String[]{"§bTravel To:", "§aThe Village"})
187+
.text(new String[]{"§bTravel to:", "§aThe Village"})
106188
.build()
107189
),
108190

@@ -117,7 +199,7 @@ public enum LaunchPads {
117199
(player) -> PlayerHolograms.ExternalPlayerHologram.builder()
118200
.pos(new Pos(-7, 69, -396))
119201
.player(player)
120-
.text(new String[]{"§bTravel To:", "§aDeep Caverns"})
202+
.text(new String[]{"§bTravel to:", "§aDeep Caverns"})
121203
.build()
122204
),
123205

@@ -132,7 +214,7 @@ public enum LaunchPads {
132214
(player) -> PlayerHolograms.ExternalPlayerHologram.builder()
133215
.pos(new Pos(4, 158.5, 89))
134216
.player(player)
135-
.text(new String[]{"§bTravel To:", "§aGold Mine"})
217+
.text(new String[]{"§bTravel to:", "§aGold Mine"})
136218
.build()
137219
);
138220

type.spidersden/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: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
package net.swofty.type.spidersden;
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.npc.HypixelNPC;
12+
import net.swofty.type.generic.event.HypixelEventClass;
13+
import net.swofty.type.generic.tab.TablistManager;
14+
import net.swofty.type.generic.tab.TablistModule;
15+
import net.swofty.type.skyblockgeneric.SkyBlockGenericLoader;
16+
import net.swofty.type.skyblockgeneric.tabmodules.AccountInformationModule;
17+
import net.swofty.type.skyblockgeneric.tabmodules.SkyBlockPlayersOnlineModule;
18+
import net.swofty.type.spidersden.tab.SpidersDenServerModule;
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 TypeSpidersDenLoader implements SkyBlockTypeLoader {
27+
@Override
28+
public ServerType getType() {
29+
return ServerType.SKYBLOCK_SPIDERS_DEN;
30+
}
31+
32+
@Override
33+
public void onInitialize(MinecraftServer server) {
34+
Logger.info("TypeSpidersDenLoader 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+
case SKYBLOCK_THE_END -> new Pos(-378, 118.5, -261, -90, 0);
47+
default -> new Pos(-202.5, 83, -233.5, 135, 0);
48+
}, // Spawn position
49+
true // Announce death messages
50+
);
51+
}
52+
53+
public TablistManager getTablistManager() {
54+
return new TablistManager() {
55+
@Override
56+
public List<TablistModule> getModules() {
57+
return new ArrayList<>(List.of(
58+
new SkyBlockPlayersOnlineModule(1),
59+
new SkyBlockPlayersOnlineModule(2),
60+
new SpidersDenServerModule(),
61+
new AccountInformationModule()
62+
));
63+
}
64+
};
65+
}
66+
67+
@Override
68+
public List<HypixelEventClass> getTraditionalEvents() {
69+
return SkyBlockGenericLoader.loopThroughPackage(
70+
"net.swofty.type.spidersden.events",
71+
HypixelEventClass.class
72+
).collect(Collectors.toList());
73+
}
74+
75+
@Override
76+
public List<HypixelEventClass> getCustomEvents() {
77+
return new ArrayList<>();
78+
}
79+
80+
@Override
81+
public List<HypixelNPC> getNPCs() {
82+
return new ArrayList<>(SkyBlockGenericLoader.loopThroughPackage(
83+
"net.swofty.type.spidersden.npcs",
84+
HypixelNPC.class
85+
).toList());
86+
}
87+
88+
@Override
89+
public List<ServiceToClient> getServiceRedisListeners() {
90+
return List.of();
91+
}
92+
93+
@Override
94+
public List<ProxyToClient> getProxyRedisListeners() {
95+
return List.of();
96+
}
97+
98+
@Override
99+
public List<ServiceType> getRequiredServices() {
100+
return new ArrayList<>(List.of(ServiceType.DATA_MUTEX));
101+
}
102+
103+
@Override
104+
public @Nullable CustomWorlds getMainInstance() {
105+
return CustomWorlds.SKYBLOCK_SPIDERS_DEN;
106+
}
107+
}

0 commit comments

Comments
 (0)