tutorial:projectiles
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
tutorial:projectiles [2020/11/16 21:55] – fixing code spxctreofficial | tutorial:projectiles [2022/04/29 03:38] – updated a method call ayutac | ||
---|---|---|---|
Line 108: | Line 108: | ||
entity.damage(DamageSource.thrownProjectile(this, | entity.damage(DamageSource.thrownProjectile(this, | ||
- | if (entity instanceof LivingEntity) { // checks if entity is an instance of LivingEntity (meaning it is not a boat or minecart) | + | if (entity instanceof LivingEntity |
- | ((LivingEntity) entity).addStatusEffect((new StatusEffectInstance(StatusEffects.BLINDNESS, | + | livingEntity.addStatusEffect((new StatusEffectInstance(StatusEffects.BLINDNESS, |
- | ((LivingEntity) entity).addStatusEffect((new StatusEffectInstance(StatusEffects.SLOWNESS, | + | livingEntity.addStatusEffect((new StatusEffectInstance(StatusEffects.SLOWNESS, |
- | ((LivingEntity) entity).addStatusEffect((new StatusEffectInstance(StatusEffects.POISON, | + | livingEntity.addStatusEffect((new StatusEffectInstance(StatusEffects.POISON, |
- | entity.playSound(SoundEvents.AMBIENT_CAVE, | + | livingEntity.playSound(SoundEvents.AMBIENT_CAVE, |
} | } | ||
} | } | ||
Line 120: | Line 120: | ||
if (!this.world.isClient) { // checks if the world is client | if (!this.world.isClient) { // checks if the world is client | ||
this.world.sendEntityStatus(this, | this.world.sendEntityStatus(this, | ||
- | this.remove(); // kills the projectile | + | this.kill(); // kills the projectile |
} | } | ||
Line 202: | Line 202: | ||
*/ | */ | ||
if (!world.isClient) { | if (!world.isClient) { | ||
- | SnowballEntity | + | PackedSnowballEntity |
snowballEntity.setItem(itemStack); | snowballEntity.setItem(itemStack); | ||
- | snowballEntity.setProperties(user, user.pitch, user.yaw, 0.0F, 1.5F, 0F); | + | snowballEntity.setVelocity(user, user.pitch, user.yaw, 0.0F, 1.5F, 0F); |
+ | /* | ||
+ | snowballEntity.setProperties(user, | ||
+ | In 1.17,we will use setProperties instead of setVelocity. | ||
+ | */ | ||
world.spawnEntity(snowballEntity); | world.spawnEntity(snowballEntity); | ||
} | } | ||
Line 217: | Line 221: | ||
} | } | ||
</ | </ | ||
+ | Make sure that the projectile that you are launching with this item is indeed your custom '' | ||
+ | \\ | ||
Now, we are finished with creating an item for the '' | Now, we are finished with creating an item for the '' | ||
\\ | \\ | ||
Line 255: | Line 260: | ||
@Override | @Override | ||
public void onInitializeClient() { | public void onInitializeClient() { | ||
- | EntityRendererRegistry.INSTANCE.register(ProjectileTutorialMod.PackedSnowballEntityType, | + | EntityRendererRegistry.register(ProjectileTutorialMod.PackedSnowballEntityType, |
- | new FlyingItemEntityRenderer(dispatcher, | + | new FlyingItemEntityRenderer(context)); |
+ | // older versions may have to use | ||
+ | /* EntityRendererRegistry.INSTANCE.register(ProjectileTutorialMod.PackedSnowballEntityType, | ||
+ | new FlyingItemEntityRenderer(context)); */ | ||
[. . .] | [. . .] | ||
} | } | ||
Line 271: | Line 279: | ||
byteBuf.writeUuid(e.getUuid()); | byteBuf.writeUuid(e.getUuid()); | ||
byteBuf.writeVarInt(e.getEntityId()); | byteBuf.writeVarInt(e.getEntityId()); | ||
+ | | ||
PacketBufUtil.writeVec3d(byteBuf, | PacketBufUtil.writeVec3d(byteBuf, | ||
PacketBufUtil.writeAngle(byteBuf, | PacketBufUtil.writeAngle(byteBuf, | ||
PacketBufUtil.writeAngle(byteBuf, | PacketBufUtil.writeAngle(byteBuf, | ||
- | return ServerSidePacketRegistry.INSTANCE.toPacket(packetID, byteBuf); | + | /* |
+ | In 1.17,we use these. | ||
+ | byteBuf.writeVarInt(e.getId()); | ||
+ | |||
+ | PacketBufUtil.writeVec3d(byteBuf, | ||
+ | PacketBufUtil.writeAngle(byteBuf, | ||
+ | PacketBufUtil.writeAngle(byteBuf, | ||
+ | */ | ||
+ | |||
+ | return ServerPlayNetworking.createS2CPacket(packetID, byteBuf); | ||
} | } | ||
public static final class PacketBufUtil { | public static final class PacketBufUtil { | ||
Line 399: | Line 416: | ||
@Override | @Override | ||
public void onInitializeClient() { | public void onInitializeClient() { | ||
- | EntityRendererRegistry.INSTANCE.register(ProjectileTutorialMod.PackedSnowballEntityType, | + | EntityRendererRegistry.INSTANCE.register(ProjectileTutorialMod.PackedSnowballEntityType, |
- | new FlyingItemEntityRenderer(dispatcher, | + | new FlyingItemEntityRenderer(context)); |
receiveEntityPacket(); | receiveEntityPacket(); | ||
} | } | ||
Line 408: | Line 425: | ||
Now, your projectile should be working in-game! Just make sure your textures are in the right place, and your item and projectile should be working. | Now, your projectile should be working in-game! Just make sure your textures are in the right place, and your item and projectile should be working. | ||
+ | |||
+ | If you would like to try out this projectile, download [[https:// | ||
[INSERT USABLE PICTURE HERE] | [INSERT USABLE PICTURE HERE] |
tutorial/projectiles.txt · Last modified: 2024/03/08 01:56 by netuserget