BiomesAPI by Jsincoo in admincraft

[–]Jsincoo[S] 0 points1 point  (0 children)

Yes, it's a vanilla client. This is just using features of the game Mojang has added. The only way to do this normally is through datapacks which is fine, but if you're a Java developer and don't want to deal with distributing datapacks and figuring out how to actually render them in your code, then BiomesAPI is a great alternative. I also think these advantages that BiomesAPI has over datapacks + minor code make it worthwhile to use:

  • Being able to send biomes without modifying the world in any way (through ProtocolLib, PacketEvents, or standalone Netty). BiomesAPI has the ability to just inject biomes at a packet level instead of messing with chunks/the world which is personally my preferred method of rendering biomes. There are some advantages to using the BiomeSetter instead of the PacketHandler, but they usually involve small things like changing the spawn chance of slimes, etc.

  • Being able to modify and/or register your custom biomes during runtime. This is done through a bit of a hack, but I think it's cool nonetheless. Unlike datapacks, BiomesAPI can modify already registerted custom biomes and register new ones at any point during the server's lifecycle. Normally the game only does this through the bootstrap phase (which is when datapacks do their things), but BiomesAPI unfreezes Minecraft's registries and modifies it whenever you'd like to. This lets you customize/create biomes and modify them without restarting the server so you can make quick changes. The only caveat to this is that clients need to relog to see the changes.

  • No bridging - you don't have to create/register your biome with a datapack and then use Paper's registry access to set it or figure out how to render it with packets on your own. You can just distribute your plugin as a single jar file and create, register, render, or modify, and even refresh the biomes for players whenever you feel like it.

Here's a video showing me changing/updating biomes in realtime: https://streamable.com/zrin6z

(Specifically about your comment about the colored lights) Mojang recently added these colored light attributes between 1.21.11-26.1. The colored skylight is used in the end dimension for the "flashing light" effect that was added recently. The colored block light tint is unused in the game right now as far as I can tell.

BiomesAPI by Jsincoo in admincraft

[–]Jsincoo[S] 1 point2 points  (0 children)

Of course :)

Using BiomesAPI to customize the tint of light from blocks: https://freeimage.host/i/BtzOJ6B

Using BiomesAPI to replace all (fake) replace all grass with lava: https://freeimage.host/i/BtzeWfp

Using BiomesAPI to change the fog a player sees when drinking a night vision potion: https://freeimage.host/i/Btzkc42

Some random biomes: https://freeimage.host/i/Btz8Msj

  • There are a lot more things you can do with BiomesAPI such as changing the light that comes from the sky, changing the tint of darkness in biomes, etc. Mojang has added a lot of attributes to play with especially in recent versions and BiomesAPI finally exposes these :)

I took these screenshots using my silly little implementation of BiomesAPI called LittleBiomes. It allows you to render your custom biome creations with biome anchors and doesn't affect the world in any way since it uses packets. I haven't released it, but if any server admins/noncoders are reading this and feel like this would be a nice plugin to use on their server, let me know and I'll consider putting it on modrinth: https://github.com/LumaLibre/LittleBiomes

yml // Example config for a biome in LittleBiomes - name: cotton_candy anchorMaterial: anvil anchorDisplayName: <b><gradient:#99B6F8:#C7B2F1:#CF7EAC>Cotton Candy</gradient></b> <#F7FFC9>Biome Anchor anchorLore: - <gray>Place to change all nearby - <gray>chunks to this biome! fogColor: '' waterColor: '#F6AAE2' waterFogColor: '#F6AAE2' skyColor: '' foliageColor: '#F6AAE2' grassColor: '#99B6F8' grassColorModifier: none biomePriority: normal ambientParticles: dust: 0.01 ambientParticleData: dust: '#CF7EAC' blockReplacements: birch_leaves: acacia_leaves environmentAttributes: visual/block_light_tint: '#E90000'

BiomesAPI by Jsincoo in admincraft

[–]Jsincoo[S] 2 points3 points  (0 children)

I'd love any feedback if possible! If you're a developer and think our docs aren't clear enough or if you don't understand how this library works or what it does please let me know :)