Skip to content

Commit

Permalink
Add GrassColorModifier
Browse files Browse the repository at this point in the history
  • Loading branch information
Brokkonaut committed Oct 16, 2023
1 parent 4c8483d commit 9a889a5
Show file tree
Hide file tree
Showing 7 changed files with 82 additions and 5 deletions.
12 changes: 11 additions & 1 deletion nmsutils-core/src/main/java/de/cubeside/nmsutils/BiomeUtils.java
Expand Up @@ -7,7 +7,17 @@
import org.bukkit.NamespacedKey;

public interface BiomeUtils {
CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float temperature, Precipitation precipitation, Integer fogColor, Integer waterColor, Integer waterFogColor, Integer skyColor, Integer foliageColor, Integer grassColor);
public enum GrassColorModifier {
NONE,
DARK_FOREST,
SWAMP,
}

default CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float temperature, Precipitation precipitation, Integer fogColor, Integer waterColor, Integer waterFogColor, Integer skyColor, Integer foliageColor, Integer grassColor) {
return registerCustomBiome(id, downfall, temperature, precipitation, fogColor, waterColor, waterFogColor, skyColor, foliageColor, grassColor, GrassColorModifier.NONE);
}

CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float temperature, Precipitation precipitation, Integer fogColor, Integer waterColor, Integer waterFogColor, Integer skyColor, Integer foliageColor, Integer grassColor, GrassColorModifier grassColorModifier);

CustomBiome getCustomBiome(NamespacedKey id);

Expand Down
@@ -1,6 +1,9 @@
package de.cubeside.nmsutils;

import net.md_5.bungee.api.chat.BaseComponent;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.scoreboard.Team.OptionStatus;

public interface MiscUtils {

Expand All @@ -14,4 +17,7 @@ public interface MiscUtils {
*/
void setBlockMapColorTransparent(Material m);

default Object createTeamParametersPacketObject(BaseComponent displayName, BaseComponent prefix, BaseComponent suffix, OptionStatus nameTagDisplay, OptionStatus collisionRule, ChatColor color, boolean seeFriendlyInvisibles, boolean allowFriendlyFire) {
throw new IllegalStateException("not implemented in this version");
}
}
Expand Up @@ -57,7 +57,8 @@ public NMSUtils getNMSUtils() {
}

@Override
public CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float temperature, de.cubeside.nmsutils.biome.Precipitation precipitation, Integer fogColor, Integer waterColor, Integer waterFogColor, Integer skyColor, Integer foliageColor, Integer grassColor) {
public CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float temperature, de.cubeside.nmsutils.biome.Precipitation precipitation, Integer fogColor, Integer waterColor, Integer waterFogColor, Integer skyColor, Integer foliageColor, Integer grassColor,
GrassColorModifier grassColorModifier) {
Server server = nmsUtils.getPlugin().getServer();
CraftServer craftserver = (CraftServer) server;
DedicatedServer dedicatedserver = craftserver.getServer();
Expand Down Expand Up @@ -100,6 +101,12 @@ public CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float t
effects.grassColorOverride(grassColor);
}
effects.ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS);
net.minecraft.world.level.biome.BiomeSpecialEffects.GrassColorModifier nativeGrassColorModifier = switch (grassColorModifier) {
case DARK_FOREST -> net.minecraft.world.level.biome.BiomeSpecialEffects.GrassColorModifier.DARK_FOREST;
case SWAMP -> net.minecraft.world.level.biome.BiomeSpecialEffects.GrassColorModifier.SWAMP;
default -> net.minecraft.world.level.biome.BiomeSpecialEffects.GrassColorModifier.NONE;
};
effects.grassColorModifier(nativeGrassColorModifier);
builder.specialEffects(effects.build());

Biome newbiome = builder.build();
Expand Down
Expand Up @@ -56,7 +56,8 @@ public NMSUtils getNMSUtils() {
}

@Override
public CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float temperature, de.cubeside.nmsutils.biome.Precipitation precipitation, Integer fogColor, Integer waterColor, Integer waterFogColor, Integer skyColor, Integer foliageColor, Integer grassColor) {
public CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float temperature, de.cubeside.nmsutils.biome.Precipitation precipitation, Integer fogColor, Integer waterColor, Integer waterFogColor, Integer skyColor, Integer foliageColor, Integer grassColor,
GrassColorModifier grassColorModifier) {
Server server = nmsUtils.getPlugin().getServer();
CraftServer craftserver = (CraftServer) server;
DedicatedServer dedicatedserver = craftserver.getServer();
Expand Down Expand Up @@ -99,6 +100,12 @@ public CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float t
if (grassColor != null) {
effects.grassColorOverride(grassColor);
}
net.minecraft.world.level.biome.BiomeSpecialEffects.GrassColorModifier nativeGrassColorModifier = switch (grassColorModifier) {
case DARK_FOREST -> net.minecraft.world.level.biome.BiomeSpecialEffects.GrassColorModifier.DARK_FOREST;
case SWAMP -> net.minecraft.world.level.biome.BiomeSpecialEffects.GrassColorModifier.SWAMP;
default -> net.minecraft.world.level.biome.BiomeSpecialEffects.GrassColorModifier.NONE;
};
effects.grassColorModifier(nativeGrassColorModifier);
effects.ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS);
builder.specialEffects(effects.build());

Expand Down
Expand Up @@ -56,7 +56,8 @@ public NMSUtils getNMSUtils() {
}

