Skip to content

Commit 0777204

Browse files
Merge pull request #597 from ArikSquad/feat/region-biome
Region Biomes
2 parents 5f7dd7d + 031f6e4 commit 0777204

11 files changed

Lines changed: 233 additions & 26 deletions

File tree

configuration/skyblock/Minestom.regions.csv

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,12 @@ pigmens_den,PIGMENS_DEN,151,114,77,-26,85,-61,DEEP_CAVERNS
6262
slimehill,SLIMEHILL,-26,85,-61,127,52,74,DEEP_CAVERNS
6363
diamond_reserve,DIAMOND_RESERVE,127,52,74,-36,28,-74,DEEP_CAVERNS
6464
obsidian_sanctuary,OBSIDIAN_SANCTUARY,-36,28,-74,121,0,48,DEEP_CAVERNS
65-
#the_end_nest_1,THE_END_NEST,78,117,-87,149,0,85,
66-
#the_end_1,THE_END,150,177,146,190,23,-115,
67-
#dragons_nest_2,DRAGONS_NEST,-34,1,68,-92,68,-52,
65+
the_end_nest_1,THE_END_NEST,78,117,-87,149,0,85,THE_END
66+
the_end_1,THE_END,150,177,146,190,23,-115,THE_END
67+
dragons_nest_2,DRAGONS_NEST,-34,1,68,-92,68,-52,THE_END
68+
vs1,VOID_SEPULTURE,100,62,-17,56,7,-96,THE_END
69+
vs2,VOID_SEPULTURE,68,70,-96,140,23,-21,THE_END
70+
vs3,VOID_SEPULTURE,74,50,-51,49,8,-91,THE_END
6871
#spiders_den_1,SPIDERS_DEN,-107,5,-238,-408,195,-368,
6972
#spiders_den_2,SPIDERS_DEN,-408,195,-368,-178,13,-183,
7073
#spiders_den_3,SPIDERS_DEN,-226,6,-130,-408,195,-368,
@@ -78,8 +81,10 @@ gb1,GOBLIN_BURROWS,-47,170,214,-96,154,99,DWARVEN_MINES
7881
gb2,GOBLIN_BURROWS,-60,163,180,-192,131,110,DWARVEN_MINES
7982
mist1,THE_MIST,-60,83,2,200,63,160,DWARVEN_MINES
8083
cliffv,CLIFFSIDE_VEINS,6,154,23,92,114,56,DWARVEN_MINES
81-
#vs1,VOID_SEPULTURE,100,62,-17,56,7,-96,
82-
#vs2,VOID_SEPULTURE,68,70,-96,140,23,-21,
83-
#vs3,VOID_SEPULTURE,74,50,-51,49,8,-91,
8484
wilderness_1,WILDERNESS,58,71,118,123,76,123,HUB
85-
barn_1,THE_BARN,82,26,-177,250,120,-334,THE_FARMING_ISLANDS
85+
barn_1,THE_BARN,82,26,-177,250,120,-334,THE_FARMING_ISLANDS,
86+
birch_forest,BIRCH_PARK,-255,114,26,-336,41,-90,THE_PARK
87+
spruce_forest,SPRUCE_WOODS,-387,151,-22,-309,59,107,THE_PARK
88+
dark_thicket,DARK_THICKET,-333,148,-24,-415,59,-122,THE_PARK
89+
jungle,JUNGLE_ISLAND,-306,149,-130,-507,68,-18,THE_PARK
90+
savanna,SAVANNA_WOODLAND,-467,155,-20,-383,56,102,THE_PARK

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

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,17 @@
99
import net.kyori.adventure.key.Key;
1010
import net.kyori.adventure.text.Component;
1111
import net.minestom.server.MinecraftServer;
12+
import net.minestom.server.coordinate.CoordConversion;
1213
import net.minestom.server.coordinate.Pos;
1314
import net.minestom.server.event.server.ServerTickMonitorEvent;
15+
import net.minestom.server.instance.Chunk;
1416
import net.minestom.server.monitoring.BenchmarkManager;
1517
import net.minestom.server.monitoring.TickMonitor;
18+
import net.minestom.server.registry.RegistryKey;
1619
import net.minestom.server.timer.TaskSchedule;
1720
import net.minestom.server.utils.time.TimeUnit;
1821
import net.minestom.server.world.DimensionType;
22+
import net.minestom.server.world.biome.Biome;
1923
import net.swofty.commons.*;
2024
import net.swofty.commons.skyblock.item.ItemType;
2125
import net.swofty.commons.skyblock.item.attribute.ItemAttribute;
@@ -64,6 +68,7 @@
6468
import net.swofty.type.skyblockgeneric.noteblock.SkyBlockSongsHandler;
6569
import net.swofty.type.skyblockgeneric.redis.RedisAuthenticate;
6670
import net.swofty.type.generic.redis.RedisOriginServer;
71+
import net.swofty.type.skyblockgeneric.region.SkyBlockBiomeConfiguration;
6772
import net.swofty.type.skyblockgeneric.region.SkyBlockRegenConfiguration;
6873
import net.swofty.type.skyblockgeneric.region.SkyBlockRegion;
6974
import net.swofty.type.skyblockgeneric.server.attribute.SkyBlockServerAttributes;
@@ -283,9 +288,7 @@ public void initialize(MinecraftServer server) {
283288
HypixelPacketClientListener.register(HypixelConst.getEventHandler());
284289
HypixelPacketServerListener.register(HypixelConst.getEventHandler());
285290

286-
/**
287-
* Load regions
288-
*/
291+
// Load regions
289292
SkyBlockRegion.cacheRegions();
290293
SkyBlockRegenConfiguration.startRepeater(MinecraftServer.getSchedulerManager());
291294
MinecraftServer.getDimensionTypeRegistry().register(
@@ -295,6 +298,15 @@ public void initialize(MinecraftServer server) {
295298
.build());
296299
SkyBlockIsland.runVacantLoop(MinecraftServer.getSchedulerManager());
297300

301+
// Set region biomes
302+
SkyBlockRegion.getRegions().forEach(region -> {
303+
if (region.getServerType() != HypixelConst.getTypeLoader().getType()) return;
304+
SkyBlockBiomeConfiguration biomeConfig = region.getType().getBiomeHandler();
305+
if (biomeConfig == null) return;
306+
RegistryKey<Biome> biomeKey = MinecraftServer.getBiomeRegistry().register(biomeConfig.getKey(), biomeConfig.getBiome());
307+
setBiome(region.getFirstLocation(), region.getSecondLocation(), biomeKey);
308+
});
309+
298310
/**
299311
* Load fairy souls
300312
*/
@@ -561,6 +573,21 @@ public static <T> Stream<T> loopThroughPackage(String packageName, Class<T> claz
561573
.filter(java.util.Objects::nonNull);
562574
}
563575

576+
private void setBiome(int x, int y, int z, RegistryKey<Biome> biome) {
577+
Chunk chunk = HypixelConst.getInstanceContainer().getChunk(CoordConversion.globalToChunk(x), CoordConversion.globalToChunk(z));
578+
chunk.setBiome(x, y, z, biome);
579+
}
580+
581+
private void setBiome(Pos start, Pos end, RegistryKey<Biome> biome) {
582+
for (int x = start.blockX(); x <= end.blockX(); x++) {
583+
for (int y = start.blockY(); y <= end.blockY(); y++) {
584+
for (int z = start.blockZ(); z <= end.blockZ(); z++) {
585+
setBiome(x, y, z, biome);
586+
}
587+
}
588+
}
589+
}
590+
564591
private static String formatEffectDuration(long durationMs) {
565592
long totalSeconds = durationMs / 1000;
566593
long minutes = totalSeconds / 60;

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/commands/TeleportCommand.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,5 @@ public void registerUsage(MinestomCommand command) {
4242
int z = context.get(zArgument);
4343
player.teleport(player.getPosition().withX(x).withY(y).withZ(z));
4444
}, xArgument, yArgument, zArgument);
45-
46-
ArgumentRelativeVec3 blockPosArgument = ArgumentType.RelativeVec3("position");
47-
command.addSyntax((sender, context) -> {
48-
SkyBlockPlayer player = (SkyBlockPlayer) sender;
49-
RelativeVec relativeVec = context.get(blockPosArgument);
50-
player.teleport(player.getPosition().add(relativeVec.from(player)));
51-
}, blockPosArgument);
5245
}
5346
}

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/RegionType.java

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import lombok.Getter;
44
import lombok.SneakyThrows;
55
import net.swofty.commons.Songs;
6+
import net.swofty.type.skyblockgeneric.region.biome.*;
67
import net.swofty.type.skyblockgeneric.region.mining.configurations.*;
78
import net.swofty.type.skyblockgeneric.region.mining.configurations.deepmines.*;
89

