Jump to content

[Solved] [1.8] Block#setLightLevel not working


LordMastodon

Recommended Posts

So I've got this code:

 

@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ) {
	if (!world.isRemote) {
		inLitUpMode = (Boolean) state.getValue(LIT_UP);

		if(!inLitUpMode) {
			this.setLightLevel(1.0F);
			world.setBlockState(pos, state.withProperty(LIT_UP, true));
		} else {
			this.setLightLevel(0.0F);
			world.setBlockState(pos, state.withProperty(LIT_UP, false));
		}
	}

	return true;
}

 

Which works perfectly fine as far as switching the IBlockState, but

this.setLightLevel

doesn't seem to be doing anything. The model changes, the texture changes, the F3 blockstate display changes, but it doesn't start emitting any light. I really don't want to switch to a two-block system like the furnace because this already works perfectly well, but if you know of any bug with changing the light level like that or something like that, please help. Thanks in advance!

Who are you? Why have you brought me here? And why are there so many PewDiePie fanboys surrounding meeeeeeeee....... *falls into pit and dies*.

 

Also this. Check it out.

width=700 height=200http://i.imgur.com/J4rrGt6.png[/img]

Link to comment
Share on other sites

Hi

 

Here's an example furnace that works like that (single block instead of two like vanilla)

https://github.com/TheGreyGhost/MinecraftByExample/blob/master/src/main/java/minecraftbyexample/mbe31_inventory_furnace/Notes.txt

 

The key bits are-

in the TileEntity.update():

	// when the number of burning slots changes, we need to force the block to re-render, otherwise the change in
	//   state will not be visible.  Likewise, we need to force a lighting recalculation.
	// The block update (for renderer) is only required on client side, but the lighting is required on both, since
	//    the client needs it for rendering and the server needs it for crop growth etc
	int numberBurning = numberOfBurningFuelSlots();
	if (cachedNumberOfBurningSlots != numberBurning) {
		cachedNumberOfBurningSlots = numberBurning;
		if (worldObj.isRemote) {
			worldObj.markBlockForUpdate(pos);
		}
		worldObj.checkLightFor(EnumSkyBlock.BLOCK, pos);
	}

and in your block

  @Override
public int getLightValue(IBlockAccess world, BlockPos pos) {
	int lightValue = 0;
	IBlockState blockState = getActualState(getDefaultState(), world, pos);
	int burningSides = (Integer)blockState.getValue(BURNING_SIDES_COUNT);

   	if (burningSides == 0) {
		lightValue = 0;
	} else {
		// linearly interpolate the light value depending on how many slots are burning
		lightValue = ONE_SIDE_LIGHT_VALUE + (int)((FOUR_SIDE_LIGHT_VALUE - ONE_SIDE_LIGHT_VALUE) / (4.0 - 1.0) * burningSides);
	}
	lightValue = MathHelper.clamp_int(lightValue, 0, FOUR_SIDE_LIGHT_VALUE);
	return lightValue;
}

 

-TGG

Link to comment
Share on other sites

 

If I do this:

 

if(!inLitUpMode) {
    world.setBlockState(pos, state.withProperty(LIT_UP, true));

    this.setBlockBounds(0.0F, 0.0F, 0.0F, 16.0F, 16.0F, 16.0F);
} else {
    world.setBlockState(pos, state.withProperty(LIT_UP, false));

    this.setBlockBounds(5.0F, 0.0F, 5.0F, 11.0F, 2.0F, 11.0F);
}

 

Than the small block's bounds are the size of a normal block and the full block's bounds are hugely massive. Any idea how that's supposed to work?

Who are you? Why have you brought me here? And why are there so many PewDiePie fanboys surrounding meeeeeeeee....... *falls into pit and dies*.

 

Also this. Check it out.

width=700 height=200http://i.imgur.com/J4rrGt6.png[/img]

Link to comment
Share on other sites

Instead of setting the block bounds directly, you should override

Block#setBlockBoundsBasedOnState

and set the bounds there.

Block

is a singleton, so calling

Block#setBlockBounds

modifies the bounds for all occurrences of the block.

setBlockBoundsBasedOnState

should be called before the bounds are queried.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

So I'm now using this:

 

this.setBlockBounds(0.315F, 0.005F, 0.315F, 0.685F, 0.125F, 0.685F);

 

Which seems like abhorrent practice to me, due to the exact nature of the numbers, but whatever. That yields this:

 

wXYFpWt.png

 

But the bounds look sort of glitchy.

 

Side note: the minY is 0.005F instead of 0.0 because if I left it as 0.0 the bottom would disappear under the ground.

 

EDIT 1

 

Switching to

Block#setBlockBoundsBasedOnState

worked fine, but the bounds still looks sort of odd.

Who are you? Why have you brought me here? And why are there so many PewDiePie fanboys surrounding meeeeeeeee....... *falls into pit and dies*.

 

Also this. Check it out.

