Jump to content

[Solved] Overriding getLightValue() has no effect


Lycanus Darkbinder

Recommended Posts

Greetings,

 

I have a TileEntity with two methods:

 

int getCurrentLightVal()

void setCurrentLightVal(int val);

 

the setter is called in onBlockActivated and sets the new light value, rolling over to 4 if the value is greater than 15 (ie: the light value will always be between 4 and 15).

 

My problem is that in my block's override of getLightValue(), returning getCurrentLightValue() from the TileEntity does not actually cause the light in the world to change. In fact the block does not light up at all.

 

If I remove the TileEntity and create a separate "lit" block and use setBlock() to swap between the two, the lighting changes properly but naturally does not save state between sessions.

 

 

Is there something I'm missing in regards to getLightValue()? It seems pretty straight forward to me. I stepped through the code in the debugger and fail to see why this is not working even though the function is returning the proper value.

Link to comment
Share on other sites

How are you getting your TileEntity if you have no access to a World object? You aren't, and are using static methods/fields? Don't.

 

You can use one of Forge's added methods to the World class:

public int getLightValue(IBlockAccess iBlockAccess, int x, int y, int z)

IBlockAccess is all you need, as that type has the method getBlockTileEntity(x,y,z) (IBlockAccess is implemented by World).

Author of PneumaticCraft, MineChess, Minesweeper Mod and Sokoban Mod. Visit www.minemaarten.com to take a look at them.

Link to comment
Share on other sites

How are you getting your TileEntity if you have no access to a World object? You aren't, and are using static methods/fields? Don't.

 

You can use one of Forge's added methods to the World class:

public int getLightValue(IBlockAccess iBlockAccess, int x, int y, int z)

IBlockAccess is all you need, as that type has the method getBlockTileEntity(x,y,z) (IBlockAccess is implemented by World).

 

Crap, I made a mistake in my OP. I was thinking of getIcon() for some reason when I wrote the post. I am in fact using the getLightValue() as you suggested.

 

The tile entity returns 4,5,6, etc. depending on the internal value it has but when getLightValue passes that back to the super class, nothing happens. It goes through a bunch of calculations but the light value in the world never changes.

 

I edited the OP accordingly.

 

    @Override
    public int getLightValue(IBlockAccess iba, int x, int y, int z)
    {
        // TODO
        //  Figure out why the return result has no effect on lighting
        //   for some reason the light value stays at 10 where it started
        
        TileEntitySmartLight te = getTileEntity(iba, x, y, z);
        
        if (te != null)
        {
            if (te.getIsLit())
                return te.getCurrentLightValInt(); // no matter the value, world light never changes
            else
                return 0;
        }
        else
        {
            // For some reason we can't get a valid TileEntity,
            //  let the super class deal with the light value
            return super.getLightValue(iba, x, y, z);
        }
        
    }

    // Support functions to reduce typing

    private TileEntitySmartLight getTileEntity(IBlockAccess iba, int x, int y, int z)
    {
        // Returns a TileEntitySmartLight retrieved by a IBlockAccess object
        
        // Grab a generic tileentity
        TileEntity te = iba.getBlockTileEntity(x, y, z);
        
        // Check if it is the proper type and cast it for the return
        //  otherwise return NULL
        
        if (te instanceof TileEntitySmartLight)
            return (TileEntitySmartLight)te;
        else
            return null;
    }

    private TileEntitySmartLight getTileEntity(World world, int x, int y, int z)
    {
        // Returns a TileEntitySmartLight retrieved by a WORLD object
        
        // Grab a generic tileentity
        TileEntity te = world.getBlockTileEntity(x, y, z);
        
        // Check if it is the proper type and cast it for the return
        //  otherwise return NULL
        
        if (te instanceof TileEntitySmartLight)
            return (TileEntitySmartLight)te;
        else
            return null;
    }

Link to comment
Share on other sites

The getIsLit() method in your tileEntity, and the field that returns the value: Is that set on both client and server side?

 

Hmm, no. I always use the isRemote check before interacting with the TileEntity. I was under the impression that only GUI related stuff needed to be done client side because the server would handle sending block information and lighting to all players in the chunk.

 

So, for example, when onBlockActivated() gets called, I only set the isLit property after checking !world.isRemote. Admittedly I watched several tutorials on YouTube and checked the Forge wiki but most information seems outdated. I pieced together what I thought would work.

