mirror of
https://github.com/sirjonasxx/G-Earth.git
synced 2024-11-30 04:00:50 +01:00
commit
8de3d5cdd4
@ -1,10 +1,9 @@
|
|||||||
package gearth.extensions.parsers;
|
package gearth.extensions.parsers;
|
||||||
|
|
||||||
|
import gearth.extensions.parsers.stuffdata.IStuffData;
|
||||||
import gearth.protocol.HPacket;
|
import gearth.protocol.HPacket;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Function;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
public class HFloorItem implements IFurni {
|
public class HFloorItem implements IFurni {
|
||||||
private int id;
|
private int id;
|
||||||
@ -12,17 +11,15 @@ public class HFloorItem implements IFurni {
|
|||||||
private HPoint tile;
|
private HPoint tile;
|
||||||
private HDirection facing;
|
private HDirection facing;
|
||||||
|
|
||||||
private int category;
|
|
||||||
|
|
||||||
private int secondsToExpiration;
|
private int secondsToExpiration;
|
||||||
private int usagePolicy;
|
private int usagePolicy;
|
||||||
private int ownerId;
|
private int ownerId;
|
||||||
private String ownerName;
|
private String ownerName;
|
||||||
private Object[] stuff;
|
private IStuffData stuff;
|
||||||
|
|
||||||
private String ignore1;
|
private String sizeZ;
|
||||||
private Integer ignore2;
|
private Integer extra;
|
||||||
private String ignore3;
|
private String staticClass;
|
||||||
|
|
||||||
public HFloorItem(HPacket packet) {
|
public HFloorItem(HPacket packet) {
|
||||||
id = packet.readInteger();
|
id = packet.readInteger();
|
||||||
@ -34,12 +31,10 @@ public class HFloorItem implements IFurni {
|
|||||||
|
|
||||||
tile = new HPoint(x, y, Double.parseDouble(packet.readString()));
|
tile = new HPoint(x, y, Double.parseDouble(packet.readString()));
|
||||||
|
|
||||||
ignore1 = packet.readString();
|
sizeZ = packet.readString();
|
||||||
ignore2 = packet.readInteger();
|
extra = packet.readInteger();
|
||||||
|
|
||||||
category = packet.readInteger();
|
stuff = IStuffData.read(packet);
|
||||||
|
|
||||||
stuff = HStuff.readData(packet, category);
|
|
||||||
|
|
||||||
secondsToExpiration = packet.readInteger();
|
secondsToExpiration = packet.readInteger();
|
||||||
usagePolicy = packet.readInteger();
|
usagePolicy = packet.readInteger();
|
||||||
@ -47,13 +42,11 @@ public class HFloorItem implements IFurni {
|
|||||||
ownerId = packet.readInteger();
|
ownerId = packet.readInteger();
|
||||||
|
|
||||||
if (typeId < 0) {
|
if (typeId < 0) {
|
||||||
ignore3 = packet.readString();
|
staticClass = packet.readString();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ignore3 = null;
|
staticClass = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void appendToPacket(HPacket packet) {
|
public void appendToPacket(HPacket packet) {
|
||||||
@ -76,20 +69,14 @@ public class HFloorItem implements IFurni {
|
|||||||
packet.appendString(tile.getZ() + "");
|
packet.appendString(tile.getZ() + "");
|
||||||
|
|
||||||
|
|
||||||
// ignore1 = packet.readString();
|
// sizeZ = packet.readString();
|
||||||
packet.appendString(ignore1);
|
packet.appendString(sizeZ);
|
||||||
|
|
||||||
// ignore2 = packet.readInteger();
|
// extra = packet.readInteger();
|
||||||
packet.appendInt(ignore2);
|
packet.appendInt(extra);
|
||||||
|
|
||||||
// category = packet.readInteger();
|
// stuff = IStuffData.read(packet);
|
||||||
packet.appendInt(category);
|
stuff.appendToPacket(packet);
|
||||||
|
|
||||||
|
|
||||||
// stuff = HStuff.readData(packet, category);
|
|
||||||
for (Object object : stuff) {
|
|
||||||
packet.appendObject(object);
|
|
||||||
}
|
|
||||||
|
|
||||||
// secondsToExpiration = packet.readInteger();
|
// secondsToExpiration = packet.readInteger();
|
||||||
packet.appendInt(secondsToExpiration);
|
packet.appendInt(secondsToExpiration);
|
||||||
@ -102,8 +89,8 @@ public class HFloorItem implements IFurni {
|
|||||||
|
|
||||||
|
|
||||||
if (typeId < 0) {
|
if (typeId < 0) {
|
||||||
// ignore3 = packet.readString();
|
// staticClass = packet.readString();
|
||||||
packet.appendString(ignore3);
|
packet.appendString(staticClass);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,9 +161,9 @@ public class HFloorItem implements IFurni {
|
|||||||
return secondsToExpiration;
|
return secondsToExpiration;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getCategory() {
|
// public int getCategory() {
|
||||||
return category;
|
// return category;
|
||||||
}
|
// }
|
||||||
|
|
||||||
public HDirection getFacing() {
|
public HDirection getFacing() {
|
||||||
return facing;
|
return facing;
|
||||||
@ -186,7 +173,7 @@ public class HFloorItem implements IFurni {
|
|||||||
return tile;
|
return tile;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object[] getStuff() {
|
public IStuffData getStuff() {
|
||||||
return stuff;
|
return stuff;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,9 +197,9 @@ public class HFloorItem implements IFurni {
|
|||||||
this.facing = facing;
|
this.facing = facing;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCategory(int category) {
|
// public void setCategory(int category) {
|
||||||
this.category = category;
|
// this.category = category;
|
||||||
}
|
// }
|
||||||
|
|
||||||
public void setSecondsToExpiration(int secondsToExpiration) {
|
public void setSecondsToExpiration(int secondsToExpiration) {
|
||||||
this.secondsToExpiration = secondsToExpiration;
|
this.secondsToExpiration = secondsToExpiration;
|
||||||
@ -226,7 +213,7 @@ public class HFloorItem implements IFurni {
|
|||||||
this.ownerId = ownerId;
|
this.ownerId = ownerId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setStuff(Object[] stuff) {
|
public void setStuff(IStuffData stuff) {
|
||||||
this.stuff = stuff;
|
this.stuff = stuff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package gearth.extensions.parsers;
|
package gearth.extensions.parsers;
|
||||||
|
|
||||||
|
import gearth.extensions.parsers.stuffdata.IStuffData;
|
||||||
import gearth.protocol.HPacket;
|
import gearth.protocol.HPacket;
|
||||||
|
|
||||||
public class HInventoryItem {
|
public class HInventoryItem {
|
||||||
@ -8,8 +9,7 @@ public class HInventoryItem {
|
|||||||
private int id;
|
private int id;
|
||||||
private int typeId;
|
private int typeId;
|
||||||
private HSpecialType specialType;
|
private HSpecialType specialType;
|
||||||
private int category;
|
private IStuffData stuff;
|
||||||
private Object[] stuff;
|
|
||||||
private boolean recyclable;
|
private boolean recyclable;
|
||||||
private boolean tradeable;
|
private boolean tradeable;
|
||||||
private boolean groupable;
|
private boolean groupable;
|
||||||
@ -27,8 +27,7 @@ public class HInventoryItem {
|
|||||||
id = packet.readInteger();
|
id = packet.readInteger();
|
||||||
typeId = packet.readInteger();
|
typeId = packet.readInteger();
|
||||||
specialType = HSpecialType.fromId(packet.readInteger());
|
specialType = HSpecialType.fromId(packet.readInteger());
|
||||||
category = packet.readInteger();
|
stuff = IStuffData.read(packet);
|
||||||
stuff = HStuff.readData(packet, category);
|
|
||||||
recyclable = packet.readBoolean();
|
recyclable = packet.readBoolean();
|
||||||
tradeable = packet.readBoolean();
|
tradeable = packet.readBoolean();
|
||||||
groupable = packet.readBoolean();
|
groupable = packet.readBoolean();
|
||||||
@ -49,11 +48,7 @@ public class HInventoryItem {
|
|||||||
packet.appendInt(id);
|
packet.appendInt(id);
|
||||||
packet.appendInt(typeId);
|
packet.appendInt(typeId);
|
||||||
packet.appendInt(specialType.getId());
|
packet.appendInt(specialType.getId());
|
||||||
packet.appendInt(category);
|
stuff.appendToPacket(packet);
|
||||||
|
|
||||||
for (Object object : stuff) {
|
|
||||||
packet.appendObject(object);
|
|
||||||
}
|
|
||||||
|
|
||||||
packet.appendBoolean(recyclable);
|
packet.appendBoolean(recyclable);
|
||||||
packet.appendBoolean(tradeable);
|
packet.appendBoolean(tradeable);
|
||||||
@ -133,19 +128,11 @@ public class HInventoryItem {
|
|||||||
this.typeId = typeId;
|
this.typeId = typeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getCategory() {
|
public IStuffData getStuff() {
|
||||||
return category;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCategory(int category) {
|
|
||||||
this.category = category;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object[] getStuff() {
|
|
||||||
return stuff;
|
return stuff;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setStuff(Object[] stuff) {
|
public void setStuff(IStuffData stuff) {
|
||||||
this.stuff = stuff;
|
this.stuff = stuff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,91 +0,0 @@
|
|||||||
package gearth.extensions.parsers;
|
|
||||||
|
|
||||||
import gearth.protocol.HPacket;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class HStuff {
|
|
||||||
|
|
||||||
public static Object[] readData(HPacket packet, int category) {
|
|
||||||
List<Object> values = new ArrayList<>();
|
|
||||||
switch (category & 0xFF)
|
|
||||||
{
|
|
||||||
case 0: /* LegacyStuffData */ {
|
|
||||||
values.add(packet.readString());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 1: /* MapStuffData */ {
|
|
||||||
int count = packet.readInteger();
|
|
||||||
values.add(count);
|
|
||||||
|
|
||||||
for (int j = 0; j < count; j++)
|
|
||||||
{
|
|
||||||
values.add(packet.readString());
|
|
||||||
values.add(packet.readString());
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 2: /* StringArrayStuffData */ {
|
|
||||||
int count = packet.readInteger();
|
|
||||||
values.add(count);
|
|
||||||
|
|
||||||
for (int j = 0; j < count; j++)
|
|
||||||
{
|
|
||||||
values.add(packet.readString());
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 3: /* VoteResultStuffData */ {
|
|
||||||
values.add(packet.readString());
|
|
||||||
values.add(packet.readInteger());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 5: /* IntArrayStuffData */ {
|
|
||||||
int count = packet.readInteger();
|
|
||||||
values.add(count);
|
|
||||||
|
|
||||||
for (int j = 0; j < count; j++)
|
|
||||||
{
|
|
||||||
values.add(packet.readInteger());
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 6: /* HighScoreStuffData */ {
|
|
||||||
values.add(packet.readString());
|
|
||||||
values.add(packet.readInteger());
|
|
||||||
values.add(packet.readInteger());
|
|
||||||
|
|
||||||
int count = packet.readInteger();
|
|
||||||
values.add(count);
|
|
||||||
|
|
||||||
for (int j = 0; j < count; j++)
|
|
||||||
{
|
|
||||||
int score = packet.readInteger();
|
|
||||||
values.add(score);
|
|
||||||
|
|
||||||
int subCount = packet.readInteger();
|
|
||||||
values.add(subCount);
|
|
||||||
|
|
||||||
for (int k = 0; k < subCount; k++)
|
|
||||||
{
|
|
||||||
values.add(packet.readString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 7: /* CrackableStuffData */ {
|
|
||||||
values.add(packet.readString());
|
|
||||||
values.add(packet.readInteger());
|
|
||||||
values.add(packet.readInteger());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((category & 0xFF00 & 0x100) > 0) {
|
|
||||||
values.add(packet.readInteger());
|
|
||||||
values.add(packet.readInteger());
|
|
||||||
}
|
|
||||||
return values.toArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -0,0 +1,173 @@
|
|||||||
|
package gearth.extensions.parsers.stuffdata;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
import java.util.function.UnaryOperator;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper class to make IntArrayStuffData and StringArrayStuffData behave like a List
|
||||||
|
* @param <T> Value class
|
||||||
|
*/
|
||||||
|
public class ArrayStuffData<T> extends StuffDataBase implements List<T> {
|
||||||
|
protected List<T> values = new ArrayList<>();
|
||||||
|
|
||||||
|
public ArrayStuffData() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayStuffData(int uniqueSerialNumber, int uniqueSerialSize) {
|
||||||
|
super(uniqueSerialNumber, uniqueSerialSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int size() {
|
||||||
|
return values.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEmpty() {
|
||||||
|
return values.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean contains(Object o) {
|
||||||
|
return values.contains(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Iterator<T> iterator() {
|
||||||
|
return values.iterator();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void forEach(Consumer<? super T> action) {
|
||||||
|
values.forEach(action);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object[] toArray() {
|
||||||
|
return values.toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T1> T1[] toArray(T1[] a) {
|
||||||
|
return values.toArray(a);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean add(T t) {
|
||||||
|
return values.add(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean remove(Object o) {
|
||||||
|
return values.remove(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean containsAll(Collection<?> c) {
|
||||||
|
return values.containsAll(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addAll(Collection<? extends T> c) {
|
||||||
|
return values.addAll(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addAll(int index, Collection<? extends T> c) {
|
||||||
|
return values.addAll(index, c);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean removeAll(Collection<?> c) {
|
||||||
|
return values.removeAll(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean removeIf(Predicate<? super T> filter) {
|
||||||
|
return values.removeIf(filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean retainAll(Collection<?> c) {
|
||||||
|
return values.retainAll(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void replaceAll(UnaryOperator<T> operator) {
|
||||||
|
values.replaceAll(operator);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sort(Comparator<? super T> c) {
|
||||||
|
values.sort(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clear() {
|
||||||
|
values.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T get(int index) {
|
||||||
|
return values.get(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T set(int index, T element) {
|
||||||
|
return values.set(index, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void add(int index, T element) {
|
||||||
|
values.add(index, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T remove(int index) {
|
||||||
|
return values.remove(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int indexOf(Object o) {
|
||||||
|
return values.indexOf(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int lastIndexOf(Object o) {
|
||||||
|
return values.lastIndexOf(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListIterator<T> listIterator() {
|
||||||
|
return values.listIterator();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListIterator<T> listIterator(int index) {
|
||||||
|
return values.listIterator(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<T> subList(int fromIndex, int toIndex) {
|
||||||
|
return values.subList(fromIndex, toIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Spliterator<T> spliterator() {
|
||||||
|
return values.spliterator();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Stream<T> stream() {
|
||||||
|
return values.stream();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Stream<T> parallelStream() {
|
||||||
|
return values.parallelStream();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,73 @@
|
|||||||
|
package gearth.extensions.parsers.stuffdata;
|
||||||
|
|
||||||
|
import gearth.protocol.HPacket;
|
||||||
|
|
||||||
|
public class CrackableStuffData extends StuffDataBase {
|
||||||
|
public final static int IDENTIFIER = 7;
|
||||||
|
|
||||||
|
private String legacyString = "";
|
||||||
|
private int hits = 0;
|
||||||
|
private int target = 0;
|
||||||
|
|
||||||
|
protected CrackableStuffData() {}
|
||||||
|
|
||||||
|
public CrackableStuffData(String legacyString, int hits, int target) {
|
||||||
|
super();
|
||||||
|
this.legacyString = legacyString == null ? "" : legacyString;
|
||||||
|
this.hits = hits;
|
||||||
|
this.target = target;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public CrackableStuffData(int uniqueSerialNumber, int uniqueSerialSize, String legacyString, int hits, int target) {
|
||||||
|
super(uniqueSerialNumber, uniqueSerialSize);
|
||||||
|
this.legacyString = legacyString == null ? "" : legacyString;
|
||||||
|
this.hits = hits;
|
||||||
|
this.target = target;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initialize(HPacket packet) {
|
||||||
|
this.legacyString = packet.readString();
|
||||||
|
this.hits = packet.readInteger();
|
||||||
|
this.target = packet.readInteger();
|
||||||
|
super.initialize(packet);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void appendToPacket(HPacket packet) {
|
||||||
|
packet.appendInt(IDENTIFIER | this.getFlags());
|
||||||
|
packet.appendObjects(
|
||||||
|
this.legacyString,
|
||||||
|
this.hits,
|
||||||
|
this.target
|
||||||
|
);
|
||||||
|
super.appendToPacket(packet);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getLegacyString() {
|
||||||
|
return this.legacyString;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setLegacyString(String legacyString) {
|
||||||
|
this.legacyString = legacyString;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getHits() {
|
||||||
|
return this.hits;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHits(int hits) {
|
||||||
|
this.hits = hits;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTarget() {
|
||||||
|
return this.target;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTarget(int target) {
|
||||||
|
this.target = target;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package gearth.extensions.parsers.stuffdata;
|
||||||
|
|
||||||
|
import gearth.protocol.HPacket;
|
||||||
|
|
||||||
|
public class EmptyStuffData extends StuffDataBase {
|
||||||
|
public final static int IDENTIFIER = 4;
|
||||||
|
|
||||||
|
public EmptyStuffData() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public EmptyStuffData(int uniqueSerialNumber, int uniqueSerialSize) {
|
||||||
|
super(uniqueSerialNumber, uniqueSerialSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initialize(HPacket packet) {
|
||||||
|
super.initialize(packet);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void appendToPacket(HPacket packet) {
|
||||||
|
packet.appendInt(IDENTIFIER | this.getFlags());
|
||||||
|
super.appendToPacket(packet);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
package gearth.extensions.parsers.stuffdata;
|
||||||
|
|
||||||
|
import gearth.protocol.HPacket;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public class HighScoreData {
|
||||||
|
private int score;
|
||||||
|
private String[] users;
|
||||||
|
|
||||||
|
protected HighScoreData(HPacket packet) {
|
||||||
|
this.score = packet.readInteger();
|
||||||
|
int size = packet.readInteger();
|
||||||
|
this.users = new String[size];
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
this.users[i] = packet.readString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public HighScoreData(int score, String... users) {
|
||||||
|
super();
|
||||||
|
this.score = score;
|
||||||
|
this.users = Arrays.stream(users).filter(Objects::nonNull).toArray(String[]::new);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void appendToPacket(HPacket packet) {
|
||||||
|
packet.appendInt(this.score);
|
||||||
|
packet.appendInt(this.users.length);
|
||||||
|
for (String user : this.users) {
|
||||||
|
packet.appendString(user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getScore() {
|
||||||
|
return this.score;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setScore(int score) {
|
||||||
|
this.score = score;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String[] getUsers() {
|
||||||
|
return this.users.clone();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUsers(String[] users) {
|
||||||
|
this.users = Arrays
|
||||||
|
.stream(users == null ? new String[0] : users)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.toArray(String[]::new);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,99 @@
|
|||||||
|
package gearth.extensions.parsers.stuffdata;
|
||||||
|
|
||||||
|
import gearth.protocol.HPacket;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public class HighScoreStuffData extends StuffDataBase {
|
||||||
|
public final static int IDENTIFIER = 6;
|
||||||
|
|
||||||
|
private String legacyString = "";
|
||||||
|
// ['perteam', 'mostwins', 'classic', 'fastesttime', 'longesttime']
|
||||||
|
private int scoreType = 0;
|
||||||
|
// ['alltime', 'daily', 'weekly', 'monthly']
|
||||||
|
private int clearType = 0;
|
||||||
|
private HighScoreData[] entries = {};
|
||||||
|
|
||||||
|
protected HighScoreStuffData() {}
|
||||||
|
|
||||||
|
public HighScoreStuffData(String legacyString, int scoreType, int clearType, HighScoreData... entries) {
|
||||||
|
super();
|
||||||
|
this.legacyString = legacyString == null ? "" : legacyString;
|
||||||
|
this.scoreType = scoreType;
|
||||||
|
this.clearType = clearType;
|
||||||
|
this.entries = Arrays.stream(entries).filter(Objects::nonNull).toArray(HighScoreData[]::new);
|
||||||
|
}
|
||||||
|
|
||||||
|
public HighScoreStuffData(int uniqueSerialNumber, int uniqueSerialSize, String legacyString, int scoreType, int clearType, HighScoreData... entries) {
|
||||||
|
super(uniqueSerialNumber, uniqueSerialSize);
|
||||||
|
this.legacyString = legacyString == null ? "" : legacyString;
|
||||||
|
this.scoreType = scoreType;
|
||||||
|
this.clearType = clearType;
|
||||||
|
this.entries = Arrays.stream(entries).filter(Objects::nonNull).toArray(HighScoreData[]::new);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initialize(HPacket packet) {
|
||||||
|
this.legacyString = packet.readString();
|
||||||
|
this.scoreType = packet.readInteger();
|
||||||
|
this.clearType = packet.readInteger();
|
||||||
|
|
||||||
|
int size = packet.readInteger();
|
||||||
|
this.entries = new HighScoreData[size];
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
this.entries[i] = new HighScoreData(packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void appendToPacket(HPacket packet) {
|
||||||
|
packet.appendInt(IDENTIFIER | this.getFlags());
|
||||||
|
packet.appendObjects(
|
||||||
|
this.legacyString,
|
||||||
|
this.scoreType,
|
||||||
|
this.clearType,
|
||||||
|
this.entries.length
|
||||||
|
);
|
||||||
|
for (HighScoreData entry : this.entries) {
|
||||||
|
entry.appendToPacket(packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getLegacyString() {
|
||||||
|
return this.legacyString;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setLegacyString(String legacyString) {
|
||||||
|
this.legacyString = legacyString;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getScoreType() {
|
||||||
|
return this.scoreType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setScoreType(int scoreType) {
|
||||||
|
this.scoreType = scoreType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getClearType() {
|
||||||
|
return this.clearType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClearType(int clearType) {
|
||||||
|
this.clearType = clearType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public HighScoreData[] getEntries() {
|
||||||
|
return this.entries.clone();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEntries(HighScoreData[] entries) {
|
||||||
|
this.entries = Arrays
|
||||||
|
.stream(entries == null ? new HighScoreData[0] : entries)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.toArray(HighScoreData[]::new);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,66 @@
|
|||||||
|
package gearth.extensions.parsers.stuffdata;
|
||||||
|
|
||||||
|
import gearth.protocol.HPacket;
|
||||||
|
|
||||||
|
public interface IStuffData {
|
||||||
|
static IStuffData read(HPacket packet) {
|
||||||
|
int a = packet.readInteger();
|
||||||
|
StuffDataBase stuffData = null;
|
||||||
|
|
||||||
|
switch (a & 255) {
|
||||||
|
case LegacyStuffData.IDENTIFIER:
|
||||||
|
stuffData = new LegacyStuffData();
|
||||||
|
break;
|
||||||
|
case MapStuffData.IDENTIFIER:
|
||||||
|
stuffData = new MapStuffData();
|
||||||
|
break;
|
||||||
|
case StringArrayStuffData.IDENTIFIER:
|
||||||
|
stuffData = new StringArrayStuffData();
|
||||||
|
break;
|
||||||
|
case VoteResultStuffData.IDENTIFIER:
|
||||||
|
stuffData = new VoteResultStuffData();
|
||||||
|
break;
|
||||||
|
case EmptyStuffData.IDENTIFIER:
|
||||||
|
stuffData = new EmptyStuffData();
|
||||||
|
break;
|
||||||
|
case IntArrayStuffData.IDENTIFIER:
|
||||||
|
stuffData = new IntArrayStuffData();
|
||||||
|
break;
|
||||||
|
case HighScoreStuffData.IDENTIFIER:
|
||||||
|
stuffData = new HighScoreStuffData();
|
||||||
|
break;
|
||||||
|
case CrackableStuffData.IDENTIFIER:
|
||||||
|
stuffData = new CrackableStuffData();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stuffData != null) {
|
||||||
|
stuffData.setFlags(a & 65280);
|
||||||
|
stuffData.initialize(packet);
|
||||||
|
} else {
|
||||||
|
throw new RuntimeException("Unknown stuffdata type");
|
||||||
|
}
|
||||||
|
|
||||||
|
return stuffData;
|
||||||
|
}
|
||||||
|
|
||||||
|
void appendToPacket(HPacket packet);
|
||||||
|
|
||||||
|
String getLegacyString();
|
||||||
|
void setLegacyString(String legacyString);
|
||||||
|
|
||||||
|
void setFlags(int flags);
|
||||||
|
int getFlags();
|
||||||
|
|
||||||
|
int getUniqueSerialNumber();
|
||||||
|
int getUniqueSerialSize();
|
||||||
|
void setUniqueSerialNumber(int uniqueSerialNumber);
|
||||||
|
void setUniqueSerialSize(int uniqueSerialSize);
|
||||||
|
|
||||||
|
int getRarityLevel();
|
||||||
|
|
||||||
|
int getState();
|
||||||
|
void setState(int state);
|
||||||
|
|
||||||
|
String getJSONValue(String key);
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
package gearth.extensions.parsers.stuffdata;
|
||||||
|
|
||||||
|
import gearth.protocol.HPacket;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
// 5
|
||||||
|
public class IntArrayStuffData extends ArrayStuffData<Integer> {
|
||||||
|
public final static int IDENTIFIER = 5;
|
||||||
|
|
||||||
|
protected IntArrayStuffData() {}
|
||||||
|
|
||||||
|
public IntArrayStuffData(Integer... values) {
|
||||||
|
super();
|
||||||
|
this.values = Arrays.asList(values);
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntArrayStuffData(int uniqueSerialNumber, int uniqueSerialSize, Integer... values) {
|
||||||
|
super(uniqueSerialNumber, uniqueSerialSize);
|
||||||
|
this.values = Arrays.asList(values);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initialize(HPacket packet) {
|
||||||
|
int size = packet.readInteger();
|
||||||
|
this.clear();
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
this.add(packet.readInteger());
|
||||||
|
}
|
||||||
|
super.initialize(packet);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void appendToPacket(HPacket packet) {
|
||||||
|
packet.appendInt(IDENTIFIER | this.getFlags());
|
||||||
|
packet.appendInt(this.size());
|
||||||
|
for (int i : this) {
|
||||||
|
packet.appendInt(i);
|
||||||
|
}
|
||||||
|
super.appendToPacket(packet);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getLegacyString() {
|
||||||
|
return this.size() > 0 ? String.valueOf(this.get(0)) : "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setLegacyString(String legacyString) {
|
||||||
|
if (this.size() > 0)
|
||||||
|
this.set(0, Integer.parseInt(legacyString));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
package gearth.extensions.parsers.stuffdata;
|
||||||
|
|
||||||
|
import gearth.protocol.HPacket;
|
||||||
|
|
||||||
|
public class LegacyStuffData extends StuffDataBase {
|
||||||
|
public final static int IDENTIFIER = 0;
|
||||||
|
|
||||||
|
private String legacyString;
|
||||||
|
|
||||||
|
protected LegacyStuffData() {}
|
||||||
|
|
||||||
|
public LegacyStuffData(String legacyString) {
|
||||||
|
this.legacyString = legacyString == null ? "" : legacyString;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LegacyStuffData(int uniqueSerialNumber, int uniqueSerialSize, String legacyString) {
|
||||||
|
super(uniqueSerialNumber, uniqueSerialSize);
|
||||||
|
this.legacyString = legacyString == null ? "" : legacyString;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initialize(HPacket packet) {
|
||||||
|
this.legacyString = packet.readString();
|
||||||
|
super.initialize(packet);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void appendToPacket(HPacket packet) {
|
||||||
|
packet.appendInt(IDENTIFIER | this.getFlags());
|
||||||
|
packet.appendString(this.legacyString);
|
||||||
|
super.appendToPacket(packet);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getLegacyString() {
|
||||||
|
return this.legacyString;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setLegacyString(String legacyString) {
|
||||||
|
this.legacyString = legacyString;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,177 @@
|
|||||||
|
package gearth.extensions.parsers.stuffdata;
|
||||||
|
|
||||||
|
import gearth.protocol.HPacket;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
import java.util.function.BiFunction;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class MapStuffData extends StuffDataBase implements Map<String, String> {
|
||||||
|
public final static int IDENTIFIER = 1;
|
||||||
|
|
||||||
|
private Map<String, String> map = new HashMap<>();
|
||||||
|
|
||||||
|
protected MapStuffData() {}
|
||||||
|
|
||||||
|
public MapStuffData(HashMap<String, String> map) {
|
||||||
|
this.map = map == null ? new HashMap<>() : map.entrySet().stream().filter(e -> e.getValue() != null).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (x, y) -> y, HashMap::new));
|
||||||
|
}
|
||||||
|
|
||||||
|
public MapStuffData(int uniqueSerialNumber, int uniqueSerialSize, HashMap<String, String> map) {
|
||||||
|
super(uniqueSerialNumber, uniqueSerialSize);
|
||||||
|
this.map = map == null ? new HashMap<>() : map.entrySet().stream().filter(e -> e.getValue() != null).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (x, y) -> y, HashMap::new));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initialize(HPacket packet) {
|
||||||
|
int size = packet.readInteger();
|
||||||
|
this.clear();
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
this.put(packet.readString(), packet.readString());
|
||||||
|
}
|
||||||
|
super.initialize(packet);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void appendToPacket(HPacket packet) {
|
||||||
|
packet.appendInt(IDENTIFIER | this.getFlags());
|
||||||
|
packet.appendInt(this.size());
|
||||||
|
for (Entry<String, String> entry : this.entrySet()) {
|
||||||
|
packet.appendObjects(
|
||||||
|
entry.getKey(),
|
||||||
|
entry.getValue() == null ? "" : entry.getValue()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
super.appendToPacket(packet);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getLegacyString() {
|
||||||
|
return this.getOrDefault("state", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setLegacyString(String legacyString) {
|
||||||
|
this.put("state", legacyString == null ? "" : legacyString);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int size() {
|
||||||
|
return this.map.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEmpty() {
|
||||||
|
return this.map.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean containsKey(Object key) {
|
||||||
|
return this.map.containsKey(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean containsValue(Object value) {
|
||||||
|
return this.map.containsValue(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String get(Object key) {
|
||||||
|
return this.map.get(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String put(String key, String value) {
|
||||||
|
return this.map.put(key, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String remove(Object key) {
|
||||||
|
return this.map.remove(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void putAll(Map<? extends String, ? extends String> m) {
|
||||||
|
this.map.putAll(m);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clear() {
|
||||||
|
this.map.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<String> keySet() {
|
||||||
|
return this.map.keySet();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<String> values() {
|
||||||
|
return this.map.values();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<Entry<String, String>> entrySet() {
|
||||||
|
return this.map.entrySet();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getOrDefault(Object key, String defaultValue) {
|
||||||
|
return this.map.getOrDefault(key, defaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void forEach(BiConsumer<? super String, ? super String> action) {
|
||||||
|
this.map.forEach(action);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void replaceAll(BiFunction<? super String, ? super String, ? extends String> function) {
|
||||||
|
this.map.replaceAll(function);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String putIfAbsent(String key, String value) {
|
||||||
|
return this.map.putIfAbsent(key, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean remove(Object key, Object value) {
|
||||||
|
return this.map.remove(key, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean replace(String key, String oldValue, String newValue) {
|
||||||
|
return this.map.replace(key, oldValue, newValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String replace(String key, String value) {
|
||||||
|
return this.map.replace(key, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String computeIfAbsent(String key, Function<? super String, ? extends String> mappingFunction) {
|
||||||
|
return this.map.computeIfAbsent(key, mappingFunction);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String computeIfPresent(String key, BiFunction<? super String, ? super String, ? extends String> remappingFunction) {
|
||||||
|
return this.map.computeIfPresent(key, remappingFunction);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String compute(String key, BiFunction<? super String, ? super String, ? extends String> remappingFunction) {
|
||||||
|
return this.map.compute(key, remappingFunction);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String merge(String key, String value, BiFunction<? super String, ? super String, ? extends String> remappingFunction) {
|
||||||
|
return this.map.merge(key, value, remappingFunction);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,55 @@
|
|||||||
|
package gearth.extensions.parsers.stuffdata;
|
||||||
|
|
||||||
|
import gearth.protocol.HPacket;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
// 2
|
||||||
|
public class StringArrayStuffData extends ArrayStuffData<String> {
|
||||||
|
public final static int IDENTIFIER = 2;
|
||||||
|
|
||||||
|
protected StringArrayStuffData() {}
|
||||||
|
|
||||||
|
public StringArrayStuffData(String... array) {
|
||||||
|
this.values = Arrays.stream(array).filter(Objects::nonNull).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
public StringArrayStuffData(int uniqueSerialNumber, int uniqueSerialSize, String... array) {
|
||||||
|
super(uniqueSerialNumber, uniqueSerialSize);
|
||||||
|
this.values = Arrays.stream(array).filter(Objects::nonNull).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initialize(HPacket packet) {
|
||||||
|
int size = packet.readInteger();
|
||||||
|
this.clear();
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
this.add(packet.readString());
|
||||||
|
}
|
||||||
|
super.initialize(packet);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void appendToPacket(HPacket packet) {
|
||||||
|
packet.appendInt(IDENTIFIER | this.getFlags());
|
||||||
|
packet.appendInt(this.size());
|
||||||
|
for (String s : this) {
|
||||||
|
packet.appendString(s);
|
||||||
|
}
|
||||||
|
super.appendToPacket(packet);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getLegacyString() {
|
||||||
|
return this.size() > 0 ? this.get(0) : "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setLegacyString(String legacyString) {
|
||||||
|
if (this.size() > 0) {
|
||||||
|
this.set(0, legacyString == null ? "" : legacyString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,98 @@
|
|||||||
|
package gearth.extensions.parsers.stuffdata;
|
||||||
|
|
||||||
|
import gearth.protocol.HPacket;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
public abstract class StuffDataBase implements IStuffData {
|
||||||
|
private int flags = 0;
|
||||||
|
private int uniqueSerialNumber = 0;
|
||||||
|
private int uniqueSerialSize = 0;
|
||||||
|
|
||||||
|
protected StuffDataBase() {}
|
||||||
|
|
||||||
|
protected StuffDataBase(int uniqueSerialNumber, int uniqueSerialSize) {
|
||||||
|
this.uniqueSerialNumber = uniqueSerialNumber;
|
||||||
|
this.uniqueSerialSize = uniqueSerialSize;
|
||||||
|
flags = 256;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void initialize(HPacket packet) {
|
||||||
|
if ((flags & 256) > 0) {
|
||||||
|
this.uniqueSerialNumber = packet.readInteger();
|
||||||
|
this.uniqueSerialSize = packet.readInteger();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void appendToPacket(HPacket packet) {
|
||||||
|
if ((flags & 256) > 0) {
|
||||||
|
packet.appendInt(this.uniqueSerialNumber);
|
||||||
|
packet.appendInt(this.uniqueSerialSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getLegacyString() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setLegacyString(String legacyString) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final void setFlags(int flags) {
|
||||||
|
this.flags = flags;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final int getFlags() {
|
||||||
|
return this.flags;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final int getUniqueSerialNumber() {
|
||||||
|
return this.uniqueSerialNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final int getUniqueSerialSize() {
|
||||||
|
return this.uniqueSerialSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final void setUniqueSerialNumber(int uniqueSerialNumber) {
|
||||||
|
this.uniqueSerialNumber = uniqueSerialNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final void setUniqueSerialSize(int uniqueSerialSize) {
|
||||||
|
this.uniqueSerialSize = uniqueSerialSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRarityLevel() {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final int getState() {
|
||||||
|
try {
|
||||||
|
return Integer.parseInt(getLegacyString());
|
||||||
|
} catch (Exception e) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final void setState(int state) {
|
||||||
|
setLegacyString(String.valueOf(state));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final String getJSONValue(String key) {
|
||||||
|
try {
|
||||||
|
return new JSONObject(getLegacyString()).getString(key);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,58 @@
|
|||||||
|
package gearth.extensions.parsers.stuffdata;
|
||||||
|
|
||||||
|
import gearth.protocol.HPacket;
|
||||||
|
|
||||||
|
public class VoteResultStuffData extends StuffDataBase {
|
||||||
|
public static final int IDENTIFIER = 3;
|
||||||
|
|
||||||
|
private String legacyString = "";
|
||||||
|
private int result = 0;
|
||||||
|
|
||||||
|
protected VoteResultStuffData() {}
|
||||||
|
|
||||||
|
public VoteResultStuffData(String legacyString, int result) {
|
||||||
|
this.legacyString = legacyString == null ? "" : legacyString;
|
||||||
|
this.result = result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public VoteResultStuffData(int uniqueSerialNumber, int uniqueSerialSize, String legacyString, int result) {
|
||||||
|
super(uniqueSerialNumber, uniqueSerialSize);
|
||||||
|
this.legacyString = legacyString == null ? "" : legacyString;
|
||||||
|
this.result = result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initialize(HPacket packet) {
|
||||||
|
this.legacyString = packet.readString();
|
||||||
|
this.result = packet.readInteger();
|
||||||
|
super.initialize(packet);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void appendToPacket(HPacket packet) {
|
||||||
|
packet.appendInt(IDENTIFIER | this.getFlags());
|
||||||
|
packet.appendObjects(
|
||||||
|
this.legacyString,
|
||||||
|
this.result
|
||||||
|
);
|
||||||
|
super.appendToPacket(packet);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getLegacyString() {
|
||||||
|
return this.legacyString;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setLegacyString(String legacyString) {
|
||||||
|
this.legacyString = legacyString == null ? "" : legacyString;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getResult() {
|
||||||
|
return this.result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setResult(int result) {
|
||||||
|
this.result = result;
|
||||||
|
}
|
||||||
|
}
|
@ -134,6 +134,10 @@ public class MacOsHabboClient extends HabboClient {
|
|||||||
|
|
||||||
private static byte[] hexStringToByteArray(String s) {
|
private static byte[] hexStringToByteArray(String s) {
|
||||||
int len = s.length();
|
int len = s.length();
|
||||||
|
if (len % 2 == 1) {
|
||||||
|
s = "0" + s;
|
||||||
|
len += 1;
|
||||||
|
}
|
||||||
byte[] data = new byte[len / 2];
|
byte[] data = new byte[len / 2];
|
||||||
for (int i = 0; i < len; i += 2) {
|
for (int i = 0; i < len; i += 2) {
|
||||||
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
|
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
|
||||||
|
Loading…
Reference in New Issue
Block a user