Posted September 13, 20196 yr 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, 20196 yr by Boy132 solved: used setCustomClientFactory() and overwritten createSpawnPacket()
September 13, 20196 yr 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. 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.
September 14, 20196 yr 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. 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.
September 14, 20196 yr mm Okay .. But how to implement this function? public void processPacket(IClientPlayNetHandler handler) {...} cause this function : handler.handleSpawnGlobalEntity take only SSpawnGlobalEntityPacket ..
September 14, 20196 yr 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. 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.
September 14, 20196 yr 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 ..
September 14, 20196 yr Just now, fanor said: but i really don't know how to implemet this .. Show what you have tried. 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.
September 14, 20196 yr 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, 20196 yr by fanor
September 14, 20196 yr 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? 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.
September 15, 20196 yr 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 ...
September 15, 20196 yr 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. 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.
September 15, 20196 yr 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, 20196 yr by fanor
September 15, 20196 yr Well i have solved it with @Override public IPacket createSpawnPacket() { return NetworkHooks.getEntitySpawningPacket(this); } Edited September 15, 20196 yr by fanor
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.