Link to comment
Share on other sites

I was under the impression that only GUI related stuff needed to be done client side because the server would handle sending block information and lighting to all players in the chunk.

No, on both the client and server is the same game running. Most of the things should be executed on both client and server. There are things that are side specific yes. GUI's and rendering are examples of things that only should run on the client. Some things only should be executed by the server, and most of the times these are things that if they were executed by both client and server, desyncs will happen (they both execute in a different way). This is the case for example when random numbers are being used. And that is for instance with explosions, as the blocks removed in the world by an explosion is determined by a random number generator. Therefore explosions only should be executed on the server (with a !worldObj.isRemote).

 

About your problem: Even if the server would update the information on the client, the client will still execute the same piece of code to calculate the lighting, which means also the client will get its light value of the getIsLit() method in the (client sided) TileEntity. Solution: Remove the check of !worldObj.isRemote.

Author of PneumaticCraft, MineChess, Minesweeper Mod and Sokoban Mod. Visit www.minemaarten.com to take a look at them.

Link to comment
Share on other sites

Unfortunately neither change made any difference.

 

Since markBlockForUpdate() is not available from IBlockAccess, I tried putting it in updateTick() but there was no effect. The only way to get any light at all was to return the result from calling super.getLightValue().

 

That's the part I don't understand. My TileEntity returns 14 which is the same as the result from calling super.getLightValue() but it does nothing. I even took out all checks such as isLit() and simply had it return the value from TileEntity.

 

Note:

 

I also tried world.markBlockForRenderUpdate() because the comments say it is used for lighting changes but it also had no effect.

Link to comment
Share on other sites

@Mazetar

 

Thanks for that but unfortunately it doesn't remedy my problem.

 

I had already used Eclipse to step through what's happening and watched Minecraft calculate the light value:

 

  • When I return 14 from my tile entity the calculated light value is not updated in the world.
  • When I return 14 from super.getLightValue() the calculated light value is updated in the world.

It doesn't make sense to me.

 

Link to comment
Share on other sites

Maybe you need to tell the world to re-calculate lightning?

I know from working with schematic API's that there are many which have problems correcting light issues, due to it not updating properly after being set

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

Link to comment
Share on other sites

Maybe you need to tell the world to re-calculate lightning?

I know from working with schematic API's that there are many which have problems correcting light issues, due to it not updating properly after being set

 

That's the thing, it does recalculate the lighting. The function getLightValue() is called from world.computeLightValue():

 

int blockLight = (block == null ? 0 : block.getLightValue(this, par1, par2, par3));

 

the debugger shows blockLight is 14 regardless of how I return from getLightValue(). Everything is identical except for the fact that it isn't visually updating for the player.

Link to comment
Share on other sites

Still no luck. I took a look at what setBlock() did because it always refreshes the light and pulled these functions out and stuck them in updateTick():

 

  • updateAllLightTypes()
  • markBlockForUpdate()
  • notifyBlockChange()

The last call actually ends up calling notifyBlocksOfNeighborChange() but for whatever reason this still had no effect.

 

Unfortunately setBlock() destroys the TileEntity and copying it and calling setBlockTileEntity() after doesn't work because the TileEntity starts off with no light value and it also doesn't trigger getLightValue().

Link to comment
Share on other sites

Ok, so I tested getLightValue() using this:

 

    public int getLightValue(IBlockAccess iba, int x, int y, int z)
    {
        Random rand = new Random();
        
        int Low = 1;
        int High = 15;
        int val = rand.nextInt(High-Low) + Low;
        
        return val;
    }

 

which makes the individual sides of the block strobe on and off at varying intensity which in itself is kinda neat. The problem is the only way I could trigger it was setBlock() which as mentioned above destroys and recreates the TileEntity thereby losing all the stored info.

 

I've ripped all sorts of functions out of setBlock() and tried to override them but to no avail. I even tried overriding shouldRefresh() in TileEntity which can return FALSE to prevent destroying the TileEntity but it never got called.

Link to comment
Share on other sites

Interesting problem.

 

First you shoud use at getLightValue (BlockSide) every time you do not want light 0.

 

Now i post some code which i found at eloraams code just copy and paste it in your TileEntity and call it over the UpdateEntity Function. That solve your problem. I tested it with the BaconMod^^"

 

