Jump to content

[Solved]Design Approach for adding snow for seasonal change


aw_wolfe

Recommended Posts

I would like to add snow for seasonal changes and am not sure which approach makes the most sense...better design... Add the ability to snow in areas that are not normally set to snow.

 

The biomes have a boolean snow enabled, but it is read only, so can't change it. Also, the EntityRenderer.renderRainSnow also uses a float temperature value, which is biome specific (height modified), but is also read-only.

My options, as far as I can tell:

1) create a new biome for each one I want to replace an expose the temperature and snow enabled, which I can then set manually as the seasons progress. I've experimented with this, by using the BiomeManager and removing all forests, adding my own class derived form BiomeForest (but not working, something I'm doing isn't working)

2) create a new rain/snow manager that mimics MC behavior from EntityRenderer.renderRainSnow but with my modifications...seems easier to me to implement (mainly copy paste), but less flexible later.

 

I've been struggling to get option 1 working

ImmutableList <BiomeEntry> blist=BiomeManager.getBiomes(BiomeType.WARM);
	Iterator bit=blist.iterator();
	while(bit.hasNext()){
		BiomeEntry en=(BiomeEntry)bit.next();
		if(en.biome.getBiomeName().toLowerCase().contains("forest")){
			
			BiomeManager.removeBiome(BiomeType.WARM, en);
		}
	}
	blist=BiomeManager.getBiomes(BiomeType.COOL);
	bit=blist.iterator();
	while(bit.hasNext()){
		BiomeEntry en=(BiomeEntry)bit.next();
		if(en.biome.getBiomeName().toLowerCase().contains("forest")){
			
			BiomeManager.removeBiome(BiomeType.COOL, en);
		}
	}
//after removing all forest biomes with BiomeManager

BiomeProperties seasons_forest=new Biome.BiomeProperties("SForest").setTemperature(0.1F).setRainfall(0.8F).setSnowEnabled();
	
	BiomeManager.addBiome(BiomeType.WARM, new BiomeEntry(new BiomeForestR(BiomeForest.Type.NORMAL, seasons_forest), 10));
	BiomeManager.addBiome(BiomeType.COOL, new BiomeEntry(new BiomeForestR(BiomeForest.Type.NORMAL, seasons_forest), 10));
  
  //this generates a list with "Extreme Hills,Plains,Swampland,SForest
  ImmutableList<BiomeEntry> list=BiomeManager.getBiomes(BiomeType.WARM);
	Iterator it=list.iterator();
	System.out.println("Dump Biomes");
	while(it.hasNext()){
		
		BiomeEntry en=(BiomeEntry)it.next();
		System.out.println(en.biome.getBiomeName());
		
	}

But when I check by playing game the normal forest is created with temp 0.7 and snow enabled=false instead of my 0.1 and snow enable=true.

I am probably doing something wrong with replacing the forests, but I don't want to spend more time pursuing option 1, if it is not the best approach.

 

Thanks,

Tony

Edited by aw_wolfe
Link to comment
Share on other sites

Ok, this is like 4000 times more complicated than you think.Trust me, I did it.

 

The "can snow" boolean is basically garbage and controls nothing AFAICT. Snow is entirely governed by whether or not precipitation (rain) is allowed, the biome's temperature, and the Y level of the block (mountains are colder at the top).

 