width=700 height=200http://i.imgur.com/J4rrGt6.png[/img]

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.



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Please help me, I'm a dolt.    
    • Realizing I was a victim of a scam was a devastating blow. My initial investment of $89,000, driven by dreams of financial success and the buzz surrounding a new cryptocurrency project, turned into a nightmare. The project promised high returns and rapid gains, attracting many eager investors like myself. However, as time passed and inconsistencies began to surface, it became evident that I had made a grave mistake by not thoroughly vetting the brokerage company handling the investment. Feeling anxious and betrayed, I desperately searched for a way to recover my funds. During this frantic search, I stumbled upon the Brigadia Tech Recovery tool through a Facebook post. With little left to lose, I reached out to their team for help. To my relief, they were quick to respond and immediately started recovering my compromised email and regaining access to my cryptocurrency wallets. The team at Brigadia Tech Recovery was incredibly professional and transparent throughout the process. They meticulously traced the digital footprints left by the scammers, employing advanced technological methods to unravel the complex network that had ensnared my funds. Their expertise in cybersecurity and recovery strategies gradually began to turn the tide in my favor. Although the scammers had already siphoned off $30,000 worth of Bitcoin, Brigadia Tech Recovery was relentless in their pursuit. They managed to expose the fraudulent activities of the scam operators, revealing their identities and the mechanisms they used to lure investors. This exposure was crucial not only for my case but also as a warning to the wider community about the perils of unverified investment schemes. As we progressed, it became a race against time to retrieve the remaining $59,000 before the scammers could vanish completely. Each step forward was met with new challenges, as these criminals constantly shifted tactics and moved their digital assets to evade capture. Nonetheless, the determination and skill of the recovery team kept us hopeful. Throughout this ordeal, I learned the hard value of caution and due diligence in investment, especially within the volatile world of cryptocurrency. The experience has been incredibly taxing, both emotionally and financially, but the support and results provided by Brigadia Tech Recovery have been indispensable. Currently, the recovery process is ongoing and I have already received 50% of my money, and while the outcome remains uncertain, the progress made so far gives me hope. The battle to recover the full amount of my investment continues, and with the expertise of Brigadia Tech Recovery, I remain optimistic about the eventual recovery of my funds. Their commitment to their clients and proficiency in handling such complex cases truly sets them apart in the field of cyber recovery.I share this testimony because i am sure someone out there is going through the same issue and devastated mentally by all these fake brokers all around the world,This is the main contact information incase you are interested to recover your lost investments  Email:(Brigadiatechremikeable (@) Proton.Me) Telegram +1 (323) 910-1605)  
    • So I finally downloaded forge for my girl and I, I got hers working no problem but when I did it, I load up and get a black screen with the narration with these codes, I've tried to figure it out but I give up after 3 days, ZERO mods or anything, help would be greatly appreciated. [18:14:48] [main/WARN] [os.ut.FileUtil/]: Configuration conflict: there is more than one oshi.properties file on the classpath: [jar:file:///C:/Users/Night/Desktop/Minecraft%20Modded%20Server/libraries/com/github/oshi/oshi-core/6.4.10/oshi-core-6.4.10.jar!/oshi.properties, jar:file:/C:/Users/Night/Desktop/Minecraft%20Modded%20Server/libraries/com/github/oshi/oshi-core/6.4.10/oshi-core-6.4.10.jar!/oshi.properties, jar:file:///C:/Users/Night/Desktop/Minecraft%20Modded%20Server/libraries/com/github/oshi/oshi-core/6.4.10/oshi-core-6.4.10.jar!/oshi.properties, jar:file:/C:/Users/Night/Desktop/Minecraft%20Modded%20Server/libraries/com/github/oshi/oshi-core/6.4.10/oshi-core-6.4.10.jar!/oshi.properties] [18:14:49] [main/WARN] [os.ut.FileUtil/]: Configuration conflict: there is more than one oshi.architecture.properties file on the classpath: [jar:file:///C:/Users/Night/Desktop/Minecraft%20Modded%20Server/libraries/com/github/oshi/oshi-core/6.4.10/oshi-core-6.4.10.jar!/oshi.architecture.properties, jar:file:/C:/Users/Night/Desktop/Minecraft%20Modded%20Server/libraries/com/github/oshi/oshi-core/6.4.10/oshi-core-6.4.10.jar!/oshi.architecture.properties, jar:file:///C:/Users/Night/Desktop/Minecraft%20Modded%20Server/libraries/com/github/oshi/oshi-core/6.4.10/oshi-core-6.4.10.jar!/oshi.architecture.properties, jar:file:/C:/Users/Night/Desktop/Minecraft%20Modded%20Server/libraries/com/github/oshi/oshi-core/6.4.10/oshi-core-6.4.10.jar!/oshi.architecture.properties] [18:14:49] [main/WARN] [os.dr.wi.pe.PerfmonDisabled/]: Invalid registry value type detected for PerfOS counters. Should be REG_DWORD. Ignoring: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PerfOS\Performance\Disable Performance Counters.
    • Somewhat recently, I wanted to try to get into mod development. I've been following the videos by Kaupenjoe, and the mod has been coming along well... until I tried to add the Create mod as an API for my mod. I followed the guide on Create's Github, but no matter what I tried, it corrupted everything, and either the build failed or Minecraft crashed on startup. I have found absolutely nothing relevant online about the issue, and I don't know what to try next. How do I add Create as dependency? Here is the Github page for my mod.
    • Hello 44STEFAN444
  • Topics

×
×
  • Create New...

Important Information

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