Jump to content

Cloudy Possible? (Rain without Rain)


DeeKay

Recommended Posts

So i have to modifies the base Classes? urgh ...

 

No, it's called a new rendering class.

 

I know it's possible, as Mystcraft has "overcast" weather which is what you're looking for.  I just don't know how its done.

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

I'm not sure if Weatherpony's seasons mod does anything like this? At least it wouldn't surprise me :)

 

When I get home I'll try to look into what the place to do this was, maybe someone else pops inn and answers it before that but in the mean time it would be helpful to know which programming skill level you are at. Are you familiar with working with open gl or rendering from other projects?

 

 

Also you may find use in this site: http://greyminecraftcoder.blogspot.no/p/list-of-topics.html

Especially the one about the main game loop, helps you located where you should look for hooks into doing what you'd want to do :)

If you guys dont get it.. then well ya.. try harder...

Link to comment
Share on other sites

When I get home I'll try to look into what the place to do this was, maybe someone else pops inn and answers it before that but in the mean time it would be helpful to know which programming skill level you are at. Are you familiar with working with open gl or rendering from other projects?

 

No not really ... I program at work with Ruby / Ruby on Rails, did learn C# much and a bit C++.

But open gl isen't my, did program a little 2D Game with XNA .. but that isen't rly hard

 

EDIT ---

I think with base classes it isent hard to get work or? Anyway must be a code like that or not?:

renderRain();
setWorldLightLevel(4);
renderSun(flase);

 

But then i will find it ... I have no idea to code it, course i did look for a solution to modifies Base classes, but its a bit ... confused

Link to comment
Share on other sites

Well if you found a solution on how to do it with base edits, then you probably aren't far of from a solution to solving it without base edits.

 

What I usually do when I want to modify such things and I have no idea where minecraft does it's stuff is to head over to the above blog and look for clues. Then I start reading minecraft's code based on the information I have and what I can assume, eventually finding the place and doing the base edits I'd want.

 

If I get the desired effect when using base edits I proceed to find ways to hook into that class without base edits (and without ASM if possible, if you are unfamiliar with ASM then you may have some fun reading into it as it's a way to modify bytecode during runtime meaning you can modify base classes without touching the files).

 

 

If you look into the link above you will find a goldmine of information on how minecraft works, and looking in the game loop post you'd be able to see that the class you probably want to look at first is the "EntityRender" and that class can easily be replaced with your own version without base edits. There may be even better ways to hook into the specific part of it you'd want, I know it's possible to add custom sky renderer and other stuff with little effort for custom dimensions (and probably vanilla with a bit more effort).

 

 

Oh and depending on how exactly you want cloudy weather to be, you may get away with just drawing the weather effect during one of the render events but yeah that would really depend on what you'd need to do :)

 

 

If you guys dont get it.. then well ya.. try harder...

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

    • They were already updated, and just to double check I even did a cleanup and fresh update from that same page. I'm quite sure drivers are not the problem here. 
    • i tried downloading the drivers but it says no AMD graphics hardware has been detected    
    • Update your AMD/ATI drivers - get the drivers from their website - do not update via system  
    • As the title says i keep on crashing on forge 1.20.1 even without any mods downloaded, i have the latest drivers (nvidia) and vanilla minecraft works perfectly fine for me logs: https://pastebin.com/5UR01yG9
    • Hello everyone, I'm making this post to seek help for my modded block, It's a special block called FrozenBlock supposed to take the place of an old block, then after a set amount of ticks, it's supposed to revert its Block State, Entity, data... to the old block like this :  The problem I have is that the system breaks when handling multi blocks (I tried some fix but none of them worked) :  The bug I have identified is that the function "setOldBlockFields" in the item's "setFrozenBlock" function gets called once for the 1st block of multiblock getting frozen (as it should), but gets called a second time BEFORE creating the first FrozenBlock with the data of the 1st block, hence giving the same data to the two FrozenBlock :   Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=head] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@73681674 BlockEntityData : id:"minecraft:bed",x:3,y:-60,z:-6} Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=3, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=2, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} here is the code inside my custom "freeze" item :    @Override     public @NotNull InteractionResult useOn(@NotNull UseOnContext pContext) {         if (!pContext.getLevel().isClientSide() && pContext.getHand() == InteractionHand.MAIN_HAND) {             BlockPos blockPos = pContext.getClickedPos();             BlockPos secondBlockPos = getMultiblockPos(blockPos, pContext.getLevel().getBlockState(blockPos));             if (secondBlockPos != null) {                 createFrozenBlock(pContext, secondBlockPos);             }             createFrozenBlock(pContext, blockPos);             return InteractionResult.SUCCESS;         }         return super.useOn(pContext);     }     public static void createFrozenBlock(UseOnContext pContext, BlockPos blockPos) {         BlockState oldState = pContext.getLevel().getBlockState(blockPos);         BlockEntity oldBlockEntity = oldState.hasBlockEntity() ? pContext.getLevel().getBlockEntity(blockPos) : null;         CompoundTag oldBlockEntityData = oldState.hasBlockEntity() ? oldBlockEntity.serializeNBT() : null;         if (oldBlockEntity != null) {             pContext.getLevel().removeBlockEntity(blockPos);         }         BlockState FrozenBlock = setFrozenBlock(oldState, oldBlockEntity, oldBlockEntityData);         pContext.getLevel().setBlockAndUpdate(blockPos, FrozenBlock);     }     public static BlockState setFrozenBlock(BlockState blockState, @Nullable BlockEntity blockEntity, @Nullable CompoundTag blockEntityData) {         BlockState FrozenBlock = BlockRegister.FROZEN_BLOCK.get().defaultBlockState();         ((FrozenBlock) FrozenBlock.getBlock()).setOldBlockFields(blockState, blockEntity, blockEntityData);         return FrozenBlock;     }  
  • Topics

×
×
  • Create New...

Important Information

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