You want seasons? You need to create a way to determine the date from the totalWorldTime, adjust the biome temperature and rainfall values as necessary (AND ON THE CLIENT), deal with chunk-border update problems (if no blocks change the grass color doesn't update), and let vanilla rain/snow stuff take over from there.

 

It's a bitch. It doesn't work very well, I had to do some really hackish things (in 1.7) that I'm not proud of, and getting ice to melt and prevent permanently freezing the ocean is basically impossible. 

Edited by Draco18s

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Thanks.

I already have a calendar, daytime/night cycle manager (longer days in summer, longer nights in winter). A weather controller (rain more in spring), etc....  The snow was an issue. I also still can't get my forest biome to replace the standard forest.  Is there a good biome tutorial for 1.11.2 ? All biomes tuts I've seen so far are for older version where most of the functions approaches are deprepricated.

 

I'll see if I can manually create own renderRainSnow  () and install on client players. Once I have the effect, then really just need to find where MC adds snow to blocks during snow to complete the effect.

 

I'll post code back here if I can get it working.

Link to comment
Share on other sites

OreCruncher: thanks.....

Tough as Nails looks great. I figured I was re-inventing the wheel a bit on some of what I was doing, but was a good way for me to learn a new environment by starting from scratch on something. Though at some point, tearing your hair out stops being fun :).

 

Will go through it tomorrow, test it, and pull out what I need.

 

Tony

 

 

Link to comment
Share on other sites

9 hours ago, aw_wolfe said:

I also still can't get my forest biome to replace the standard forest.  Is there a good biome tutorial for 1.11.2 ? All biomes tuts I've seen so far are for older version where most of the functions approaches are deprepricated.

Because biomes use forge registries now (just like item and blocks), you can replace them using substitution aliases.

First, read up on forge registries here - http://mcforge.readthedocs.io/en/latest/concepts/registries/.

