New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[1.10.2] Using ActuallyAdditions Phantom Energyface with Energy Conduit voids energy #4083

Closed
SoniEx2 opened this Issue Mar 8, 2017 · 5 comments

Comments

Projects
None yet
3 participants
@SoniEx2

SoniEx2 commented Mar 8, 2017

Issue Description:

Phantom Energytrashcan

20480RF/t "Trash" Rate

What happens:

Energy is voided.

What you expected to happen:

Nothing.

Steps to reproduce:

  1. Put Phantom Energyface.
  2. Put Conduit.
  3. Link Energyface to Conduit.
  4. (Break and replace conduit?)
  5. Give power to conduit.
  6. ??? Where's my power going?
    ...

Affected Versions (Do not use "latest"):

[21:27:13] [Client thread/INFO]: [net.minecraft.init.Bootstrap:printToSYSOUT:649]: ---- Minecraft Crash Report ----

WARNING: coremods are present:
  EnderCorePlugin (EnderCore-1.10.2-0.4.1.65-beta.jar)
Contact their authors BEFORE contacting forge

// You're mean.

Time: 07/03/17 9:27 PM
Description: Manually triggered debug crash

java.lang.Throwable
	at net.minecraft.client.Minecraft.runTickKeyboard(Minecraft.java:1963)
	at net.minecraft.client.Minecraft.runTick(Minecraft.java:1846)
	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1118)
	at net.minecraft.client.Minecraft.run(Minecraft.java:406)
	at net.minecraft.client.main.Main.main(Main.java:118)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
	at GradleStart.main(GradleStart.java:26)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Client thread
Stacktrace:
	at net.minecraft.client.Minecraft.runTickKeyboard(Minecraft.java:1963)

-- Affected level --
Details:
	Level name: MpServer
	All players: 1 total; [EntityPlayerSP['Player812'/75, l='MpServer', x=-912.35, y=5.00, z=-1326.54]]
	Chunk stats: MultiplayerChunkCache: 289, 289
	Level seed: 0
	Level generator: ID 01 - flat, ver 0. Features enabled: false
	Level generator options: 
	Level spawn location: World: (-906,4,-1316), Chunk: (at 6,0,12 in -57,-83; contains blocks -912,0,-1328 to -897,255,-1313), Region: (-2,-3; contains chunks -64,-96 to -33,-65, blocks -1024,0,-1536 to -513,255,-1025)
	Level time: 27916 game time, 16876 day time
	Level dimension: 0
	Level storage version: 0x00000 - Unknown?
	Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
	Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
	Forced entities: 32 total; [EntityCow['Cow'/2, l='MpServer', x=-983.50, y=4.00, z=-1402.50], EntityPig['Pig'/3, l='MpServer', x=-985.50, y=4.00, z=-1406.50], EntityCow['Cow'/4, l='MpServer', x=-976.50, y=4.00, z=-1357.50], EntitySheep['Sheep'/5, l='MpServer', x=-978.80, y=4.00, z=-1313.49], EntityHorse['Donkey'/6, l='MpServer', x=-984.20, y=4.00, z=-1311.20], EntitySheep['Sheep'/7, l='MpServer', x=-977.73, y=4.00, z=-1305.82], EntityCow['Cow'/8, l='MpServer', x=-966.81, y=4.00, z=-1366.29], EntityCow['Cow'/9, l='MpServer', x=-971.50, y=4.00, z=-1357.50], EntityCow['Cow'/10, l='MpServer', x=-975.50, y=4.00, z=-1359.50], EntitySheep['Sheep'/11, l='MpServer', x=-975.79, y=4.00, z=-1310.63], EntitySheep['Sheep'/15, l='MpServer', x=-950.39, y=4.00, z=-1300.76], EntityChicken['Chicken'/16, l='MpServer', x=-944.18, y=4.00, z=-1283.39], EntityChicken['Chicken'/18, l='MpServer', x=-938.89, y=4.00, z=-1247.76], EntitySheep['Sheep'/24, l='MpServer', x=-942.35, y=4.00, z=-1309.21], EntitySheep['Sheep'/25, l='MpServer', x=-947.33, y=4.00, z=-1309.21], EntityChicken['Chicken'/26, l='MpServer', x=-938.50, y=4.00, z=-1282.50], EntitySheep['Sheep'/27, l='MpServer', x=-941.50, y=4.00, z=-1280.50], EntityItem['item.item.egg'/498908, l='MpServer', x=-938.38, y=4.00, z=-1281.67], EntitySheep['Sheep'/28, l='MpServer', x=-940.50, y=4.00, z=-1280.50], EntityChicken['Chicken'/31, l='MpServer', x=-934.78, y=4.00, z=-1247.58], EntitySheep['Sheep'/33, l='MpServer', x=-932.25, y=4.00, z=-1297.34], EntityCow['Cow'/34, l='MpServer', x=-899.27, y=4.00, z=-1382.86], EntityCow['Cow'/35, l='MpServer', x=-889.77, y=4.00, z=-1397.54], EntityCow['Cow'/36, l='MpServer', x=-888.09, y=4.00, z=-1396.77], EntityCow['Cow'/37, l='MpServer', x=-885.43, y=4.00, z=-1398.15], EntityPig['Pig'/38, l='MpServer', x=-848.19, y=4.00, z=-1395.74], EntityChicken['Chicken'/41, l='MpServer', x=-832.88, y=4.00, z=-1400.28], EntityPig['Pig'/42, l='MpServer', x=-832.79, y=4.00, z=-1394.70], EntityPig['Pig'/43, l='MpServer', x=-846.77, y=4.00, z=-1398.73], EntitySheep['Sheep'/45, l='MpServer', x=-836.84, y=4.00, z=-1278.84], EntityCow['Cow'/46, l='MpServer', x=-845.30, y=4.00, z=-1252.14], EntityPlayerSP['Player812'/75, l='MpServer', x=-912.35, y=5.00, z=-1326.54]]
	Retry entities: 0 total; []
	Server brand: fml,forge
	Server type: Integrated singleplayer server
