Jump to content

PhilipChonacky

Members
  • Posts

    76
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

PhilipChonacky's Achievements

Stone Miner

Stone Miner (3/8)

5

Reputation

  1. For many of the non-Minecraft libraries, there is no source code. Minecraft source code in all in the Minecraft Forge library(ies) which usually are at the top of the list of referenced libraries in Eclipse. MCP maps the deobfuscation of the Minecraft source code and is applied through Gradle directives. There are stable and daily exports depending on which version of MC you are working with. To update MCP mappings, edit the 'build.gradle' file and re-run gradlew. Hope this helps. /P
  2. I would suggest trying the following: 1) use "if (world.remote)" to call FireParticleEffect 2) Preface the FireParticleEffect method with @SideOnly(Side.Client)
  3. Can you post a repository of your code? It's still not clear which class FireParticleEffect belongs to
  4. Ads long as you don't use ArrowItem for you munitions Item, you won't get them mixed up. Creating a new AbstractRenderer won't be much work, but creating an Entity that essentially does the same thing as (or close to) AbstractArrow is going to be a really big pain.
  5. That was it! Thanks! [so simple] If only that had been mentioned before, I would have had to try and reinvent the wheel.
  6. Even if static fields are working for you, the experts will still tell you not to because they can fail in unpredictable and strange ways that can be hard to troubleshoot. It’s not really that hard to implement. Extending ArrowEntity won't have an impact on launching your munitions, because ArrowItem is a separate Class, just use a generic Item, not one based on ArrowItem. There are a lot of behaviors in AbstractArrowEntity that would be difficult to implement in a custom entity. If you can find a way to extend ArrowEntity, you might get past the custom spawn packet problem i've run into.
  7. Use ObjectHolders where you need to refer to an entity in multiple registries. (i.e. registering Entity Types and Renderers) If you are modding in 1.13+, you will also need to override createSpawnPacket() if you are extending AbstractArrowEntity (something I am trying to figure out on my own).
  8. I put in logging code to track the entity on both Server and Client, which clearly shows the Entity gets spawned on both Server & Client with matching IDs, but the rendering stops almost immediately. The Client-side entity is being removed after one or two ticks. Not sure why this is happening.
  9. Same result. The client entity disappears while the server entity still exists
  10. That doesn't make sense. Entity ID is an index number given to keep track of the entity in the world. Normally when you create a new entity, this number is incremented (so all entries are unique) I think this is the filed that MC uses to synchronize objects between server and client side. Using ClientWorld#addEntity(id, entity) adds the entity to the [client] world using the provided ID instead of the ID from the entity you just created public void addEntity(int p_217411_1_, Entity p_217411_2_) { this.addEntityImpl(p_217411_1_, p_217411_2_); } private void addEntityImpl(int p_217424_1_, Entity p_217424_2_) { if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.EntityJoinWorldEvent(p_217424_2_, this))) return; this.removeEntityFromWorld(p_217424_1_); this.entitiesById.put(p_217424_1_, p_217424_2_); this.getChunkProvider().getChunk(MathHelper.floor(p_217424_2_.posX / 16.0D), MathHelper.floor(p_217424_2_.posZ / 16.0D), ChunkStatus.FULL, true).addEntity(p_217424_2_); p_217424_2_.onAddedToWorld(); } using addEntity(entity.getEntityID(),entity) copies the ID from the entity you just created, which is the next sequential ID, that's why I pull the ID from the spawn packet (which has the original ID). I resolved the cross-side [thread] issue by creating a separate client-only Class [ClientWork] and putting the spawn code there as a static method. It works now, but the client rendered entity disappears almost immediately. If I increment the ID, it spawns an unsynchronized client entity that just drops to the ground (can't even kill it with '/kill @e' . Updated Code ...so close
  11. You should always spawn your entities on the server. Use: !world.isRemote() Also, model registration is client only, so it should go in a proxy and not in you Item Class
  12. Using that [ClientWorld], and I spawned the entity - now I have a thread violation (reaching across server/client). I think the server thread is crashing or getting caught in a loop Repo Updated ...I think I need to make sure the handler code runs only on the Client
  13. Which version of MC are you using? I'm using 1.14.3 [Forge 27.0.25] and that overload isn't available
  14. Update: I got the SimpleChannel system to work (mostly) entityLaser#createSpawnPacket sends packet with PacketDistributor.TRACKING_CHUNK which is passed and handled by LaserSpawnPacket.Handler#handle I confirmed the new EntityLaser instance is accurately created, but for whatever reason, it doesn't get added to chunk (if I'm understanding that field entity correctly) ...need to double-check my math, I may be spawning in the wrong location
  15. How did you handle the networking? ClientPlayNetHandler usually receives the spawn packets. Is there an event that can be subscribed to? Do you have a GitRepo I can look at? I've seen other posts advising to stay away from IPacket, so I didn't and sent the packet using SimpleChannel (returning super.createSpawnPacket to keep MC from crashing) ...not working yet, but at least it doesn't crash I'll post my code when I get home
×
×
  • Create New...

Important Information

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