Now, to replace forest biome, register your own forest biome just like you would a new biome, then retrieve biome registry (either trough Biome or GameRegistry) and call #addSubstitutionAlias(String modid, ResourceLocation nameToReplace, Biome replacement).

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • rftoolsbuilder:shielding_cutout (from lostcities-1.19-6.0.24.jar),rftoolsstorage:crafting_manager (from lostcities-1.19-6.0.24.jar),deepresonance:dense_glass (from lostcities-1.19-6.0.24.jar),restrictions:oneway (from lostcities-1.19-6.0.24.jar),restrictions:oneway_wall (from lostcities-1.19-6.0.24.jar),lostruins:glassgray3x2_complete (from lostcities-1.19-6.0.24.jar),lostruins:glassgray3x2_pane_complete (from lostcities-1.19-6.0.24.jar),lostruins:glassgray3x2_mossy (from lostcities-1.19-6.0.24.jar),lostruins:glassgray3x2_pane_mossy (from lostcities-1.19-6.0.24.jar),lostruins:glassgray3x2_broken (from lostcities-1.19-6.0.24.jar),lostruins:glassgray3x2_pane_broken (from lostcities-1.19-6.0.24.jar),lostruins:glassgray3x2_broken_mossy (from lostcities-1.19-6.0.24.jar),lostruins:glassgray3x2_pane_broken_mossy (from lostcities-1.19-6.0.24.jar),lostruins:glassgray3x2_vines (from lostcities-1.19-6.0.24.jar),lostruins:glassgray3x2_pane_vines (from lostcities-1.19-6.0.24.jar)[13:50:17] [main/INFO] [minecraft/RecipeManager]: Skipping loading recipe supplementaries:inspirations/blackboard_clear as it's serializer returned null[13:50:17] [main/INFO] [minecraft/RecipeManager]: Skipping loading recipe supplementaries:inspirations/flag_dye as it's serializer returned null[13:50:17] [main/INFO] [minecraft/RecipeManager]: Skipping loading recipe supplementaries:inspirations/flag_clear as it's serializer returned null[13:50:17] [main/INFO] [minecraft/RecipeManager]: Loaded 36 recipes[13:50:17] [main/INFO] [Spartan Weaponry/]: Adding Diamond Weapons to the End City Treasure Loot Table![13:50:17] [main/INFO] [Spartan Weaponry/]: Adding Longbow and Heavy Crossbow related loot to the Village Fletcher Loot Table![13:50:18] [main/INFO] [Spartan Weaponry/]: Adding Iron Weapons to the Village Weaponsmith Loot Table![13:50:18] [main/ERROR] [minecraft/ServerFunctionLibrary]: Failed to load function watching:checkjava.util.concurrent.CompletionException: java.lang.IllegalArgumentException: Whilst parsing command on line 1: Unknown or incomplete command, see below for error at position 0: <--[HERE]at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315) ~[?:?] {re:mixin}at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320) ~[?:?] {re:mixin}at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1770) ~[?:?] {}at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760) ~[?:?] {}at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {re:computing_frames}at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {re:computing_frames}at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {}Caused by: java.lang.IllegalArgumentException: Whilst parsing command on line 1: Unknown or incomplete command, see below for error at position 0: <--[HERE]at net.minecraft.commands.CommandFunction.m_77984_(CommandFunction.java:63) ~[server-1.19.2-20220805.130853-srg.jar%23299!/:?] {re:classloading}at net.minecraft.server.ServerFunctionLibrary.m_214320_(ServerFunctionLibrary.java:85) ~[server-1.19.2-20220805.130853-srg.jar%23299!/:?] {re:classloading}at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?] {}... 6 more[13:50:18] [main/INFO] [quark/]: [Automatic Recipe Unlock] Removed 3712 recipe advancements[13:50:18] [main/INFO] [minecraft/AdvancementList]: Loaded 684 advancements[13:50:18] [main/INFO] [at.dy.se.ItemLightLevels/]: Clearing item tag to light level mapping cache[13:50:18] [main/INFO] [sl.ma.fl.tr.FluidContainerTransferManager/]: Loaded 0 dynamic modifiers in 0.246528 ms[13:50:18] [main/INFO] [quark/]: Modified advancement minecraft:husbandry/wax_on with 2 patches[13:50:18] [main/INFO] [quark/]: Modified advancement minecraft:adventure/kill_a_mob with 3 patches[13:50:18] [main/INFO] [quark/]: Modified advancement minecraft:husbandry/bred_all_animals with 3 patches[13:50:18] [main/INFO] [quark/]: Modified advancement minecraft:adventure/kill_all_mobs with 3 patches[13:50:18] [main/INFO] [quark/]: Modified advancement minecraft:husbandry/make_a_sign_glow with 1 patches[13:50:18] [main/INFO] [quark/]: Modified advancement minecraft:husbandry/balanced_diet with 3 patches[13:50:18] [main/INFO] [quark/]: Modified advancement minecraft:husbandry/plant_seed with 1 patches[13:50:18] [main/INFO] [quark/]: Modified advancement minecraft:nether/all_effects with 2 patches[13:50:18] [main/INFO] [quark/]: Modified advancement minecraft:husbandry/wax_off with 2 patches[13:50:18] [main/INFO] [quark/]: Modified advancement minecraft:adventure/adventuring_time with 1 patches[13:50:18] [main/INFO] [quark/]: Modified advancement minecraft:nether/all_potions with 1 patches[13:50:18] [main/INFO] [supplementaries/]: Loaded 8 flute songs[13:50:20] [main/INFO] [Spartan Weaponry/]: Finished initialising Weapon Traits & Attributes! Took 11.202781ms[13:50:20] [main/INFO] [supplementaries/]: Finished additional setup in 103 ms[13:50:20] [main/WARN] [minecraft/DedicatedServerProperties]: Failed to parse level-type biomesoplenty, defaulting to minecraft:normal[13:50:20] [Server thread/INFO] [minecraft/DedicatedServer]: Starting minecraft server version 1.19.2[13:50:20] [Server thread/INFO] [minecraft/DedicatedServer]: Loading properties[13:50:20] [Server thread/INFO] [minecraft/DedicatedServer]: Default game type: SURVIVAL[13:50:20] [Server thread/INFO] [minecraft/MinecraftServer]: Generating keypair[13:50:21] [Server thread/INFO] [minecraft/DedicatedServer]: Starting Minecraft server on :::25983[13:50:21] [Server thread/INFO] [minecraft/ServerConnectionListener]: Using epoll channel type[13:50:21] [Thread-0/INFO] [de.ca.ca.CaveDweller/]: Server configuration has been reloaded[13:50:21] [Thread-0/INFO] [de.ca.ca.CaveDweller/]: Server configuration has been reloaded[13:50:21] [Thread-0/INFO] [de.ca.st.SteveDweller/]: Server configuration has been reloaded[13:50:21] [Thread-0/INFO] [de.ca.st.SteveDweller/]: Server configuration has been reloaded[13:50:21] [Thread-0/INFO] [de.ca.sk.Skinstalker/]: Server configuration has been reloaded[13:50:21] [Thread-0/INFO] [de.ca.sk.SkinwalkerOverhaul/]: Server configuration has been reloaded[13:50:21] [Thread-0/INFO] [de.ca.sk.SkinwalkerOverhaul/]: Server configuration has been reloaded[13:50:21] [Thread-0/INFO] [de.ca.go.Goatman/]: Server configuration has been reloaded[13:50:21] [Thread-0/INFO] [de.ca.go.Goatman/]: Server configuration has been reloaded[13:50:21] [Server thread/INFO] [at.dy.se.mo.PlayerSelfLightSource/]: item config parser identified itemstack 1 torch[13:50:21] [Server thread/INFO] [at.dy.se.mo.PlayerSelfLightSource/]: item config parser identified itemstack 1 glowstone[13:50:21] [Server thread/INFO] [at.dy.se.mo.PlayerSelfLightSource/]: item config parser finished, item count: 2[13:50:21] [Server thread/INFO] [at.dy.se.mo.PlayerSelfLightSource/]: item config parser identified itemstack 1 torch[13:50:21] [Server thread/INFO] [at.dy.se.mo.PlayerSelfLightSource/]: item config parser finished, item count: 1[13:50:21] [Server thread/INFO] [at.dy.se.mo.DroppedItemsLightSource/]: item config parser identified itemstack 1 torch[13:50:21] [Server thread/INFO] [at.dy.se.mo.DroppedItemsLightSource/]: item config parser identified itemstack 1 glowstone[13:50:21] [Server thread/INFO] [at.dy.se.mo.DroppedItemsLightSource/]: item config parser finished, item count: 2[13:50:21] [Server thread/INFO] [at.dy.se.mo.DroppedItemsLightSource/]: item config parser identified itemstack 1 torch[13:50:21] [Server thread/INFO] [at.dy.se.mo.DroppedItemsLightSource/]: item config parser finished, item count: 1[13:50:21] [Server thread/INFO] [Framework/]: Loading server configs...[13:50:22] [Server thread/INFO] [terrablender/]: Initialized TerraBlender biomes for level stem minecraft:overworld[13:50:22] [Server thread/INFO] [terrablender/]: Initialized TerraBlender biomes for level stem minecraft:the_nether[13:50:22] [Server thread/INFO] [minecraft/DedicatedServer]: Preparing level "world"[13:50:35] [Server thread/INFO] [minecraft/MinecraftServer]: Preparing start region for dimension minecraft:overworld[13:50:40] [Worker-Main-1/INFO] [minecraft/LoggerChunkProgressListener]: Preparing spawn area: 0%[13:50:40] [Worker-Main-1/INFO] [minecraft/LoggerChunkProgressListener]: Preparing spawn area: 0%[13:50:40] [Worker-Main-1/INFO] [minecraft/LoggerChunkProgressListener]: Preparing spawn area: 0%[13:50:40] [Worker-Main-1/INFO] [minecraft/LoggerChunkProgressListener]: Preparing spawn area: 0%[13:50:40] [Worker-Main-1/INFO] [minecraft/LoggerChunkProgressListener]: Preparing spawn area: 0%[13:50:40] [Worker-Main-1/INFO] [minecraft/LoggerChunkProgressListener]: Preparing spawn area: 0%[13:50:40] [Worker-Main-1/INFO] [minecraft/LoggerChunkProgressListener]: Preparing spawn area: 0%[13:50:40] [Worker-Main-1/INFO] [minecraft/LoggerChunkProgressListener]: Preparing spawn area: 0%[13:50:40] [Worker-Main-1/INFO] [minecraft/LoggerChunkProgressListener]: Preparing spawn area: 0%[13:50:40] [Worker-Main-1/INFO] [minecraft/LoggerChunkProgressListener]: Preparing spawn area: 0%[13:50:40] [Worker-Main-1/INFO] [minecraft/LoggerChunkProgressListener]: Preparing spawn area: 0%[13:50:40] [Worker-Main-1/INFO] [minecraft/LoggerChunkProgressListener]: Preparing spawn area: 0%[13:50:41] [Worker-Main-1/INFO] [minecraft/LoggerChunkProgressListener]: Preparing spawn area: 0%[13:50:41] [Worker-Main-1/INFO] [minecraft/LoggerChunkProgressListener]: Preparing spawn area: 0%[13:50:42] [Worker-Main-1/INFO] [minecraft/LoggerChunkProgressListener]: Preparing spawn area: 17%[13:50:42] [Server thread/INFO] [minecraft/LoggerChunkProgressListener]: Time elapsed: 7618 ms[13:50:42] [Server thread/INFO] [minecraft/DedicatedServer]: Done (21.501s)! For help, type "help"[13:50:42] [Server thread/INFO] [minecraft/DedicatedServer]: Starting GS4 status listener[13:50:42] [Server thread/INFO] [minecraft/GenericThread]: Thread Query Listener started[13:50:42] [Query Listener #1/INFO] [minecraft/QueryThreadGs4]: Query running on :::25983[13:50:42] [Server thread/INFO] [ne.mi.se.pe.PermissionAPI/]: Successfully initialized permission handler forge:default_handler
    • The conflict arises from discrepancies between different versions of GSON. My suggestion would be to remove your dependency on GSON 2.8.6 and opt for a different approach. Instead of using the static method JsonParser.parseString, you can create a JsonParser object and then use the parse method.   JsonParser jsonParser = new JsonParser(); jsonParser.parse(jsonString)  
    • On the download page, click the button for "Show all versions", point at the little i next to the Installer link, and use the Direct Download link that pops up. That should let you download it if you have issues with the adfocus thingy.
    • I was downloading Forge's installer for the latest Minecraft version. The official Forge page led to the familiar "press skip after countdown" ad page I've gone through many times. This time, the "Skip" button just never showed up after the countdown finished. The page for the ad was clearly bugged, because it showed as a blank white page up to the rows of pixels right at the top, where I saw a sliver of the actual page 2 or so inches tall but with the width of the whole page. I tried different versions (1.20.4 latest and 1.20.2 recommended), refreshing, closing the tab and going there again, to no avail. Then this Forum's signup Security Check wouldn't let me through. I rebooted my PC and now it did work just fine. But the download still doesn't (still no Skip button), even after booting my PC. The the ad was seemingly bugged as well, because it showed as a blank white page up to the rows of pixels right at the top, 2 or so inches tall but the width of the whole page. I even manually scrolled down to its bottom and back up, but that didn't fix it either. I sent a report of the same issue to Adfoc.us, but that led to a page labeled "Just a moment..." that doesn't lead anywhere after 10mins of waiting. Refreshing the page does nothing, and there is no confirmation message in my email. So I don't even know if the report to AdFoc.us went through. I'm stumped.
    • Did some more testing and found workaround. Newest MC and Forge for it didn't have this problem, also isolated that problem is only with fullscreen, meaning there is problem with exclusive fullscreen handling when application gets moved to background/minimized. So installing this mod fixed problem for MC 1.12.2 and forge for it https://www.curseforge.com/minecraft/mc-mods/fullscreen-windowed-borderless-for-minecraft
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.