and a hint you do not need worldObj is remote

 

   public void updateBlock()
    {
        int var1 = this.worldObj.getBlockMetadata(this.xCoord, this.yCoord, this.zCoord);
        this.worldObj.markBlockForRenderUpdate(this.xCoord, this.yCoord, this.zCoord);
        markBlockDirty(this.worldObj, this.xCoord, this.yCoord, this.zCoord);
    }

    public void markBlockDirty(World var0, int var1, int var2, int var3)
    {
        if (var0.blockExists(var1, var2, var3))
        {
            var0.getChunkFromBlockCoords(var1, var3).setChunkModified();
        }
    }

 

Don't ask my why this function is asking for blockMetadata. just leave it as it is eloraam know what she did^^"

Its her code i copied it and it works perfect^^"

Link to comment
Share on other sites

Don't ask my why this function is asking for blockMetadata. just leave it as it is eloraam know what she did^^"

Its her code i copied it and it works perfect^^"

:'(

Copy pasting and not understanding the code...

That var1 is completely useless.

 

By the way, since markBlockForUpdate(x,y,z) didn't work, that method won't either.

 

The issue is within the TileEntity.

getCurrentLightValInt() probably doesn't return same value on both sides.

Link to comment
Share on other sites

@Mazetar

 

The problem with that is setBlock() causes a call to getLightValue() but at that time the TileEntity has been reset because of a call to removeTileEntity() somewhere in the chain. That means that copying the tileEntity back after setBlock() doesn't work unless you can trigger a call to getLightValue() which is my problem.

 

@Moritz

 

If that's from RedPower, it's from Minecraft 1.4.6 and does not apply to 1.5.2. There is no updateBlock() to override in TileEntity.

 

@GotoLink

 

No, getLightValueInt() is returning the same for both sides. What I did notice however is that sometimes in getLightValue() the getBlockTileEntity occasionally returns a NULL TileEntity.

 

The big roadblock here is how to tell Minecraft that the block has changed to trigger a call to getLightValue() without actually changing it by destroying the block and tileentity

 

 

@Anyone who's interested

 

If you follow the call stack after calling setBlock() there are a bunch of private methods that trigger light recalculations. I wonder, if I create a class to extend World and override setBlock() if that may help. I could copy those private methods and just tell it to ignore the call to breakBlock() and removeTileEntity().

Link to comment
Share on other sites

@GotoLink

 

No, getLightValueInt() is returning the same for both sides. What I did notice however is that sometimes in getLightValue() the getBlockTileEntity occasionally returns a NULL TileEntity.

 

The big roadblock here is how to tell Minecraft that the block has changed to trigger a call to getLightValue() without actually changing it by destroying the block and tileentity

 

 

@Anyone who's interested

 

If you follow the call stack after calling setBlock() there are a bunch of private methods that trigger light recalculations. I wonder, if I create a class to extend World and override setBlock() if that may help. I could copy those private methods and just tell it to ignore the call to breakBlock() and removeTileEntity().

Unneeded, seriously unneeded.

Use world.markBlockForUpdate(x,y,z). It triggers light calculation.

If that fails, something is wrong in your tileentity.

Link to comment
Share on other sites

Unneeded, seriously unneeded.

Use world.markBlockForUpdate(x,y,z). It triggers light calculation.

If that fails, something is wrong in your tileentity.

 

I think I figured out the problem: IBlockAccess in getLightValue() always gets a client version of the TileEntity, it never gets a server version and World in updateTick() always gets a server version so the two TileEntities are not the same.

 

Illustration:

 

    @Override
    public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving entityLiving, ItemStack itemStack)
    {
        // Initialize the TileEntity
        TileEntitySmartLight te = (TileEntitySmartLight)world.getBlockTileEntity(x, y, z);
        
        if (te != null)
        {
            te.Init();
            
            if (world.isRemote)
                te.setIsServer(false);
            else
                te.setIsServer(true);
        }
    }

    @Override
    public void updateTick(World world, int x, int y, int z, Random random)
    {
        TileEntitySmartLight te = (TileEntitySmartLight)world.getBlockTileEntity(x, y, z);
        
        if (te != null)
        {
            // Always TRUE (server)
            SmartLights.getDebugger().PrintToConsole("updateTick(" + x + ", " + y + ", " + z + ") TileEntity.isServer = " + te.isServer());
        }
    }

    @Override
    public int getLightValue(IBlockAccess iba, int x, int y, int z)
    {
        TileEntitySmartLight te = (TileEntitySmartLight)iba.getBlockTileEntity(x, y, z);
        
        if (te != null)
        {
            // Always FALSE (client)
            SmartLights.getDebugger().PrintToConsole("getLightValue(" + x + ", " + y + ", " + z + ") TileEntity.isServer = " + te.isServer());
        }
    }

 

