|
| 1 | +package org.quiltmc.qsl.item.extension.mixin.trident; |
| 2 | + |
| 3 | +import org.quiltmc.qsl.item.extension.impl.trident.TridentClientModInitializer; |
| 4 | +import org.quiltmc.qsl.networking.api.PacketByteBufs; |
| 5 | +import org.quiltmc.qsl.networking.api.ServerPlayNetworking; |
| 6 | +import org.spongepowered.asm.mixin.Mixin; |
| 7 | +import org.spongepowered.asm.mixin.injection.At; |
| 8 | +import org.spongepowered.asm.mixin.injection.Inject; |
| 9 | +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; |
| 10 | + |
| 11 | +import net.minecraft.entity.Entity; |
| 12 | +import net.minecraft.entity.EntityType; |
| 13 | +import net.minecraft.entity.projectile.ProjectileEntity; |
| 14 | +import net.minecraft.entity.projectile.TridentEntity; |
| 15 | +import net.minecraft.network.Packet; |
| 16 | +import net.minecraft.network.PacketByteBuf; |
| 17 | +import net.minecraft.world.World; |
| 18 | + |
| 19 | +@Mixin(ProjectileEntity.class) |
| 20 | +public abstract class TridentEntityMixin extends Entity { |
| 21 | + public TridentEntityMixin(EntityType<?> entityType, World world) { |
| 22 | + super(entityType, world); |
| 23 | + } |
| 24 | + |
| 25 | + @Inject(method = "createSpawnPacket", at = @At("HEAD")) |
| 26 | + public void sendTridentStackBeforeSpawnPacket(CallbackInfoReturnable<Packet<?>> cir) { |
| 27 | + if ((Object) this instanceof TridentEntity trident) { |
| 28 | + PacketByteBuf passedData = PacketByteBufs.create(); |
| 29 | + passedData.writeItemStack(((TridentEntityAccessor) trident).getTridentStack()); |
| 30 | + ServerPlayNetworking.send(this.world.getServer().getPlayerManager().getPlayerList(), TridentClientModInitializer.TRIDENT_SPAWN_PACKET_ID, passedData); |
| 31 | + } |
| 32 | + } |
| 33 | +} |
0 commit comments