updated getStackHeight so it's the same as the devbuild

This commit is contained in:
ArpyAge 2020-09-03 22:07:45 +02:00
parent 47865f0ec5
commit 3600a8f53c
2 changed files with 35 additions and 28 deletions

View File

@ -3542,43 +3542,40 @@ public class Room implements Comparable<Room>, ISerialize, Runnable {
}
public double getStackHeight(short x, short y, boolean calculateHeightmap, HabboItem exclude) {
if (x < 0 || y < 0 || this.layout == null)
return calculateHeightmap ? Short.MAX_VALUE : 0.0;
boolean pluginHelper = false;
if (Emulator.getPluginManager().isRegistered(FurnitureStackHeightEvent.class, true)) {
FurnitureStackHeightEvent event = Emulator.getPluginManager().fireEvent(new FurnitureStackHeightEvent(x, y, this));
if(event.hasPluginHelper()) {
return calculateHeightmap ? event.getHeight() * 256.0D : event.getHeight();
}
}
double height = this.layout.getHeightAtSquare(x, y);
boolean canStack = true;
boolean stackHelper = false;
THashSet<HabboItem> items = this.getItemsAt(x, y);
if (items != null) {
for (HabboItem item : items) {
THashSet<HabboItem> stackHelpers = this.getItemsAt(InteractionStackHelper.class, x, y);
if(stackHelpers.size() > 0) {
for(HabboItem item : stackHelpers) {
if (item == exclude) continue;
if (item instanceof InteractionStackHelper) {
stackHelper = true;
height = item.getExtradata().isEmpty() ? Double.valueOf("0.0") : (Double.valueOf(item.getExtradata()) / 100);
canStack = true;
}
return calculateHeightmap ? item.getZ() * 256.0D : item.getZ();
}
}
boolean pluginHelper = false;
if (Emulator.getPluginManager().isRegistered(FurnitureStackHeightEvent.class, true)) {
FurnitureStackHeightEvent event = Emulator.getPluginManager().fireEvent(new FurnitureStackHeightEvent(x, y, this));
stackHelper = event.hasPluginHelper();
}
HabboItem item = this.getTopItemAt(x, y, exclude);
if (item != null) {
canStack = item.getBaseItem().allowStack();
height = item.getZ() + Item.getCurrentHeight(item);
}
if (!stackHelper && !pluginHelper) {
HabboItem item = this.getTopItemAt(x, y, exclude);
if (item != null) {
canStack = item.getBaseItem().allowStack();
height = item.getZ() + Item.getCurrentHeight(item);
}
HabboItem lowestChair = this.getLowestChair(x, y);
if (lowestChair != null && lowestChair != exclude) {
canStack = true;
height = lowestChair.getZ() + Item.getCurrentHeight(lowestChair);
}
}
HabboItem lowestChair = this.getLowestChair(x, y);
if (lowestChair != null && lowestChair != exclude) {
canStack = true;
height = lowestChair.getZ();
}
if (calculateHeightmap) {

View File

@ -9,12 +9,14 @@ public class FurnitureStackHeightEvent extends Event {
public final short y;
public final Room room;
private boolean pluginHelper;
private Double height;
public FurnitureStackHeightEvent(short x, short y, Room room) {
this.x = x;
this.y = y;
this.room = room;
this.pluginHelper = false;
this.height = 0.0D;
}
public void setPluginHelper(boolean helper) {
@ -24,4 +26,12 @@ public class FurnitureStackHeightEvent extends Event {
public boolean hasPluginHelper() {
return this.pluginHelper;
}
public void setHeight(Double height) {
this.height = height;
}
public Double getHeight() {
return this.height;
}
}