so this indicates that when updateTick() modifies the TileEntity, it is not modifying the one that getLightValue() is going to use.

Link to comment
Share on other sites

Though this isn't very elegant, it fixes the problem:

 

public class BlockSmartLight extends Block implements ITileEntityProvider
{
    // World mirrors for TileEntity retrieval functions to ensure we're
    //  always getting the same TileEntity. IBlockAccess usually only works
    //  with CLIENT versions while "World" typically works with server versions
    
    World worldCli;
    World worldSrv;
    
    @Override
    public void updateTick(World world, int x, int y, int z, Random random)
    {
        // Update both TileEntities so the one retrieved by IBlockAccess
        //  in getLightValue() will be current

        TileEntitySmartLight teCli = (TileEntitySmartLight)worldCli.getBlockTileEntity(x, y, z);
        TileEntitySmartLight teSrv = (TileEntitySmartLight)worldSrv.getBlockTileEntity(x, y, z);
        boolean newIsLit = isOnTime(world, x, y, z);
        
        if (teCli != null)
            teCli.setIsLit(newIsLit);

        if (teSrv != null)
            teSrv.setIsLit(newIsLit);
        
        world.markBlockForUpdate(x, y, z);
        world.scheduleBlockUpdate(x, y, z, this.blockID, SmartLights.getConfig().getTickRate());
    }

    @Override
    public TileEntity createNewTileEntity(World world)
    {
        // Initialize the WORLD mirrors if necessary.
        if (world.isRemote)
        {
            if (worldCli == null)
                worldCli = world;
        }
        else
        {
            if (worldSrv == null)
                worldSrv = world;
        }
        
        return new TileEntitySmartLight();
    }
}

 

By using World mirrors in updateTick() to force update both TileEntities, it allows the TileEntity retrieved by the IBlockAccess in getLightValue() to behave properly.

Link to comment
Share on other sites

I still find this a very strange behaviour. In my UV Lightbox TileEntity (from my PneumaticCraft mod), I've done something similar. The only thing I've done is overriding getLightValue() :

    @Override
    public int getLightValue(IBlockAccess world, int x, int y, int z){
        Block block = blocksList[world.getBlockId(x, y, z)];
        if(block != null && block != this) { //checks that are also done in the super method.
            return block.getLightValue(world, x, y, z);
        }
        TileEntity te = world.getBlockTileEntity(x, y, z);
        if(te != null && te instanceof TileEntityUVLightBox) {
            return ((TileEntityUVLightBox)te).areLightsOn ? 15 : 0;
        } else {
            return 0;
        }
    }

 

The areLightsOn boolean variable in TileEntityUVLightBox is managed server side, and is updated in the client via packets.

Author of PneumaticCraft, MineChess, Minesweeper Mod and Sokoban Mod. Visit www.minemaarten.com to take a look at them.

Link to comment
Share on other sites

I still find this a very strange behaviour. In my UV Lightbox TileEntity (from my PneumaticCraft mod), I've done something similar. The only thing I've done is overriding getLightValue() :

    @Override
    public int getLightValue(IBlockAccess world, int x, int y, int z){
        Block block = blocksList[world.getBlockId(x, y, z)];
        if(block != null && block != this) { //checks that are also done in the super method.
            return block.getLightValue(world, x, y, z);
        }
        TileEntity te = world.getBlockTileEntity(x, y, z);
        if(te != null && te instanceof TileEntityUVLightBox) {
            return ((TileEntityUVLightBox)te).areLightsOn ? 15 : 0;
        } else {
            return 0;
        }
    }

 

The areLightsOn boolean variable in TileEntityUVLightBox is managed server side, and is updated in the client via packets.

 

Are you using a custom packet handler? I haven't done that yet, just started reading about it.

 

Anyway, there is another thread recently posted where someone realized that an IBlockAccess TileEntity is different than a World TileEntity. The main problem is that functions which use a World object instead of an IBlockAccess object simply don't act on the same TileEntity.

 

I traced through the code in Chunk.java that actually returns the TileEntity and interestingly they both use the same function but it does answer a few IF...THEN questions differently depending on how it was called.

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

    • I have been trying to make a server with forge but I keep running into an issue. I have jdk 22 installed as well as Java 8. here is the debug file  
    • it crashed again     What the console says : [00:02:03] [Server thread/INFO] [Easy NPC/]: [EntityManager] Server started! [00:02:03] [Server thread/INFO] [co.gi.al.ic.IceAndFire/]: {iceandfire:fire_dragon_roost=true, iceandfire:fire_lily=true, iceandfire:spawn_dragon_skeleton_fire=true, iceandfire:lightning_dragon_roost=true, iceandfire:spawn_dragon_skeleton_lightning=true, iceandfire:ice_dragon_roost=true, iceandfire:ice_dragon_cave=true, iceandfire:lightning_dragon_cave=true, iceandfire:cyclops_cave=true, iceandfire:spawn_wandering_cyclops=true, iceandfire:spawn_sea_serpent=true, iceandfire:frost_lily=true, iceandfire:hydra_cave=true, iceandfire:lightning_lily=true, iceandfireixie_village=true, iceandfire:myrmex_hive_jungle=true, iceandfire:myrmex_hive_desert=true, iceandfire:silver_ore=true, iceandfire:siren_island=true, iceandfire:spawn_dragon_skeleton_ice=true, iceandfire:spawn_stymphalian_bird=true, iceandfire:fire_dragon_cave=true, iceandfire:sapphire_ore=true, iceandfire:spawn_hippocampus=true, iceandfire:spawn_death_worm=true} [00:02:03] [Server thread/INFO] [co.gi.al.ic.IceAndFire/]: {TROLL_S=true, HIPPOGRYPH=true, AMPHITHERE=true, COCKATRICE=true, TROLL_M=true, DREAD_LICH=true, TROLL_F=true} [00:02:03] [Server thread/INFO] [ne.be.lo.WeaponRegistry/]: Encoded Weapon Attribute registry size (with package overhead): 41976 bytes (in 5 string chunks with the size of 10000) [00:02:03] [Server thread/INFO] [patchouli/]: Sending reload packet to clients [00:02:03] [Server thread/WARN] [voicechat/]: [voicechat] Running in offline mode - Voice chat encryption is not secure! [00:02:03] [VoiceChatServerThread/INFO] [voicechat/]: [voicechat] Using server-ip as bind address: 0.0.0.0 [00:02:03] [Server thread/WARN] [ModernFix/]: Dedicated server took 22.521 seconds to load [00:02:03] [VoiceChatServerThread/INFO] [voicechat/]: [voicechat] Voice chat server started at 0.0.0.0:25565 [00:02:03] [Server thread/WARN] [minecraft/SynchedEntityData]: defineId called for: class net.minecraft.world.entity.player.Player from class tschipp.carryon.common.carry.CarryOnDataManager [00:02:03] [Server thread/INFO] [ne.mi.co.AdvancementLoadFix/]: Using new advancement loading for net.minecraft.server.PlayerAdvancements@2941ffd5 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 0 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 1 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 2 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 3 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 4 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 5 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 6 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 7 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 8 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 9 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 10 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 11 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 12 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 13 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 14 [00:02:19] [Server thread/INFO] [ne.mi.co.AdvancementLoadFix/]: Using new advancement loading for net.minecraft.server.PlayerAdvancements@ebc7ef2 [00:02:19] [Server thread/INFO] [minecraft/PlayerList]: ZacAdos[/90.2.17.162:49242] logged in with entity id 1062 at (-1848.6727005281205, 221.0, -3054.2468255848935) [00:02:19] [Server thread/ERROR] [ModernFix/]: Skipping entity ID sync for com.talhanation.smallships.world.entity.ship.Ship: java.lang.NoClassDefFoundError: net/minecraft/client/CameraType [00:02:19] [Server thread/INFO] [minecraft/MinecraftServer]: - Gloop - ZacAdos joined the game [00:02:19] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Updating all forceload tickets for cc56befd-d376-3526-a760-340713c478bd [00:02:19] [Server thread/INFO] [se.mi.te.da.DataManager/]: Sending data to client: ZacAdos [00:02:19] [Server thread/INFO] [voicechat/]: [voicechat] Received secret request of - Gloop - ZacAdos (17) [00:02:19] [Server thread/INFO] [voicechat/]: [voicechat] Sent secret to - Gloop - ZacAdos [00:02:21] [VoiceChatPacketProcessingThread/INFO] [voicechat/]: [voicechat] Successfully authenticated player cc56befd-d376-3526-a760-340713c478bd [00:02:22] [VoiceChatPacketProcessingThread/INFO] [voicechat/]: [voicechat] Successfully validated connection of player cc56befd-d376-3526-a760-340713c478bd [00:02:22] [VoiceChatPacketProcessingThread/INFO] [voicechat/]: [voicechat] Player - Gloop - ZacAdos (cc56befd-d376-3526-a760-340713c478bd) successfully connected to voice chat stop [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Stopping the server [00:02:34] [Server thread/INFO] [mo.pl.ar.ArmourersWorkshop/]: stop local service [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Stopping server [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving players [00:02:34] [Server thread/INFO] [minecraft/ServerGamePacketListenerImpl]: ZacAdos lost connection: Server closed [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: - Gloop - ZacAdos left the game [00:02:34] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Updating all forceload tickets for cc56befd-d376-3526-a760-340713c478bd [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving worlds [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving chunks for level 'ServerLevel[world]'/minecraft:overworld [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_end [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_nether [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage (world): All chunks are saved [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage: All dimensions are saved [00:02:34] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Stopping IO worker... [00:02:34] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Stopped IO worker! [00:02:34] [Server thread/INFO] [Calio/]: Removing Dynamic Registries for: net.minecraft.server.dedicated.DedicatedServer@7dc879e1 [MineStrator Daemon]: Checking server disk space usage, this could take a few seconds... [MineStrator Daemon]: Updating process configuration files... [MineStrator Daemon]: Ensuring file permissions are set correctly, this could take a few seconds... [MineStrator Daemon]: Pulling Docker container image, this could take a few minutes to complete... [MineStrator Daemon]: Finished pulling Docker container image container@pterodactyl~ java -version openjdk version "17.0.10" 2024-01-16 OpenJDK Runtime Environment Temurin-17.0.10+7 (build 17.0.10+7) OpenJDK 64-Bit Server VM Temurin-17.0.10+7 (build 17.0.10+7, mixed mode, sharing) container@pterodactyl~ java -Xms128M -Xmx6302M -Dterminal.jline=false -Dterminal.ansi=true -Djline.terminal=jline.UnsupportedTerminal -p libraries/cpw/mods/bootstraplauncher/1.1.2/bootstraplauncher-1.1.2.jar:libraries/cpw/mods/securejarhandler/2.1.4/securejarhandler-2.1.4.jar:libraries/org/ow2/asm/asm-commons/9.5/asm-commons-9.5.jar:libraries/org/ow2/asm/asm-util/9.5/asm-util-9.5.jar:libraries/org/ow2/asm/asm-analysis/9.5/asm-analysis-9.5.jar:libraries/org/ow2/asm/asm-tree/9.5/asm-tree-9.5.jar:libraries/org/ow2/asm/asm/9.5/asm-9.5.jar:libraries/net/minecraftforge/JarJarFileSystems/0.3.16/JarJarFileSystems-0.3.16.jar --add-modules ALL-MODULE-PATH --add-opens java.base/java.util.jar=cpw.mods.securejarhandler --add-opens java.base/java.lang.invoke=cpw.mods.securejarhandler --add-exports java.base/sun.security.util=cpw.mods.securejarhandler --add-exports jdk.naming.dns/com.sun.jndi.dns=java.naming -Djava.net.preferIPv6Addresses=system -DignoreList=bootstraplauncher-1.1.2.jar,securejarhandler-2.1.4.jar,asm-commons-9.5.jar,asm-util-9.5.jar,asm-analysis-9.5.jar,asm-tree-9.5.jar,asm-9.5.jar,JarJarFileSystems-0.3.16.jar -DlibraryDirectory=libraries -DlegacyClassPath=libraries/cpw/mods/securejarhandler/2.1.4/securejarhandler-2.1.4.jar:libraries/org/ow2/asm/asm/9.5/asm-9.5.jar:libraries/org/ow2/asm/asm-commons/9.5/asm-commons-9.5.jar:libraries/org/ow2/asm/asm-tree/9.5/asm-tree-9.5.jar:libraries/org/ow2/asm/asm-util/9.5/asm-util-9.5.jar:libraries/org/ow2/asm/asm-analysis/9.5/asm-analysis-9.5.jar:libraries/net/minecraftforge/accesstransformers/8.0.4/accesstransformers-8.0.4.jar:libraries/org/antlr/antlr4-runtime/4.9.1/antlr4-runtime-4.9.1.jar:libraries/net/minecraftforge/eventbus/6.0.3/eventbus-6.0.3.jar:libraries/net/minecraftforge/forgespi/6.0.0/forgespi-6.0.0.jar:libraries/net/minecraftforge/coremods/5.0.1/coremods-5.0.1.jar:libraries/cpw/mods/modlauncher/10.0.8/modlauncher-10.0.8.jar:libraries/net/minecraftforge/unsafe/0.2.0/unsafe-0.2.0.jar:libraries/com/electronwill/night-config/core/3.6.4/core-3.6.4.jar:libraries/com/electronwill/night-config/toml/3.6.4/toml-3.6.4.jar:libraries/org/apache/maven/maven-artifact/3.8.5/maven-artifact-3.8.5.jar:libraries/net/jodah/typetools/0.8.3/typetools-0.8.3.jar:libraries/net/minecrell/terminalconsoleappender/1.2.0/terminalconsoleappender-1.2.0.jar:libraries/org/jline/jline-reader/3.12.1/jline-reader-3.12.1.jar:libraries/org/jline/jline-terminal/3.12.1/jline-terminal-3.12.1.jar:libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar:libraries/org/openjdk/nashorn/nashorn-core/15.3/nashorn-core-15.3.jar:libraries/net/minecraftforge/JarJarSelector/0.3.16/JarJarSelector-0.3.16.jar:libraries/net/minecraftforge/JarJarMetadata/0.3.16/JarJarMetadata-0.3.16.jar:libraries/net/minecraftforge/fmlloader/1.19.2-43.3.0/fmlloader-1.19.2-43.3.0.jar:libraries/net/minecraft/server/1.19.2-20220805.130853/server-1.19.2-20220805.130853-extra.jar:libraries/com/github/oshi/oshi-core/5.8.5/oshi-core-5.8.5.jar:libraries/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar:libraries/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar:libraries/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar:libraries/com/mojang/authlib/3.11.49/authlib-3.11.49.jar:libraries/com/mojang/brigadier/1.0.18/brigadier-1.0.18.jar:libraries/com/mojang/datafixerupper/5.0.28/datafixerupper-5.0.28.jar:libraries/com/mojang/javabridge/1.2.24/javabridge-1.2.24.jar:libraries/com/mojang/logging/1.0.0/logging-1.0.0.jar:libraries/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar:libraries/io/netty/netty-buffer/4.1.77.Final/netty-buffer-4.1.77.Final.jar:libraries/io/netty/netty-codec/4.1.77.Final/netty-codec-4.1.77.Final.jar:libraries/io/netty/netty-common/4.1.77.Final/netty-common-4.1.77.Final.jar:libraries/io/netty/netty-handler/4.1.77.Final/netty-handler-4.1.77.Final.jar:libraries/io/netty/netty-resolver/4.1.77.Final/netty-resolver-4.1.77.Final.jar:libraries/io/netty/netty-transport/4.1.77.Final/netty-transport-4.1.77.Final.jar:libraries/io/netty/netty-transport-classes-epoll/4.1.77.Final/netty-transport-classes-epoll-4.1.77.Final.jar:libraries/io/netty/netty-transport-native-epoll/4.1.77.Final/netty-transport-native-epoll-4.1.77.Final-linux-x86_64.jar:libraries/io/netty/netty-transport-native-epoll/4.1.77.Final/netty-transport-native-epoll-4.1.77.Final-linux-aarch_64.jar:libraries/io/netty/netty-transport-native-unix-common/4.1.77.Final/netty-transport-native-unix-common-4.1.77.Final.jar:libraries/it/unimi/dsi/fastutil/8.5.6/fastutil-8.5.6.jar:libraries/net/java/dev/jna/jna/5.10.0/jna-5.10.0.jar:libraries/net/java/dev/jna/jna-platform/5.10.0/jna-platform-5.10.0.jar:libraries/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar:libraries/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar:libraries/org/apache/logging/log4j/log4j-api/2.17.0/log4j-api-2.17.0.jar:libraries/org/apache/logging/log4j/log4j-core/2.17.0/log4j-core-2.17.0.jar:libraries/org/apache/logging/log4j/log4j-slf4j18-impl/2.17.0/log4j-slf4j18-impl-2.17.0.jar:libraries/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.jar cpw.mods.bootstraplauncher.BootstrapLauncher --launchTarget forgeserver --fml.forgeVersion 43.3.0 --fml.mcVersion 1.19.2 --fml.forgeGroup net.minecraftforge --fml.mcpVersion 20220805.130853 [00:02:42] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--launchTarget, forgeserver, --fml.forgeVersion, 43.3.0, --fml.mcVersion, 1.19.2, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20220805.130853] [00:02:42] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 10.0.8+10.0.8+main.0ef7e830 starting: java version 17.0.10 by Eclipse Adoptium; OS Linux arch amd64 version 6.1.0-12-amd64 [00:02:43] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/home/container/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%2363!/ Service=ModLauncher Env=SERVER [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/fmlcore/1.19.2-43.3.0/fmlcore-1.19.2-43.3.0.jar is missing mods.toml file [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/javafmllanguage/1.19.2-43.3.0/javafmllanguage-1.19.2-43.3.0.jar is missing mods.toml file [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/lowcodelanguage/1.19.2-43.3.0/lowcodelanguage-1.19.2-43.3.0.jar is missing mods.toml file [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/mclanguage/1.19.2-43.3.0/mclanguage-1.19.2-43.3.0.jar is missing mods.toml file [00:02:44] [main/WARN] [ne.mi.ja.se.JarSelector/]: Attempted to select two dependency jars from JarJar which have the same identification: Mod File: and Mod File: . Using Mod File: [00:02:44] [main/WARN] [ne.mi.ja.se.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: resourcefullib. Using Mod File: /home/container/mods/resourcefullib-forge-1.19.2-1.1.24.jar [00:02:44] [main/INFO] [ne.mi.fm.lo.mo.JarInJarDependencyLocator/]: Found 13 dependencies adding them to mods collection Latest log [29Mar2024 00:02:42.803] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher running: args [--launchTarget, forgeserver, --fml.forgeVersion, 43.3.0, --fml.mcVersion, 1.19.2, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20220805.130853] [29Mar2024 00:02:42.805] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher 10.0.8+10.0.8+main.0ef7e830 starting: java version 17.0.10 by Eclipse Adoptium; OS Linux arch amd64 version 6.1.0-12-amd64 [29Mar2024 00:02:43.548] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/home/container/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%2363!/ Service=ModLauncher Env=SERVER [29Mar2024 00:02:43.876] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/fmlcore/1.19.2-43.3.0/fmlcore-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:43.877] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/javafmllanguage/1.19.2-43.3.0/javafmllanguage-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:43.877] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/lowcodelanguage/1.19.2-43.3.0/lowcodelanguage-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:43.878] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/mclanguage/1.19.2-43.3.0/mclanguage-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:44.033] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select two dependency jars from JarJar which have the same identification: Mod File: and Mod File: . Using Mod File: [29Mar2024 00:02:44.034] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: resourcefullib. Using Mod File: /home/container/mods/resourcefullib-forge-1.19.2-1.1.24.jar [29Mar2024 00:02:44.034] [main/INFO] [net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator/]: Found 13 dependencies adding them to mods collection
    • I am unable to do that. Brigadier is a mojang library that parses commands.
    • Hi, i appreciate the answer. I would love to do that, but we have active players with all their belongings in SSN. Also this mod is really handy and they would be mad if we removed it. Are you really certain that SSN is causing this? It would require lots of work to test it and SSN was not really an issue before we removed Fast Suite. Can it be related somehow? I will provide you with log before removing FS. PasteBin: https://pastebin.com/Y5EpLpNe (crash before removing Fast Suite, which I suspected to be a problem from some crash before)
  • Topics

×
×
  • Create New...

Important Information

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