Stacktrace:
	at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:451)
	at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2779)
	at net.minecraft.client.Minecraft.run(Minecraft.java:427)
	at net.minecraft.client.main.Main.main(Main.java:118)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
	at GradleStart.main(GradleStart.java:26)

-- System Details --
Details:
	Minecraft Version: 1.10.2
	Operating System: Linux (amd64) version 4.9.11-2-ck-ivybridge
	Java Version: 1.8.0_121, Oracle Corporation
	Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Oracle Corporation
	Memory: 371900424 bytes (354 MB) / 1155530752 bytes (1102 MB) up to 1834483712 bytes (1749 MB)
	JVM Flags: 0 total; 
	IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
	FML: MCP 9.32 Powered by Forge 12.18.3.2185 7 mods loaded, 7 mods active
	States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
	UCHIJAAAA	mcp{9.19} [Minecraft Coder Pack] (minecraft.jar) 
	UCHIJAAAA	FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.10.2-12.18.3.2185.jar) 
	UCHIJAAAA	Forge{12.18.3.2185} [Minecraft Forge] (forgeSrc-1.10.2-12.18.3.2185.jar) 
	UCHIJAAAA	powercrops{1.0.0} [You wouldn't get this from any other guy] (PowerCrops) 
	UCHIJAAAA	actuallyadditions{1.10.2-r98} [Actually Additions] (ActuallyAdditions-1.10.2-r98.jar) 
	UCHIJAAAA	endercore{1.10.2-0.4.1.65-beta} [EnderCore] (EnderCore-1.10.2-0.4.1.65-beta.jar) 
	UCHIJAAAA	EnderIO{1.10.2-3.1.173} [Ender IO] (EnderIO-1.10.2-3.1.173.jar) 
	Loaded coremods (and transformers): 
EnderCorePlugin (EnderCore-1.10.2-0.4.1.65-beta.jar)
  com.enderio.core.common.transform.EnderCoreTransformer
	GL info: ' Vendor: 'X.Org' Version: '3.0 Mesa 17.0.0' Renderer: 'Gallium 0.4 on AMD CAYMAN (DRM 2.48.0 / 4.9.11-2-ck-ivybridge, LLVM 3.9.1)'
	EnderIO: No known problems detected.
	Detailed RF API diagnostics:
                  * RF API class 'EnergyStorage' is loaded from: jar:file:/home/soniex2/git/bitbucket/PowerCrops/run/mods/1.10.2/ActuallyAdditions-1.10.2-r98.jar!/cofh/api/energy/EnergyStorage.class
                  * RF API class 'IEnergyConnection' is loaded from: jar:file:/home/soniex2/git/bitbucket/PowerCrops/run/mods/1.10.2/ActuallyAdditions-1.10.2-r98.jar!/cofh/api/energy/IEnergyConnection.class
                  * RF API class 'IEnergyContainerItem' is loaded from: jar:file:/home/soniex2/git/bitbucket/PowerCrops/run/mods/1.10.2/ActuallyAdditions-1.10.2-r98.jar!/cofh/api/energy/IEnergyContainerItem.class
                  * RF API class 'IEnergyHandler' is loaded from: jar:file:/home/soniex2/git/bitbucket/PowerCrops/run/mods/1.10.2/ActuallyAdditions-1.10.2-r98.jar!/cofh/api/energy/IEnergyHandler.class
                  * RF API class 'IEnergyProvider' is loaded from: jar:file:/home/soniex2/git/bitbucket/PowerCrops/run/mods/1.10.2/ActuallyAdditions-1.10.2-r98.jar!/cofh/api/energy/IEnergyProvider.class
                  * RF API class 'IEnergyReceiver' is loaded from: jar:file:/home/soniex2/git/bitbucket/PowerCrops/run/mods/1.10.2/ActuallyAdditions-1.10.2-r98.jar!/cofh/api/energy/IEnergyReceiver.class
                  * RF API class 'IEnergyStorage' is loaded from: jar:file:/home/soniex2/git/bitbucket/PowerCrops/run/mods/1.10.2/ActuallyAdditions-1.10.2-r98.jar!/cofh/api/energy/IEnergyStorage.class
                  * RF API class 'ItemEnergyContainer' is loaded from: jar:file:/home/soniex2/git/bitbucket/PowerCrops/run/mods/1.10.2/ActuallyAdditions-1.10.2-r98.jar!/cofh/api/energy/ItemEnergyContainer.class
                  * RF API class 'TileEnergyHandler' could not be loaded (reason: java.lang.ClassNotFoundException: cofh.api.energy.TileEnergyHandler)
	Detailed Tesla API diagnostics:
                  * Tesla API class 'Tesla' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.Tesla)
                  * Tesla API class 'TeslaCapabilities' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.capability.TeslaCapabilities)
                  * Tesla API class 'ITeslaConsumer' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.api.ITeslaConsumer)
                  * Tesla API class 'ITeslaHolder' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.api.ITeslaHolder)
                  * Tesla API class 'ITeslaProducer' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.api.ITeslaProducer)
                  * Tesla API class 'BaseTeslaContainer' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.api.implementation.BaseTeslaContainer)
                  * Tesla API class 'BaseTeslaContainerProvider' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.api.implementation.BaseTeslaContainerProvider)
                  * Tesla API class 'InfiniteTeslaConsumer' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.api.implementation.InfiniteTeslaConsumer)
                  * Tesla API class 'InfiniteTeslaConsumerProvider' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.api.implementation.InfiniteTeslaConsumerProvider)
                  * Tesla API class 'InfiniteTeslaProducer' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.api.implementation.InfiniteTeslaProducer)
                  * Tesla API class 'InfiniteTeslaProducerProvider' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.api.implementation.InfiniteTeslaProducerProvider)

	Launched Version: 1.10.2
	LWJGL: 2.9.4
	OpenGL: Gallium 0.4 on AMD CAYMAN (DRM 2.48.0 / 4.9.11-2-ck-ivybridge, LLVM 3.9.1) GL version 3.0 Mesa 17.0.0, X.Org
	GL Caps: Using GL 1.3 multitexturing.
