Boy132 Posted September 13, 2019 Share Posted September 13, 2019 (edited) I created a throwable rock item and I can throw it but the entity is not rendered. This is called during client setup: RenderingRegistry.registerEntityRenderingHandler(EntityRock.class, new IRenderFactory<Entity>() { @Override public EntityRenderer<? super Entity> createRenderFor(EntityRendererManager manager) { return new SpriteRenderer(manager, Minecraft.getInstance().getItemRenderer()); } }); I found setCustomClientFactory() when creating the entity type but I don't know if I must use it? Edited September 14, 2019 by Boy132 solved: used setCustomClientFactory() and overwritten createSpawnPacket() Quote Link to comment Share on other sites More sharing options...
Animefan8888 Posted September 13, 2019 Share Posted September 13, 2019 42 minutes ago, Boy132 said: I created a throwable rock item and I can throw it but the entity is not rendered. What you have is fine, however you need to override createSpawnPacket in your Entity class and give it your own IPacket that spawns the entity in the handle method and basically does what SSpawnObjectPacket does. But for your Entities/Entity. 2 Quote VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator. Link to comment Share on other sites More sharing options...
fanor Posted September 14, 2019 Share Posted September 14, 2019 Why we need to override createSpawnPacket ? i don't get it .. ? Quote Link to comment Share on other sites More sharing options...
Animefan8888 Posted September 14, 2019 Share Posted September 14, 2019 32 minutes ago, fanor said: Why we need to override createSpawnPacket ? i don't get it .. ? Because the vanilla one doesn't work for modded entities unless they are living. The packet takes specific information like the entities Unique ID and position and velocity and spawns the same entity on the client with all of that data. If you don't override createSpawnPacket then the client won't know that that entity exists. Quote VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator. Link to comment Share on other sites More sharing options...
fanor Posted September 14, 2019 Share Posted September 14, 2019 mm Okay .. But how to implement this function? public void processPacket(IClientPlayNetHandler handler) {...} cause this function : handler.handleSpawnGlobalEntity take only SSpawnGlobalEntityPacket .. Quote Link to comment Share on other sites More sharing options...
Animefan8888 Posted September 14, 2019 Share Posted September 14, 2019 6 minutes ago, fanor said: cause this function : handler.handleSpawnGlobalEntity take only SSpawnGlobalEntityPacket .. Don't use that function.. On 9/13/2019 at 3:18 PM, Animefan8888 said: that spawns the entity in the handle method By handle method here I meant the processPacket method. Quote VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator. Link to comment Share on other sites More sharing options...
fanor Posted September 14, 2019 Share Posted September 14, 2019 4 minutes ago, Animefan8888 said: By handle method here I meant the processPacket method. Heay i know .. but i really don't know how to implemet this .. Quote Link to comment Share on other sites More sharing options...
Animefan8888 Posted September 14, 2019 Share Posted September 14, 2019 Just now, fanor said: but i really don't know how to implemet this .. Show what you have tried. Quote VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator. Link to comment Share on other sites More sharing options...
fanor Posted September 14, 2019 Share Posted September 14, 2019 (edited) package fr.mvinet.craftal.packet; import net.minecraft.client.network.play.IClientPlayNetHandler; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.network.INetHandler; import net.minecraft.network.IPacket; import net.minecraft.network.PacketBuffer; import net.minecraft.util.math.MathHelper; import net.minecraft.util.registry.Registry; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import java.util.UUID; public class SpawnPacket implements IPacket { private int entityId; private UUID uniqueId; private double x; private double y; private double z; private int speedX; private int speedY; private int speedZ; private int pitch; private int yaw; private EntityType<?> type; public SpawnPacket() { } public SpawnPacket(Entity entity) { this(); this.entityId = entity.getEntityId(); this.uniqueId = entity.getUniqueID(); this.x = entity.posX; this.y = entity.posY; this.z = entity.posZ; this.pitch = MathHelper.floor(entity.rotationPitch * 256.0F / 360.0F); this.yaw = MathHelper.floor(entity.rotationYaw * 256.0F / 360.0F); this.type = entity.getType(); this.speedX = (int) (MathHelper.clamp(entity.getMotion().x, -3.9D, 3.9D) * 8000.0D); this.speedY = (int) (MathHelper.clamp(entity.getMotion().y, -3.9D, 3.9D) * 8000.0D); this.speedZ = (int) (MathHelper.clamp(entity.getMotion().z, -3.9D, 3.9D) * 8000.0D); } /** * Reads the raw packet data from the data stream. */ public void readPacketData(PacketBuffer buf) { this.entityId = buf.readVarInt(); this.uniqueId = buf.readUniqueId(); this.type = Registry.ENTITY_TYPE.getByValue(buf.readVarInt()); this.x = buf.readDouble(); this.y = buf.readDouble(); this.z = buf.readDouble(); this.pitch = buf.readByte(); this.yaw = buf.readByte(); this.speedX = buf.readShort(); this.speedY = buf.readShort(); this.speedZ = buf.readShort(); } /** * Writes the raw packet data to the data stream. */ public void writePacketData(PacketBuffer buf) { buf.writeVarInt(this.entityId); buf.writeUniqueId(this.uniqueId); buf.writeVarInt(Registry.ENTITY_TYPE.getId(this.type)); buf.writeDouble(this.x); buf.writeDouble(this.y); buf.writeDouble(this.z); buf.writeByte(this.pitch); buf.writeByte(this.yaw); buf.writeShort(this.speedX); buf.writeShort(this.speedY); buf.writeShort(this.speedZ); } @Override public void processPacket(INetHandler handler) { //Like this ? i really don't know how to do that handler.getNetworkManager().sendPacket(this); } @OnlyIn(Dist.CLIENT) public int getEntityID() { return this.entityId; } @OnlyIn(Dist.CLIENT) public UUID getUniqueId() { return this.uniqueId; } @OnlyIn(Dist.CLIENT) public double getX() { return this.x; } @OnlyIn(Dist.CLIENT) public double getY() { return this.y; } @OnlyIn(Dist.CLIENT) public double getZ() { return this.z; } @OnlyIn(Dist.CLIENT) public double func_218693_g() { return (double) this.speedX / 8000.0D; } @OnlyIn(Dist.CLIENT) public double func_218695_h() { return (double) this.speedY / 8000.0D; } @OnlyIn(Dist.CLIENT) public double func_218692_i() { return (double) this.speedZ / 8000.0D; } @OnlyIn(Dist.CLIENT) public int getPitch() { return this.pitch; } @OnlyIn(Dist.CLIENT) public int getYaw() { return this.yaw; } @OnlyIn(Dist.CLIENT) public EntityType<?> getType() { return this.type; } } Nothing .. like i said, i don't know how to implement this .. so i have nothing .. Edited September 14, 2019 by fanor Quote Link to comment Share on other sites More sharing options...
Animefan8888 Posted September 14, 2019 Share Posted September 14, 2019 4 minutes ago, fanor said: like i said, i don't know how to implement this Which part are you having problems with. Creating the entity that sent the packet? Use EntityType#create(Minecraft.getInstance().world) You don't know how to spawn the Entity? Minecraft.getInstance().world.addEntity What is it that you are having difficulty with? Quote VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator. Link to comment Share on other sites More sharing options...
fanor Posted September 15, 2019 Share Posted September 15, 2019 7 hours ago, Animefan8888 said: Which part are you having problems with. Creating the entity that sent the packet? Use EntityType#create(Minecraft.getInstance().world) You don't know how to spawn the Entity? Minecraft.getInstance().world.addEntity What is it that you are having difficulty with? I know how to spawn the entity : CustomProjectil projectilEntity = new CustomProjectil(worldIn, playerIn); projectilEntity.shoot(playerIn, playerIn.rotationPitch, playerIn.rotationYaw, 0.0F, 1.5F, 1.0F); worldIn.addEntity(projectilEntity); it's what i need to put in "processPacket" method ... Quote Link to comment Share on other sites More sharing options...
Animefan8888 Posted September 15, 2019 Share Posted September 15, 2019 6 minutes ago, fanor said: it's what i need to put in "processPacket" method ... I literally told you what needs to go there... you need to create an entity and spawn it in the client world. Quote VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator. Link to comment Share on other sites More sharing options...
fanor Posted September 15, 2019 Share Posted September 15, 2019 (edited) I have try @Override public void processPacket(INetHandler handler) { Entity entity = new CustomProjectil(Minecraft.getInstance().world, x, y, z); Minecraft.getInstance().world.addEntity(entity); } i have try many things like this, but doesn't seem to work i'm feel stupid Edited September 15, 2019 by fanor Quote Link to comment Share on other sites More sharing options...
fanor Posted September 15, 2019 Share Posted September 15, 2019 (edited) Well i have solved it with @Override public IPacket createSpawnPacket() { return NetworkHooks.getEntitySpawningPacket(this); } Edited September 15, 2019 by fanor Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.