Skip to content
This repository has been archived by the owner on May 3, 2018. It is now read-only.

Commit

Permalink
entity metadata fix
Browse files Browse the repository at this point in the history
  • Loading branch information
DefinitlyEvil committed May 9, 2015
1 parent de1fc16 commit 66aa9d6
Show file tree
Hide file tree
Showing 9 changed files with 87 additions and 15 deletions.
36 changes: 30 additions & 6 deletions src/main/java/org/dragonet/entity/metadata/EntityMetaData.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,31 @@

public class EntityMetaData {

public static class Constants {
public final static int DATA_TYPE_BYTE = 0;
public final static int DATA_TYPE_SHORT = 1;
public final static int DATA_TYPE_INT = 2;
public final static int DATA_TYPE_FLOAT = 3;
public final static int DATA_TYPE_STRING = 4;
public final static int DATA_TYPE_SLOT = 5;
public final static int DATA_TYPE_POS = 6;
public final static int DATA_TYPE_ROTATION = 7;
public final static int DATA_TYPE_LONG = 8;

public final static int DATA_FLAGS = 0;
public final static int DATA_AIR = 1;
public final static int DATA_SHOW_NAMETAG = 3;
public final static int DATA_POTION_COLOR = 7;
public final static int DATA_POTION_VISIBLE = 8;
public final static int DATA_NO_AI = 15;

public final static int DATA_FLAG_ONFIRE = 0;
public final static int DATA_FLAG_SNEAKING = 1;
public final static int DATA_FLAG_RIDING = 2;
public final static int DATA_FLAG_ACTION = 4;
public final static int DATA_FLAG_INVISIBLE = 5;
}

public HashMap<Integer, EntityMetaDataObject> map;

public EntityMetaData() {
Expand All @@ -50,13 +75,12 @@ public byte[] encode() {
}

public static EntityMetaData getMetaDataFromPlayer(GlowPlayer player) {
byte flags = (byte) 0x00;
flags |= player.getFireTicks() > 0 ? 1 : 0;
byte flags = (byte)0x00;
if(player.getFireTicks() > 0) flags |= EntityMetaData.Constants.DATA_FLAG_ACTION;
EntityMetaData data = new EntityMetaData();
data.set(0, new ByteMeta(flags));
data.set(1, new ShortMeta((short) 0));
data.set(16, new ByteMeta((byte) 0x00));
data.set(17, new CoordinateMeta(player.getLocation().getBlockX(), player.getLocation().getBlockY(), player.getLocation().getBlockZ()));
data.set(EntityMetaData.Constants.DATA_FLAGS, new ByteMeta((byte)0x00));
data.set(EntityMetaData.Constants.DATA_SHOW_NAMETAG, new ByteMeta((byte)0x01));
data.set(EntityMetaData.Constants.DATA_AIR, new ShortMeta((short) 300));
return data;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import org.dragonet.entity.metadata.EntityMetaData;
import org.dragonet.entity.metadata.EntityMetaDataObject;

public class ByteArrayMeta implements EntityMetaDataObject {
Expand All @@ -26,7 +27,7 @@ public ByteArrayMeta(byte[] data) {

@Override
public int type() {
return 4;
return EntityMetaData.Constants.DATA_TYPE_STRING;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
*/
package org.dragonet.entity.metadata.type;

import org.dragonet.entity.metadata.EntityMetaData;
import org.dragonet.entity.metadata.EntityMetaDataObject;

public class ByteMeta implements EntityMetaDataObject {
Expand All @@ -24,7 +25,7 @@ public ByteMeta(byte data) {

@Override
public int type() {
return 0;
return EntityMetaData.Constants.DATA_TYPE_BYTE;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import org.dragonet.entity.metadata.EntityMetaData;
import org.dragonet.entity.metadata.EntityMetaDataObject;

public class CoordinateMeta implements EntityMetaDataObject {
Expand All @@ -30,7 +31,7 @@ public CoordinateMeta(int data1, int data2, int data3) {

@Override
public int type() {
return 6;
return EntityMetaData.Constants.DATA_TYPE_POS;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import org.dragonet.entity.metadata.EntityMetaData;
import org.dragonet.entity.metadata.EntityMetaDataObject;

public class FloatMeta implements EntityMetaDataObject {
Expand All @@ -26,7 +27,7 @@ public FloatMeta(float data) {

@Override
public int type() {
return 3;
return EntityMetaData.Constants.DATA_TYPE_FLOAT;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import org.dragonet.entity.metadata.EntityMetaData;
import org.dragonet.entity.metadata.EntityMetaDataObject;

public class IntegerMeta implements EntityMetaDataObject {
Expand All @@ -26,7 +27,7 @@ public IntegerMeta(int data) {

@Override
public int type() {
return 2;
return EntityMetaData.Constants.DATA_TYPE_INT;
}

@Override
Expand Down
41 changes: 41 additions & 0 deletions src/main/java/org/dragonet/entity/metadata/type/LongMeta.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* GNU LESSER GENERAL PUBLIC LICENSE
* Version 3, 29 June 2007
*
* Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
* Everyone is permitted to copy and distribute verbatim copies
* of this license document, but changing it is not allowed.
*
* You can view LICENCE file for details.
*
* @author The Dragonet Team
*/
package org.dragonet.entity.metadata.type;

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import org.dragonet.entity.metadata.EntityMetaData;
import org.dragonet.entity.metadata.EntityMetaDataObject;

public class LongMeta implements EntityMetaDataObject {

public long data;

public LongMeta(long data) {
this.data = data;
}

@Override
public int type() {
return EntityMetaData.Constants.DATA_TYPE_LONG;
}

@Override
public byte[] encode() {
ByteBuffer buff = ByteBuffer.allocate(8);
buff.order(ByteOrder.LITTLE_ENDIAN);
buff.putLong(this.data);
return buff.array();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import org.dragonet.entity.metadata.EntityMetaData;
import org.dragonet.entity.metadata.EntityMetaDataObject;

public class ShortMeta implements EntityMetaDataObject {
Expand All @@ -26,7 +27,7 @@ public ShortMeta(short data) {

@Override
public int type() {
return 1;
return EntityMetaData.Constants.DATA_TYPE_SHORT;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,23 +14,24 @@

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import org.dragonet.entity.metadata.EntityMetaData;
import org.dragonet.entity.metadata.EntityMetaDataObject;

public class SmallCoordinateMeta implements EntityMetaDataObject {
public class SlotMeta implements EntityMetaDataObject {

public short data1;
public byte data2;
public short data3;

public SmallCoordinateMeta(short data1, byte data2, short data3) {
public SlotMeta(short data1, byte data2, short data3) {
this.data1 = data1;
this.data2 = data2;
this.data3 = data3;
}

@Override
public int type() {
return 5;
return EntityMetaData.Constants.DATA_TYPE_SLOT;
}

@Override
Expand Down

0 comments on commit 66aa9d6

Please sign in to comment.