Using GL 1.3 texture combiners.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Shaders are available because OpenGL 2.1 is supported.
VBOs are available because OpenGL 1.5 is supported.

	Using VBOs: Yes
	Is Modded: Definitely; Client brand changed to 'fml,forge'
	Type: Client (map_client.txt)
	Resource Packs: 
	Current Language: English (US)
	Profiler Position: N/A (disabled)
	CPU: 4x Intel(R) Core(TM) i5-3330 CPU @ 3.00GHz

@SoniEx2 SoniEx2 changed the title from [1.10.2] Using Phantom Energyface voids energy to [1.10.2] Using ActuallyAdditions Phantom Energyface with Energy Conduit voids energy Mar 8, 2017

@HenryLoenwind

This comment has been minimized.

Show comment
Hide comment
@HenryLoenwind
Member

HenryLoenwind commented Mar 8, 2017

@Ellpeck ping

@HenryLoenwind HenryLoenwind added the 1.10 label Mar 8, 2017

@SoniEx2

This comment has been minimized.

Show comment
Hide comment
@SoniEx2

SoniEx2 Mar 8, 2017

[1:34 PM] Ellpeck: The Phantomface doesn't interact with power itself in any way
[1:34 PM] Ellpeck: so this is an EnderIO thing

SoniEx2 commented Mar 8, 2017

