com.spleefleague.core.utils.PlayerUtil.java Source code

Java tutorial

Introduction

Here is the source code for com.spleefleague.core.utils.PlayerUtil.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.spleefleague.core.utils;

import com.google.common.io.ByteArrayDataOutput;
import com.google.common.io.ByteStreams;
import com.spleefleague.core.SpleefLeague;
import com.spleefleague.core.plugin.CorePlugin;
import java.lang.reflect.Field;
import net.minecraft.server.v1_12_R1.Entity;
import net.minecraft.server.v1_12_R1.IChatBaseComponent;
import net.minecraft.server.v1_12_R1.IChatBaseComponent.ChatSerializer;
import net.minecraft.server.v1_12_R1.PacketPlayOutTitle;
import net.minecraft.server.v1_12_R1.PacketPlayOutTitle.EnumTitleAction;
import net.minecraft.server.v1_12_R1.PlayerConnection;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.craftbukkit.v1_12_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer;

/**
 *
 * @author Jonas
 */
public class PlayerUtil {

    public static void sendTitle(Player player, String title, String subtitle, int fadeIn, int stay, int fadeOut) {
        CraftPlayer craftplayer = (CraftPlayer) player;
        PlayerConnection connection = craftplayer.getHandle().playerConnection;
        IChatBaseComponent titleJSON = ChatSerializer.a("{\"text\": \"" + title + "\"}");
        IChatBaseComponent subtitleJSON = ChatSerializer.a("{\"text\": \"" + subtitle + "\"}");
        PacketPlayOutTitle titlePacket = new PacketPlayOutTitle(EnumTitleAction.TITLE, titleJSON, fadeIn, stay,
                fadeOut);
        PacketPlayOutTitle subtitlePacket = new PacketPlayOutTitle(EnumTitleAction.SUBTITLE, subtitleJSON);
        connection.sendPacket(titlePacket);
        connection.sendPacket(subtitlePacket);
    }

    public static void clearPermissions(Player player) {
        CraftPlayer cp = (CraftPlayer) player;
        try {
            Field field = CraftEntity.class.getDeclaredField("perm");
            field.setAccessible(true);
            Object o = field.get(cp);
            o.getClass().getMethod("clearPermissions").invoke(o);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static boolean isInWater(Player player) {
        Entity e = ((CraftPlayer) player).getHandle();
        return e.isInWater();
    }

    public static boolean isInLava(Player player) {
        Entity e = ((CraftPlayer) player).getHandle();
        return e.au();
    }

    public static void sendToServer(Player player, String server) {
        Bukkit.getScheduler().runTaskAsynchronously(SpleefLeague.getInstance(), () -> {
            CorePlugin.syncSaveAll(player);
            ByteArrayDataOutput out = ByteStreams.newDataOutput();
            out.writeUTF("Connect");
            out.writeUTF(server);
            player.sendPluginMessage(SpleefLeague.getInstance(), "BungeeCord", out.toByteArray());
        });
    }
}