feat: add BuiltInAbilityGetPacket for requesting built-in abilities by name

This commit is contained in:
Kam committed 2026-02-12 20:30:45 -05:00
1 parent 0cb5a993c7
commit 5d682962be
1 file changed
+70
@@ -0,0 +1,70 @@
package kamkeel.npcs.network.packets.request.ability;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf;
import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.data.ability.AbilityController;
import kamkeel.npcs.network.AbstractPacket;
import kamkeel.npcs.network.PacketChannel;
import kamkeel.npcs.network.PacketHandler;
import kamkeel.npcs.network.PacketUtil;
import kamkeel.npcs.network.enums.EnumItemPacketType;
import kamkeel.npcs.network.enums.EnumRequestPacket;
import kamkeel.npcs.network.packets.data.large.GuiDataPacket;
import kamkeel.npcs.util.ByteBufUtils;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
import java.io.IOException;
/**
* Request packet to get a specific built-in ability by name.
* Built-in abilities are registered presets with fixed configurations.
*/
public final class BuiltInAbilityGetPacket extends AbstractPacket {
public static String packetName = "Request|BuiltInAbilityGet";
private String abilityName;
public BuiltInAbilityGetPacket() {
}
public BuiltInAbilityGetPacket(String abilityName) {
this.abilityName = abilityName;
}
@Override
public Enum getType() {
return EnumRequestPacket.BuiltInAbilityGet;
}
@Override
public PacketChannel getChannel() {
return PacketHandler.REQUEST_PACKET;
}
@SideOnly(Side.CLIENT)
@Override
public void sendData(ByteBuf out) throws IOException {
ByteBufUtils.writeString(out, abilityName);
}
@Override
public void receiveData(ByteBuf in, EntityPlayer player) throws IOException {
if (!(player instanceof EntityPlayerMP))
return;
if (!PacketUtil.verifyItemPacket(packetName, EnumItemPacketType.WAND, player))
return;
String name = ByteBufUtils.readString(in);
Ability ability = AbilityController.Instance.getAbilityByDisplayName(name);
if (ability != null) {
NBTTagCompound compound = ability.writeNBT();
compound.setBoolean("BuiltIn", true);
GuiDataPacket.sendGuiData((EntityPlayerMP) player, compound);
}
}
}