@Override
public CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float temperature, de.cubeside.nmsutils.biome.Precipitation precipitation, Integer fogColor, Integer waterColor, Integer waterFogColor, Integer skyColor, Integer foliageColor, Integer grassColor) {
public CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float temperature, de.cubeside.nmsutils.biome.Precipitation precipitation, Integer fogColor, Integer waterColor, Integer waterFogColor, Integer skyColor, Integer foliageColor, Integer grassColor,
GrassColorModifier grassColorModifier) {
Server server = nmsUtils.getPlugin().getServer();
CraftServer craftserver = (CraftServer) server;
DedicatedServer dedicatedserver = craftserver.getServer();
Expand Down Expand Up @@ -100,6 +101,12 @@ public CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float t
effects.grassColorOverride(grassColor);
}
effects.ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS);
net.minecraft.world.level.biome.BiomeSpecialEffects.GrassColorModifier nativeGrassColorModifier = switch (grassColorModifier) {
case DARK_FOREST -> net.minecraft.world.level.biome.BiomeSpecialEffects.GrassColorModifier.DARK_FOREST;
case SWAMP -> net.minecraft.world.level.biome.BiomeSpecialEffects.GrassColorModifier.SWAMP;
default -> net.minecraft.world.level.biome.BiomeSpecialEffects.GrassColorModifier.NONE;
};
effects.grassColorModifier(nativeGrassColorModifier);
builder.specialEffects(effects.build());

Biome newbiome = builder.build();
Expand Down
Expand Up @@ -56,7 +56,8 @@ public NMSUtils getNMSUtils() {
}

@Override
public CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float temperature, de.cubeside.nmsutils.biome.Precipitation precipitation, Integer fogColor, Integer waterColor, Integer waterFogColor, Integer skyColor, Integer foliageColor, Integer grassColor) {
public CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float temperature, de.cubeside.nmsutils.biome.Precipitation precipitation, Integer fogColor, Integer waterColor, Integer waterFogColor, Integer skyColor, Integer foliageColor, Integer grassColor,
GrassColorModifier grassColorModifier) {
Server server = nmsUtils.getPlugin().getServer();
CraftServer craftserver = (CraftServer) server;
DedicatedServer dedicatedserver = craftserver.getServer();
Expand Down Expand Up @@ -100,6 +101,12 @@ public CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float t
effects.grassColorOverride(grassColor);
}
effects.ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS);
net.minecraft.world.level.biome.BiomeSpecialEffects.GrassColorModifier nativeGrassColorModifier = switch (grassColorModifier) {
case DARK_FOREST -> net.minecraft.world.level.biome.BiomeSpecialEffects.GrassColorModifier.DARK_FOREST;
case SWAMP -> net.minecraft.world.level.biome.BiomeSpecialEffects.GrassColorModifier.SWAMP;
default -> net.minecraft.world.level.biome.BiomeSpecialEffects.GrassColorModifier.NONE;
};
effects.grassColorModifier(nativeGrassColorModifier);
builder.specialEffects(effects.build());

Biome newbiome = builder.build();
Expand Down
Expand Up @@ -2,16 +2,26 @@

import de.cubeside.nmsutils.MiscUtils;
import de.cubeside.nmsutils.NMSUtils;
import io.papermc.paper.adventure.PaperAdventure;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Component;
import net.minecraft.network.protocol.game.ClientboundSetPlayerTeamPacket;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockBehaviour.BlockStateBase;
import net.minecraft.world.level.block.state.BlockBehaviour.Properties;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.material.MapColor;
import net.minecraft.world.scores.PlayerTeam;
import net.minecraft.world.scores.Scoreboard;
import net.minecraft.world.scores.Team.Visibility;
import org.bukkit.Material;
import org.bukkit.craftbukkit.v1_20_R2.util.CraftChatMessage;
import org.bukkit.craftbukkit.v1_20_R2.util.CraftMagicNumbers;
import org.bukkit.scoreboard.Team.OptionStatus;

public class MiscUtilsImpl implements MiscUtils {
private final NMSUtilsImpl nmsUtils;
Expand Down Expand Up @@ -79,4 +89,27 @@ public void setBlockMapColorTransparent(Material m) {
throw new IllegalStateException("Could not set the MaterialColor!");
}
}

@Override
public Object createTeamParametersPacketObject(BaseComponent displayName, BaseComponent prefix, BaseComponent suffix, OptionStatus nameTagDisplay, OptionStatus collisionRule, @SuppressWarnings("deprecation") org.bukkit.ChatColor color, boolean seeFriendlyInvisibles, boolean allowFriendlyFire) {
Scoreboard scoreboard = new Scoreboard();
PlayerTeam team = new PlayerTeam(scoreboard, BaseComponent.toPlainText(displayName));
team.setDisplayName(baseComponentToComponent(displayName));
team.setPlayerPrefix(baseComponentToComponent(prefix));
team.setPlayerSuffix(baseComponentToComponent(suffix));
team.setNameTagVisibility(Visibility.values()[nameTagDisplay.ordinal()]);
team.setCollisionRule(net.minecraft.world.scores.Team.CollisionRule.values()[collisionRule.ordinal()]);
team.setColor(color == null ? ChatFormatting.RESET : CraftChatMessage.getColor(color));
team.setSeeFriendlyInvisibles(seeFriendlyInvisibles);
team.setAllowFriendlyFire(allowFriendlyFire);
return new ClientboundSetPlayerTeamPacket.Parameters(team);
}

private static Component baseComponentToComponent(BaseComponent c) {
if (c == null) {
return PaperAdventure.asVanilla(net.kyori.adventure.text.Component.empty());
}
String json = net.md_5.bungee.chat.ComponentSerializer.toString(c);
return PaperAdventure.asVanilla(net.kyori.adventure.text.serializer.gson.GsonComponentSerializer.gson().deserialize(json));
}
}

0 comments on commit 9a889a5

Please sign in to comment.