Search in sources :

Example 1 with HasIFF

use of net.sistr.littlemaidrebirth.entity.iff.HasIFF in project LittleMaidReBirth-Fabric by SistrScarlet.

the class OpenIFFScreenPacket method openIFFScreen.

@Environment(EnvType.CLIENT)
private static void openIFFScreen(int id, CompoundTag tag, PlayerEntity player) {
    Entity entity = player.world.getEntityById(id);
    if (!(entity instanceof HasIFF)) {
        return;
    }
    ListTag list = tag.getList("IFFs", 10);
    List<IFF> iffs = list.stream().map(t -> (CompoundTag) t).map(t -> IFFTypeManager.getINSTANCE().loadIFF(t)).filter(Optional::isPresent).map(Optional::get).collect(Collectors.toList());
    MinecraftClient.getInstance().openScreen(new IFFScreen(entity, iffs));
}
Also used : PacketSender(net.fabricmc.fabric.api.networking.v1.PacketSender) Environment(net.fabricmc.api.Environment) PacketByteBuf(net.minecraft.network.PacketByteBuf) Unpooled(io.netty.buffer.Unpooled) HasIFF(net.sistr.littlemaidrebirth.entity.iff.HasIFF) IFFTypeManager(net.sistr.littlemaidrebirth.entity.iff.IFFTypeManager) MinecraftServer(net.minecraft.server.MinecraftServer) EnvType(net.fabricmc.api.EnvType) ClientPlayNetworkHandler(net.minecraft.client.network.ClientPlayNetworkHandler) Entity(net.minecraft.entity.Entity) ClientPlayNetworking(net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking) IFF(net.sistr.littlemaidrebirth.entity.iff.IFF) PlayerEntity(net.minecraft.entity.player.PlayerEntity) IFFScreen(net.sistr.littlemaidrebirth.client.IFFScreen) Collectors(java.util.stream.Collectors) List(java.util.List) CompoundTag(net.minecraft.nbt.CompoundTag) ServerPlayerEntity(net.minecraft.server.network.ServerPlayerEntity) LittleMaidReBirthMod(net.sistr.littlemaidrebirth.LittleMaidReBirthMod) ServerPlayNetworking(net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking) Identifier(net.minecraft.util.Identifier) Optional(java.util.Optional) MinecraftClient(net.minecraft.client.MinecraftClient) TameableEntity(net.minecraft.entity.passive.TameableEntity) ListTag(net.minecraft.nbt.ListTag) ServerPlayNetworkHandler(net.minecraft.server.network.ServerPlayNetworkHandler) Entity(net.minecraft.entity.Entity) PlayerEntity(net.minecraft.entity.player.PlayerEntity) ServerPlayerEntity(net.minecraft.server.network.ServerPlayerEntity) TameableEntity(net.minecraft.entity.passive.TameableEntity) IFFScreen(net.sistr.littlemaidrebirth.client.IFFScreen) Optional(java.util.Optional) HasIFF(net.sistr.littlemaidrebirth.entity.iff.HasIFF) HasIFF(net.sistr.littlemaidrebirth.entity.iff.HasIFF) IFF(net.sistr.littlemaidrebirth.entity.iff.IFF) ListTag(net.minecraft.nbt.ListTag) Environment(net.fabricmc.api.Environment)

Example 2 with HasIFF

use of net.sistr.littlemaidrebirth.entity.iff.HasIFF in project LittleMaidReBirth-Fabric by SistrScarlet.

the class SyncIFFPacket method applyIFFServer.

