Update 5.14

This commit is contained in:
sky
2020-01-14 22:35:46 +08:00
parent 2a038c3baf
commit 3dc9e40cd5
7 changed files with 275 additions and 1 deletions

View File

@@ -2,11 +2,13 @@ package io.izzel.taboolib.module.nms;
import com.google.common.collect.Lists;
import io.izzel.taboolib.module.inject.TInject;
import io.izzel.taboolib.module.nms.impl.Position;
import io.izzel.taboolib.module.nms.nbt.Attribute;
import io.izzel.taboolib.module.nms.nbt.NBTAttribute;
import io.izzel.taboolib.module.nms.nbt.NBTCompound;
import io.izzel.taboolib.module.nms.nbt.NBTList;
import org.bukkit.Particle;
import org.bukkit.block.Block;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
@@ -70,4 +72,10 @@ public abstract class NMS {
abstract public List<NBTAttribute> getBaseAttribute(ItemStack item);
abstract public Object toNMS(Attribute attribute);
abstract public Entity getEntityById(int id);
abstract public Position fromBlockPosition(Object blockPosition);
abstract public void openSignEditor(Player player, Block block);
}

View File

@@ -12,12 +12,15 @@ import net.minecraft.server.v1_12_R1.MinecraftServer;
import net.minecraft.server.v1_12_R1.NBTTagCompound;
import net.minecraft.server.v1_13_R2.EnumHand;
import net.minecraft.server.v1_13_R2.IRegistry;
import net.minecraft.server.v1_8_R3.*;
import net.minecraft.server.v1_8_R3.NBTBase;
import net.minecraft.server.v1_8_R3.*;
import org.bukkit.Bukkit;
import org.bukkit.Particle;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.craftbukkit.v1_12_R1.CraftParticle;
import org.bukkit.craftbukkit.v1_13_R2.CraftServer;
import org.bukkit.craftbukkit.v1_13_R2.CraftWorld;
import org.bukkit.craftbukkit.v1_13_R2.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_13_R2.entity.CraftVillager;
import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftItemStack;
@@ -267,6 +270,31 @@ public class NMSImpl extends NMS {
return SimpleReflection.getFieldValue(GenericAttributes.class, null, attribute.name());
}
@Override
public Entity getEntityById(int id) {
for (World world : Bukkit.getServer().getWorlds()) {
net.minecraft.server.v1_13_R2.Entity entity = ((CraftWorld) world).getHandle().getEntity(id);
if (entity != null) {
return entity.getBukkitEntity();
}
}
return null;
}
@Override
public io.izzel.taboolib.module.nms.impl.Position fromBlockPosition(Object blockPosition) {
return blockPosition instanceof net.minecraft.server.v1_12_R1.BlockPosition ? new io.izzel.taboolib.module.nms.impl.Position(((net.minecraft.server.v1_12_R1.BlockPosition) blockPosition).getX(), ((net.minecraft.server.v1_12_R1.BlockPosition) blockPosition).getY(), ((net.minecraft.server.v1_12_R1.BlockPosition) blockPosition).getZ()) : null;
}
@Override
public void openSignEditor(Player player, Block block) {
try {
((org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer) player).getHandle().playerConnection.sendPacket(new net.minecraft.server.v1_12_R1.PacketPlayOutOpenSignEditor(new net.minecraft.server.v1_12_R1.BlockPosition(block.getX(), block.getY(), block.getZ())));
} catch (Throwable t) {
t.printStackTrace();
}
}
private Object toNBTBase(io.izzel.taboolib.module.nms.nbt.NBTBase base) {
switch (base.getType().getId()) {
case 1:

View File

@@ -0,0 +1,40 @@
package io.izzel.taboolib.module.nms.impl;
/**
* @Author sky
* @Since 2020-01-14 22:02
*/
public class Position {
private int x, y, z;
public Position(int x, int y, int z) {
this.x = x;
this.y = y;
this.z = z;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public int getZ() {
return z;
}
public void setX(int x) {
this.x = x;
}
public void setY(int y) {
this.y = y;
}
public void setZ(int z) {
this.z = z;
}
}