@@ -34,13 +35,13 @@ public enum RegionType {
3435
DARK_AUCTION("Dark Auction", "§5"),
3536
FOREST("Forest", MineLogsConfiguration.class),
3637

37-
BIRCH_PARK("Birch Park", "§a"),
38-
HOWLING_CAVE("Howling Cave"),
39-
SPRUCE_WOODS("Spruce Woods", "§a"),
40-
DARK_THICKET("Dark Thicket", "§a"),
41-
SAVANNA_WOODLAND("Savanna Woodland", "§a"),
42-
MELODY_PLATEAU("Melody's Plateau", "§5"),
43-
JUNGLE_ISLAND("Jungle Island", "§a"),
38+
BIRCH_PARK("Birch Park", "§a", null, BirchParkBiome.class),
39+
HOWLING_CAVE("Howling Cave", null, BirchParkBiome.class),
40+
SPRUCE_WOODS("Spruce Woods", "§a", null, SpruceWoodsBiome.class),
41+
DARK_THICKET("Dark Thicket", "§a", null, DarkThicketBiome.class),
42+
SAVANNA_WOODLAND("Savanna Woodland", "§a", null, SavannaWoodlandsBiome.class),
43+
MELODY_PLATEAU("Melody's Plateau", "§5", null, SavannaWoodlandsBiome.class),
44+
JUNGLE_ISLAND("Jungle Island", "§a", null, JungleIslandBiome.class),
4445

4546
THE_BARN("The Barn", "§b", BarnConfiguration.class),
4647
MUSHROOM_DESERT("Mushroom Desert"),
@@ -89,28 +90,40 @@ public enum RegionType {
8990
private final String name;
9091
private final String color;
9192
private final SkyBlockRegenConfiguration miningHandler;
93+
private final SkyBlockBiomeConfiguration biomeHandler;
9294
private final List<Songs> songs;
9395

9496
@SneakyThrows
95-
RegionType(String name, String color, Class<? extends SkyBlockRegenConfiguration> miningHandler, Songs... songs) {
97+
RegionType(String name, String color, Class<? extends SkyBlockRegenConfiguration> miningHandler, Class<? extends SkyBlockBiomeConfiguration> biomeHandler, Songs... songs) {
9698
this.name = name;
9799
this.color = color;
98100

99101
if (miningHandler != null)
100102
this.miningHandler = miningHandler.getDeclaredConstructor().newInstance();
101103
else
102104
this.miningHandler = null;
105+
106+
if (biomeHandler != null)
107+
this.biomeHandler = biomeHandler.getDeclaredConstructor().newInstance();
108+
else
109+
this.biomeHandler = null;
110+
103111
this.songs = new ArrayList<>();
104112
}
105113

106114
RegionType(String name, String color, Class<? extends SkyBlockRegenConfiguration> miningHandler) {
107-
this(name, color, miningHandler, new Songs[0]);
115+
this(name, color, miningHandler, null, new Songs[0]);
108116
}
109117

110118
RegionType(String name, Class<? extends SkyBlockRegenConfiguration> miningHandler) {
111119
this(name, "§b", miningHandler);
112120
}
113121

122+
123+
RegionType(String name, Class<? extends SkyBlockRegenConfiguration> miningHandler, Class<? extends SkyBlockBiomeConfiguration> biomeHandler) {
124+
this(name, "§b", miningHandler, biomeHandler);
125+
}
126+
114127
RegionType(String name, String color) {
115128
this(name, color, new Songs[0]);
116129
}
@@ -120,6 +133,7 @@ public enum RegionType {
120133
this.color = color;
121134
this.miningHandler = null;
122135
this.songs = new ArrayList<>(List.of(songs));
136+
this.biomeHandler = null;
123137
}
124138

125139
RegionType(String name) {
@@ -135,6 +149,11 @@ public SkyBlockRegenConfiguration getMiningHandler() {
135149
return miningHandler;
136150
}
137151

152+
@SneakyThrows
153+
public SkyBlockBiomeConfiguration getBiomeHandler() {
154+
return biomeHandler;
155+
}
156+
138157
@Override
139158
public String toString() {
140159
return color + name;
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package net.swofty.type.skyblockgeneric.region;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Getter;
5+
import net.kyori.adventure.key.Key;
6+
import net.minestom.server.world.biome.Biome;
7+
8+
@Getter
9+
@AllArgsConstructor
10+
public abstract class SkyBlockBiomeConfiguration {
11+
private final Key key;
12+
13+
public abstract Biome getBiome();
14+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package net.swofty.type.skyblockgeneric.region.biome;
2+
3+
import net.kyori.adventure.key.Key;
4+
import net.kyori.adventure.text.format.TextColor;
5+
import net.minestom.server.world.biome.Biome;
6+
import net.minestom.server.world.biome.BiomeEffects;
7+
import net.swofty.type.skyblockgeneric.region.SkyBlockBiomeConfiguration;
8+
9+
public class BirchParkBiome extends SkyBlockBiomeConfiguration {
10+
11+
public BirchParkBiome() {
12+
super(Key.key("skyblock:birch_park"));
13+
}
14+
15+
@Override
16+
public Biome getBiome() {
17+
return Biome.builder()
18+
.effects(
19+
BiomeEffects.builder()
20+
.grassColor(TextColor.color(16765696))
21+
.foliageColor(TextColor.color(16762880))
22+
.waterColor(TextColor.color(8250111))
23+
.build()
24+
)
25+
.build();
26+
}
27+
28+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package net.swofty.type.skyblockgeneric.region.biome;
2+
3+
import net.kyori.adventure.key.Key;
4+
import net.kyori.adventure.text.format.TextColor;
5+
import net.minestom.server.world.biome.Biome;
6+
import net.minestom.server.world.biome.BiomeEffects;
7+
import net.swofty.type.skyblockgeneric.region.SkyBlockBiomeConfiguration;
8+
9+
public class DarkThicketBiome extends SkyBlockBiomeConfiguration {
10+
11+
public DarkThicketBiome() {
12+
super(Key.key("skyblock:dark_thicket"));
13+
}
14+
15+
@Override
16+
public Biome getBiome() {
17+
return Biome.builder()
18+
.effects(
19+
BiomeEffects.builder()
20+
.grassColor(TextColor.color(4742700))
21+
.foliageColor(TextColor.color(1206296))
22+
.waterColor(TextColor.color(2910286))
23+
.build()
24+
)
25+
.build();
26+
}
27+
28+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package net.swofty.type.skyblockgeneric.region.biome;
2+
3+
import net.kyori.adventure.key.Key;
4+
import net.kyori.adventure.text.format.TextColor;
5+
import net.minestom.server.world.biome.Biome;
6+
import net.minestom.server.world.biome.BiomeEffects;
7+
import net.swofty.type.skyblockgeneric.region.SkyBlockBiomeConfiguration;
8+
9+
public class JungleIslandBiome extends SkyBlockBiomeConfiguration {
10+
11+
public JungleIslandBiome() {
12+
super(Key.key("skyblock:jungle_island"));
13+
}
14+
15+
@Override
16+
public Biome getBiome() {
17+
return Biome.builder()
18+
.effects(
19+
BiomeEffects.builder()
20+
.waterColor(TextColor.color(-12618012))
21+
.build()
22+
)
23+
.build();
24+
}
25+
26+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package net.swofty.type.skyblockgeneric.region.biome;
2+
3+
import net.kyori.adventure.key.Key;
4+
import net.kyori.adventure.text.format.TextColor;
5+
import net.minestom.server.world.biome.Biome;
6+
import net.minestom.server.world.biome.BiomeEffects;
7+
import net.swofty.type.skyblockgeneric.region.SkyBlockBiomeConfiguration;
8+
9+
public class SavannaWoodlandsBiome extends SkyBlockBiomeConfiguration {
10+
11+
public SavannaWoodlandsBiome() {
12+
super(Key.key("skyblock:savanna_woodlands"));
13+
}
14+
15+
@Override
16+
public Biome getBiome() {
17+
return Biome.builder()
18+
.effects(
19+
BiomeEffects.builder()
20+
.waterColor(TextColor.color(-12618012))
21+
.build()
22+
)
23+
.build();
24+
}
25+
26+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package net.swofty.type.skyblockgeneric.region.biome;
2+
3+
import net.kyori.adventure.key.Key;
4+
import net.kyori.adventure.text.format.TextColor;
5+
import net.minestom.server.world.biome.Biome;
6+
import net.minestom.server.world.biome.BiomeEffects;
7+
import net.swofty.type.skyblockgeneric.region.SkyBlockBiomeConfiguration;
8+
9+
public class SpruceWoodsBiome extends SkyBlockBiomeConfiguration {
10+
11+
public SpruceWoodsBiome() {
12+
super(Key.key("skyblock:spruce_woods"));
13+
}
14+
15+
@Override
16+
public Biome getBiome() {
17+
return Biome.builder()
18+
.effects(
19+
BiomeEffects.builder()
20+
.grassColor(TextColor.color(16777215))
21+
.foliageColor(TextColor.color(14417889))
22+
.waterColor(TextColor.color(11590647))
23+
.build()
24+
)
25+
.build();
26+
}
27+
28+
}

0 commit comments

Comments
 (0)