private static void applyIFFServer(int id, CompoundTag tag, PlayerEntity player) {
    Entity entity = player.world.getEntityById(id);
    if (!(entity instanceof HasIFF)) {
        return;
    }
    if (entity instanceof TameableEntity && !player.getUuid().equals(((TameableEntity) entity).getOwnerUuid())) {
        return;
    }
    ListTag list = tag.getList("IFFs", 10);
    List<IFF> iffs = list.stream().map(t -> (CompoundTag) t).map(t -> IFFTypeManager.getINSTANCE().loadIFF(t)).filter(Optional::isPresent).map(Optional::get).collect(Collectors.toList());
    ((HasIFF) entity).setIFFs(iffs);
}
Also used : Entity(net.minecraft.entity.Entity) PacketSender(net.fabricmc.fabric.api.networking.v1.PacketSender) ClientPlayNetworking(net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking) IFF(net.sistr.littlemaidrebirth.entity.iff.IFF) PlayerEntity(net.minecraft.entity.player.PlayerEntity) Environment(net.fabricmc.api.Environment) PacketByteBuf(net.minecraft.network.PacketByteBuf) Collectors(java.util.stream.Collectors) Unpooled(io.netty.buffer.Unpooled) HasIFF(net.sistr.littlemaidrebirth.entity.iff.HasIFF) IFFTypeManager(net.sistr.littlemaidrebirth.entity.iff.IFFTypeManager) MinecraftServer(net.minecraft.server.MinecraftServer) List(java.util.List) CompoundTag(net.minecraft.nbt.CompoundTag) ServerPlayerEntity(net.minecraft.server.network.ServerPlayerEntity) LittleMaidReBirthMod(net.sistr.littlemaidrebirth.LittleMaidReBirthMod) EnvType(net.fabricmc.api.EnvType) Identifier(net.minecraft.util.Identifier) Optional(java.util.Optional) TameableEntity(net.minecraft.entity.passive.TameableEntity) ListTag(net.minecraft.nbt.ListTag) ServerPlayNetworkHandler(net.minecraft.server.network.ServerPlayNetworkHandler) Entity(net.minecraft.entity.Entity) PlayerEntity(net.minecraft.entity.player.PlayerEntity) ServerPlayerEntity(net.minecraft.server.network.ServerPlayerEntity) TameableEntity(net.minecraft.entity.passive.TameableEntity) Optional(java.util.Optional) TameableEntity(net.minecraft.entity.passive.TameableEntity) HasIFF(net.sistr.littlemaidrebirth.entity.iff.HasIFF) IFF(net.sistr.littlemaidrebirth.entity.iff.IFF) HasIFF(net.sistr.littlemaidrebirth.entity.iff.HasIFF) ListTag(net.minecraft.nbt.ListTag)

Example 3 with HasIFF

use of net.sistr.littlemaidrebirth.entity.iff.HasIFF in project LittleMaidReBirth-Fabric by SistrScarlet.

the class OpenIFFScreenPacket method sendC2SPacket.

public static void sendC2SPacket(Entity entity) {
    if (!(entity instanceof HasIFF)) {
        return;
    }
    PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer());
    buf.writeVarInt(entity.getEntityId());
    ClientPlayNetworking.send(ID, buf);
}
Also used : HasIFF(net.sistr.littlemaidrebirth.entity.iff.HasIFF) PacketByteBuf(net.minecraft.network.PacketByteBuf)

Example 4 with HasIFF

use of net.sistr.littlemaidrebirth.entity.iff.HasIFF in project LittleMaidReBirth-Fabric by SistrScarlet.

the class OpenIFFScreenPacket method openIFFScreen.

private static void openIFFScreen(int id, PlayerEntity player) {
    Entity entity = player.world.getEntityById(id);
    if (!(entity instanceof HasIFF) || (entity instanceof TameableEntity && !player.getUuid().equals(((TameableEntity) entity).getOwnerUuid()))) {
        return;
    }
    sendS2CPacket(entity, ((HasIFF) entity).getIFFs(), player);
}
Also used : Entity(net.minecraft.entity.Entity) PlayerEntity(net.minecraft.entity.player.PlayerEntity) ServerPlayerEntity(net.minecraft.server.network.ServerPlayerEntity) TameableEntity(net.minecraft.entity.passive.TameableEntity) TameableEntity(net.minecraft.entity.passive.TameableEntity) HasIFF(net.sistr.littlemaidrebirth.entity.iff.HasIFF)

Example 5 with HasIFF

use of net.sistr.littlemaidrebirth.entity.iff.HasIFF in project LittleMaidReBirth-Fabric by SistrScarlet.

the class IFFCopyBookItem method use.