[1:34 PM] Ellpeck: The Phantomface doesn't interact with power itself in any way
[1:34 PM] Ellpeck: so this is an EnderIO thing
@Ellpeck

This comment has been minimized.

Show comment
Hide comment
@Ellpeck

Ellpeck Mar 8, 2017

Yea, I know. And I still don't know why this would be an Actually Additions problem. All I do is pass on the capability / energy values of the block that the Phantomface is connected to, so this would just generate somewhat of a loopback or whatever, but it shouldn't void power.

Ellpeck commented Mar 8, 2017

Yea, I know. And I still don't know why this would be an Actually Additions problem. All I do is pass on the capability / energy values of the block that the Phantomface is connected to, so this would just generate somewhat of a loopback or whatever, but it shouldn't void power.

@HenryLoenwind

This comment has been minimized.

Show comment
Hide comment
@HenryLoenwind

HenryLoenwind Mar 8, 2017

Member

First guess would be that you are exposing the capability of a conduit-side that is not connected to anything. But I need to get into the debugger to see what actually happens. Just wanted to link you in.

I'm just surprised this doesn't give an endless loop. As the phantomface is no conduit block, our loop detection doesn't work here. It's probably a bad idea to link blocks to themselves...the endless loop would actually be the correct behavior for conduits here.

Member

HenryLoenwind commented Mar 8, 2017

First guess would be that you are exposing the capability of a conduit-side that is not connected to anything. But I need to get into the debugger to see what actually happens. Just wanted to link you in.

I'm just surprised this doesn't give an endless loop. As the phantomface is no conduit block, our loop detection doesn't work here. It's probably a bad idea to link blocks to themselves...the endless loop would actually be the correct behavior for conduits here.

@SoniEx2

This comment has been minimized.

Show comment
Hide comment
@SoniEx2

SoniEx2 Mar 11, 2017

EnderIO should not accept energy when it doesn't want to accept energy.

I literally don't check if you want to accept energy, I just push energy. I assume you're doing something similar with conduits?

This is just a guess, but I assume connections start uncached, so you cache them. While caching them, connections start connected. So when you replace the conduit the phantomface is linked to, it sees itself and goes "I can push power here" and caches it like that. Then it just attempts to push power and for some reason that causes power to be voided.

Keep in mind Forge itself doesn't let you push power when you're not allowed to push power, regardless of if you've checked if you can push power.

I haven't tested with PowerCrops but I doubt I'd be able to reproduce race conditions with it. Only phantomfaces can expose race conditions like this.

SoniEx2 commented Mar 11, 2017

EnderIO should not accept energy when it doesn't want to accept energy.

I literally don't check if you want to accept energy, I just push energy. I assume you're doing something similar with conduits?

This is just a guess, but I assume connections start uncached, so you cache them. While caching them, connections start connected. So when you replace the conduit the phantomface is linked to, it sees itself and goes "I can push power here" and caches it like that. Then it just attempts to push power and for some reason that causes power to be voided.

Keep in mind Forge itself doesn't let you push power when you're not allowed to push power, regardless of if you've checked if you can push power.

I haven't tested with PowerCrops but I doubt I'd be able to reproduce race conditions with it. Only phantomfaces can expose race conditions like this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment