Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[1.8]How to edit two tile entities[Solved]


Atijaf
 Share

Recommended Posts

I have a two Tile Entities that links with one another when the correct coordinate item is placed inside.

The item holds the block pos location.

 

TileEntity1 - the item inside points to TileEntity2

TileEntity2 - the item inside points to TileEntity1

 

They have to point to each other for them to be linked.

 

 

So the question... I need to update TileEntity2 when I remove TileEntity1's item so that they aren't linked anymore, but I can't access TileEntity2's location when TileEntity1's item doesn't exist. (the item that points to TileEntity2)

 

Can I instead use Container#slotClick to obtain the item the player removed and update TileEntity2?

Or should I avoid using the container to do this?

 

Hope this makes sense...

Link to comment
Share on other sites

Currently working on it now.  Thanks:)  I believe this is exactly what I needed to know.

 

One more thing.  Is #setInventorySlotContents called when the game loads the world?

 

.. Two more things.  If I use #markDirty() on server side, must I do that on client as well?

Link to comment
Share on other sites

Thanks!  Gosh I keep running into bugs and this last one stumped me.

 

I have an item that is stored within a TE.  The itemstack, it is associated with, contains NBT int and whenever the block is right clicked, that int is reduced by 20.  (I say right click just to simplify.  I actually do something else, but the point stays the same)  The action is only done serverSide and I thought that setting nbt data syncs between server and client, regardless of what side the nbt data was set.

 

The reason I know it isn't syncing on client side is when I open my gui, i step through the process, check the inventory slot for that itemstack, and the int hasn't changed.  If i'm on the server side, it has changed.

 

Does itemstack NBT data sync automatically if it's not in the player's inventory?  I'll figure out what I'm doing wrong, but just need to understand that.

 

Thanks for all the help!

Link to comment
Share on other sites

The action is only done serverSide and I thought that setting nbt data syncs between server and client, regardless of what side the nbt data was set.

No, ItemStack NBT data only syncs automatically if you set it server side, and only when it is accessed in an inventory using a Container class. NEVER set NBT data (or any other data) client side.

 

Does your TileEntity-based GUI use a Container? If so, as diesieben said you should be able to manually call #detectAndSendChanges, but that's called automatically every update tick from EntityPlayerMP, so you shouldn't have to... I suspect there is probably something else going on in your code; do you have an online repository or other way to view your code?

 

Also, I would not recommend using #setInventorySlotContents when reading your inventory from NBT. Usually this method implementation calls #markDirty() which may or may not iterate through the inventory contents. While you won't crash or anything like that, it's still much better, imo, to just set the inventory slot value directly with array access.

Link to comment
Share on other sites

Everything is done server side and only the required information is send to the client.  Though, I'm not in the container when i edit the itemstack's nbt.  I think I'm going to send a packet to the client side.  If that doesn't work, I'm going to reevaluate and redo the code with the now better understanding I have.

 

Thanks again:)

 

I'm sure I'll be back...

Link to comment
Share on other sites

Reevaluated and redid much of the code.  Works :D

 

By redoing the code, i removed a TON of nonsense, but the best part is that I didn't even have to use packets.  I overrid #markDirty() and it synced for both sides.  Thanks to all that helped!

 

Instead of one tile entity determining a few variables of the other tile entity, I have them act independently (ALMOST!)

 

I use to use a boolean to determine if they needed updating, but that caused a ton of resources being used (Called markdirty every tick... AND IT ALSO DIDN'T WORK)

I now use an int.  It'll return 0 if player placed item and 1 if player removed item from inventory. (That takes care of the source tile entity)

 

Now.. It'll return 2 if nothing has changed and then it'll check if it's linked.  If so, double check to see if it is truly linked (Do some of the math), and if it isn't truly linked (Target TE isn't correct), set linked to false and a few other variables...

 

I know I didn't have to write that, but I wasn't even sure if I quite understood it:p  Mainly just excited after the many hours spent on it, and after redoing it, figuring it out after a few hours was just thrilling.

 

THANKS A TON!

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
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.

 Share



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • thank you very much, the problem was in the path to the model.  
    • The version you are using is no longer supported on this forum. Please update to a modern version of Minecraft to receive support. Currently supported versions are 1.18.1/1.18.2 (Latest) and 1.16.5 (LTS).
    • The version of WorldEdit that you have is for 1.18.1 and not compatible with 1.18.2. Use the 1.18.2 version.
    • Having probems with a server i have at home it crashes when loading up   ---- Minecraft Crash Report ---- // Daisy, daisy... Time: 25/05/2022, 14:03 Description: Exception in server tick loop java.lang.NoSuchMethodError: 'net.minecraft.core.RegistryAccess net.minecraft.server.MinecraftServer.m_129911_()'     at com.sk89q.worldedit.forge.ForgeWorldEdit.setupRegistries(ForgeWorldEdit.java:197) ~[worldedit-mod-7.2.8.jar%2355!/:?] {re:classloading}     at com.sk89q.worldedit.forge.ForgeWorldEdit.serverStarted(ForgeWorldEdit.java:256) ~[worldedit-mod-7.2.8.jar%2355!/:?] {re:classloading}     at net.minecraftforge.eventbus.ASMEventHandler_9_ForgeWorldEdit_serverStarted_ServerStartedEvent.invoke(.dynamic) ~[?:?] {}     at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:85) ~[eventbus-5.0.3.jar%232!/:?] {}     at net.minecraftforge.eventbus.EventBus.post(EventBus.java:302) ~[eventbus-5.0.3.jar%232!/:?] {}     at net.minecraftforge.eventbus.EventBus.post(EventBus.java:283) ~[eventbus-5.0.3.jar%232!/:?] {}     at net.minecraftforge.server.ServerLifecycleHooks.handleServerStarted(ServerLifecycleHooks.java:99) ~[forge-1.18.2-40.1.25-universal.jar%2361!/:?] {re:classloading}     at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:662) ~[server-1.18.2-20220404.173914-srg.jar%2357!/:?] {re:classloading,pl:accesstransformer:B}     at net.minecraft.server.MinecraftServer.m_177918_(MinecraftServer.java:261) ~[server-1.18.2-20220404.173914-srg.jar%2357!/:?] {re:classloading,pl:accesstransformer:B}     at java.lang.Thread.run(Thread.java:833) [?:?] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details:     Minecraft Version: 1.18.2     Minecraft Version ID: 1.18.2     Operating System: Windows 11 (amd64) version 10.0     Java Version: 17.0.2, Oracle Corporation     Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode, sharing), Oracle Corporation     Memory: 1172062448 bytes (1117 MiB) / 2105540608 bytes (2008 MiB) up to 2105540608 bytes (2008 MiB)     CPUs: 4     Processor Vendor: GenuineIntel     Processor Name: Intel(R) Core(TM) i3-8100T CPU @ 3.10GHz     Identifier: Intel64 Family 6 Model 158 Stepping 11     Microarchitecture: Coffee Lake     Frequency (GHz): 3.10     Number of physical packages: 1     Number of physical CPUs: 4     Number of logical CPUs: 4     Graphics card #0 name: Intel(R) UHD Graphics 630     Graphics card #0 vendor: Intel Corporation (0x8086)     Graphics card #0 VRAM (MB): 1024.00     Graphics card #0 deviceId: 0x3e91     Graphics card #0 versionInfo: DriverVersion=26.20.100.7757     Memory slot #0 capacity (MB): 8192.00     Memory slot #0 clockSpeed (GHz): 2.67     Memory slot #0 type: DDR4     Virtual memory max (MB): 9310.78     Virtual memory used (MB): 5713.56     Swap memory total (MB): 1280.00     Swap memory used (MB): 10.88     JVM Flags: 0 total;     Server Running: true     Player Count: 0 / 20; []     Data Packs: vanilla, mod:charginggadgets (incompatible), mod:supermartijn642configlib (incompatible), mod:worldedit (incompatible), mod:buildinggadgets (incompatible), mod:buildhelper (incompatible), mod:mcjtylib (incompatible), mod:supermartijn642corelib (incompatible), mod:chunkloaders (incompatible), mod:mininggadgets (incompatible), mod:forge (incompatible), mod:rftoolsbase (incompatible), mod:rftoolsbuilder (incompatible), mod:refinedstorage, mod:journeymap (incompatible), mod:cyclic, mod:jamd (incompatible), mod:jei (incompatible), mod:patchouli (incompatible), mod:laserio     World Generation: Experimental     Is Modded: Definitely; Server brand changed to 'forge'     Type: Dedicated Server (map_server.txt)     ModLauncher: 9.1.3+9.1.3+main.9b69c82a     ModLauncher launch target: forgeserver     ModLauncher naming: srg     ModLauncher services:          mixin PLUGINSERVICE          eventbus PLUGINSERVICE          slf4jfixer PLUGINSERVICE          object_holder_definalize PLUGINSERVICE          runtime_enum_extender PLUGINSERVICE          capability_token_subclass PLUGINSERVICE          accesstransformer PLUGINSERVICE          runtimedistcleaner PLUGINSERVICE          mixin TRANSFORMATIONSERVICE          fml TRANSFORMATIONSERVICE     FML Language Providers:         minecraft@1.0         javafml@null     Mod List:         server-1.18.2-20220404.173914-srg.jar             |Minecraft                     |minecraft                     |1.18.2              |DONE      |Manifest: NOSIGNATURE         charginggadgets-1.5.0.jar                         |Charging Gadgets              |charginggadgets               |1.5.0               |DONE      |Manifest: NOSIGNATURE         supermartijn642configlib-1.0.9-mc1.18.jar         |SuperMartijn642's Config Lib  |supermartijn642configlib      |1.0.9               |DONE      |Manifest: NOSIGNATURE         worldedit-mod-7.2.8.jar                           |WorldEdit                     |worldedit                     |7.2.8+6008-1246d61  |DONE      |Manifest: NOSIGNATURE         buildinggadgets-3.13.0-build.5+mc1.18.2.jar       |Building Gadgets              |buildinggadgets               |3.13.0-build.5+mc1.1|DONE      |Manifest: NOSIGNATURE         torojimaBuildHelper-3.5.0.0.jar                   |Torojima's Buildhelper        |buildhelper                   |3.5.0.0             |DONE      |Manifest: NOSIGNATURE         mcjtylib-1.18-6.0.13.jar                          |McJtyLib                      |mcjtylib                      |1.18-6.0.13         |DONE      |Manifest: NOSIGNATURE         jei-1.18.1-9.2.1.69.jar                           |Just Enough Items             |jei                           |9.2.1.69            |DONE      |Manifest: NOSIGNATURE         supermartijn642corelib-1.0.16-mc1.18.jar          |SuperMartijn642's Core Lib    |supermartijn642corelib        |1.0.16              |DONE      |Manifest: NOSIGNATURE         chunkloaders-1.1.8-mc1.18.jar                     |Chunk Loaders                 |chunkloaders                  |1.1.8               |DONE      |Manifest: NOSIGNATURE         mininggadgets-1.11.0.jar                          |Mining Gadgets                |mininggadgets                 |1.11.0              |DONE      |Manifest: NOSIGNATURE         forge-1.18.2-40.1.25-universal.jar                |Forge                         |forge                         |40.1.25             |DONE      |Manifest: 84:ce:76:e8:45:35:e4:0e:63:86:df:47:59:80:0f:67:6c:c1:5f:6e:5f:4d:b3:54:47:1a:9f:7f:ed:5e:f2:90         rftoolsbase-1.18-3.0.7.jar                        |RFToolsBase                   |rftoolsbase                   |1.18-3.0.7          |DONE      |Manifest: NOSIGNATURE         rftoolsbuilder-1.18-4.0.10.jar                    |RFToolsBuilder                |rftoolsbuilder                |1.18-4.0.10         |DONE      |Manifest: NOSIGNATURE         Patchouli-1.18.2-67.jar                           |Patchouli                     |patchouli                     |1.18.2-67           |DONE      |Manifest: NOSIGNATURE         refinedstorage-1.10.2.jar                         |Refined Storage               |refinedstorage                |1.10.2              |DONE      |Manifest: NOSIGNATURE         laserio-1.0.1.jar                                 |LaserIO                       |laserio                       |1.0.1               |DONE      |Manifest: NOSIGNATURE         journeymap-1.18-5.8.0alpha4.jar                   |Journeymap                    |journeymap                    |5.8.0alpha4         |DONE      |Manifest: NOSIGNATURE         Cyclic-1.18.2-1.7.0.jar                           |Cyclic                        |cyclic                        |1.18.2-1.7.0        |DONE      |Manifest: 1f:47:ac:b1:61:82:96:b8:47:19:16:d2:61:81:11:60:3a:06:4b:61:31:56:7d:44:31:1e:0c:6f:22:5b:4c:ed         JAMD-1.7.0-build.24+mc1.18.2.jar                  |Just Another Mining Dimension |jamd                          |1.7.0-build.24+mc1.1|DONE      |Manifest: NOSIGNATURE     Crash Report UUID: a4b30830-b80e-4601-9aec-8e6451729eed     FML: 40.1     Forge: net.minecraftforge:40.1.25
    • This means the version of Configured is not for 1.18, you need a version of the Mod for 1.18.2
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.