@Override
public TypedActionResult<ItemStack> use(World world, PlayerEntity user, Hand hand) {
    if (world.isClient) {
        return super.use(world, user, hand);
    }
    ItemStack stack = user.getStackInHand(hand);
    Vec3d start = user.getCameraPosVec(1F);
    Vec3d end = start.add(user.getRotationVector().multiply(4D));
    BlockHitResult bResult = world.raycast(new RaycastContext(start, end, RaycastContext.ShapeType.COLLIDER, RaycastContext.FluidHandling.NONE, user));
    if (bResult.getType() != HitResult.Type.MISS) {
        end = bResult.getPos();
    }
    Box box = new Box(start, end).expand(1);
    EntityHitResult eResult = ProjectileUtil.getEntityCollision(world, user, start, end, box, entity -> entity instanceof HasIFF);
    if (eResult == null || eResult.getType() == HitResult.Type.MISS)
        return super.use(world, user, hand);
    Entity target = eResult.getEntity();
    if (user.isSneaking()) {
        ListTag list = new ListTag();
        ((HasIFF) target).getIFFs().forEach(iff -> list.add(iff.writeTag()));
        CompoundTag tag = stack.getOrCreateTag();
        tag.put("IFFs", list);
        user.sendMessage(new TranslatableText("item.littlemaidrebirth.iff_copy_book.message_written"), true);
    } else {
        CompoundTag tag = stack.getOrCreateTag();
        if (!tag.contains("IFFs")) {
            return super.use(world, user, hand);
        }
        ListTag list = tag.getList("IFFs", 10);
        ((HasIFF) target).setIFFs(list.stream().map(t -> (CompoundTag) t).map(t -> IFFTypeManager.getINSTANCE().loadIFF(t)).filter(Optional::isPresent).map(Optional::get).collect(Collectors.toList()));
        user.sendMessage(new TranslatableText("item.littlemaidrebirth.iff_copy_book.message_apply"), true);
    }
    user.world.playSound(null, user.getX(), user.getY(), user.getZ(), SoundEvents.BLOCK_NOTE_BLOCK_PLING, SoundCategory.PLAYERS, 1F, 1F);
    return TypedActionResult.success(stack);
}
Also used : TranslatableText(net.minecraft.text.TranslatableText) TooltipContext(net.minecraft.client.item.TooltipContext) Item(net.minecraft.item.Item) ProjectileUtil(net.minecraft.entity.projectile.ProjectileUtil) TranslatableText(net.minecraft.text.TranslatableText) ItemStack(net.minecraft.item.ItemStack) HasIFF(net.sistr.littlemaidrebirth.entity.iff.HasIFF) IFFTypeManager(net.sistr.littlemaidrebirth.entity.iff.IFFTypeManager) SoundEvents(net.minecraft.sound.SoundEvents) Vec3d(net.minecraft.util.math.Vec3d) ModSetup(net.sistr.littlemaidrebirth.setup.ModSetup) RaycastContext(net.minecraft.world.RaycastContext) Hand(net.minecraft.util.Hand) SoundCategory(net.minecraft.sound.SoundCategory) Entity(net.minecraft.entity.Entity) TypedActionResult(net.minecraft.util.TypedActionResult) PlayerEntity(net.minecraft.entity.player.PlayerEntity) World(net.minecraft.world.World) Box(net.minecraft.util.math.Box) BlockHitResult(net.minecraft.util.hit.BlockHitResult) Collectors(java.util.stream.Collectors) HitResult(net.minecraft.util.hit.HitResult) EntityHitResult(net.minecraft.util.hit.EntityHitResult) List(java.util.List) CompoundTag(net.minecraft.nbt.CompoundTag) Optional(java.util.Optional) Text(net.minecraft.text.Text) ListTag(net.minecraft.nbt.ListTag) Entity(net.minecraft.entity.Entity) PlayerEntity(net.minecraft.entity.player.PlayerEntity) RaycastContext(net.minecraft.world.RaycastContext) Optional(java.util.Optional) HasIFF(net.sistr.littlemaidrebirth.entity.iff.HasIFF) Box(net.minecraft.util.math.Box) ListTag(net.minecraft.nbt.ListTag) Vec3d(net.minecraft.util.math.Vec3d) EntityHitResult(net.minecraft.util.hit.EntityHitResult) ItemStack(net.minecraft.item.ItemStack) BlockHitResult(net.minecraft.util.hit.BlockHitResult) CompoundTag(net.minecraft.nbt.CompoundTag)

Aggregations

HasIFF (net.sistr.littlemaidrebirth.entity.iff.HasIFF)5 Entity (net.minecraft.entity.Entity)4 PlayerEntity (net.minecraft.entity.player.PlayerEntity)4 List (java.util.List)3 Optional (java.util.Optional)3 Collectors (java.util.stream.Collectors)3 TameableEntity (net.minecraft.entity.passive.TameableEntity)3 CompoundTag (net.minecraft.nbt.CompoundTag)3 ListTag (net.minecraft.nbt.ListTag)3 PacketByteBuf (net.minecraft.network.PacketByteBuf)3 ServerPlayerEntity (net.minecraft.server.network.ServerPlayerEntity)3 IFFTypeManager (net.sistr.littlemaidrebirth.entity.iff.IFFTypeManager)3 Unpooled (io.netty.buffer.Unpooled)2 EnvType (net.fabricmc.api.EnvType)2 Environment (net.fabricmc.api.Environment)2 ClientPlayNetworking (net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking)2 PacketSender (net.fabricmc.fabric.api.networking.v1.PacketSender)2 MinecraftServer (net.minecraft.server.MinecraftServer)2 ServerPlayNetworkHandler (net.minecraft.server.network.ServerPlayNetworkHandler)2 Identifier (net.minecraft.util.Identifier)2