Telekinetic grab and stuff (#508)

* tidy up

* Tidy up check for space

* Telekinetic base

* Don't allow player to pickup statue

* Tidy up item pickup

* fixup, statue spawn

* Update telekinetic grab

* 2nd option for guardian statue

* handle telegrab on statue

* Allow picking up global drops with telekinetic grab

* Check if player can see/reach item

* Update PickupItem.java

* Allow pasting into chatbox

* camera stuff

* fixup clipboard stuff

* Update PlayerAssistant.java

* Update Commands.java

* Add mazes initial

* Tidy up the clipboard pasting

* Update mazes

* Calculate new position of statue

* fixup telegrab

* More tidy up, remove constant running of container

* more tidy up..

* Handle moving statues

* remove the statue from global drops

* Update MagicOnFloorItems.java

* Show telekinetic interface

* Make public accessable

* Only show items to player that are on the same height level

* Moving statues around, Spawning

* Reward exp, points, law runes

* Show points, mazes completed

* Add comment

* Add observable statue (still needs work)

* Fixup where camera focuses

* Load items when player changes level

* Graveyard base

* Add a couple more checks

* Update Player.java

* Update Commands.java

* Make sure statue is visible when player appears at maze

* [Mage training arena] Graveyard

* Update MageTrainingArena.java

* Update MageTrainingArena.java

* Update ItemHandler.java
This commit is contained in:
Danial
2021-10-05 16:01:16 +13:00
committed by GitHub
parent c526aa5f4d
commit 2d8ae82086
22 changed files with 719 additions and 193 deletions
@@ -58,11 +58,7 @@ public class ItemHandler {
public int itemAmount(String name, int itemId, int itemX, int itemY) {
for (GroundItem i : items) {
if (i.hideTicks >= 1 && i.getName().equalsIgnoreCase(name)) {
if (i.getItemId() == itemId && i.getItemX() == itemX && i.getItemY() == itemY) {
return i.getItemAmount();
}
} else if (i.hideTicks < 1) {
if (i.getName().equalsIgnoreCase(name)) {
if (i.getItemId() == itemId && i.getItemX() == itemX && i.getItemY() == itemY) {
return i.getItemAmount();
}
@@ -76,25 +72,42 @@ public class ItemHandler {
**/
public boolean itemExists(int itemId, int itemX, int itemY) {
for (GroundItem i : items) {
if (i.getItemId() == itemId && i.getItemX() == itemX
&& i.getItemY() == itemY) {
if (i.getItemId() == itemId && i.getItemX() == itemX && i.getItemY() == itemY) {
return true;
}
}
if (GlobalDropsHandler.itemExists(itemId, itemX, itemY, true)) {
return true;
}
return false;
}
public void moveItem(GroundItem item, int itemX, int itemY) {
if (items.remove(item)) {
int oldX = item.itemX;
int oldY = item.itemY;
item.itemX = itemX;
item.itemY = itemY;
items.add(item);
for (Player p: PlayerHandler.players) {
if (p == null) continue;
p.getPacketSender().removeGroundItem(item.itemId, oldX, oldY, item.itemAmount);
reloadItems(p);
}
}
}
/**
* Reloads any items if you enter a new region
**/
public void reloadItems(Player c) {
for (GroundItem i : items) {
if (c != null) {
if (c.getItemAssistant().tradeable(i.getItemId())
|| i.getName().equalsIgnoreCase(c.playerName)) {
if (c.distanceToPoint(i.getItemX(), i.getItemY()) <= 60) {
if (i.hideTicks > 0
&& i.getName().equalsIgnoreCase(c.playerName)) {
// If it's a players item or tradeable
if (c.getItemAssistant().tradeable(i.getItemId()) || i.getName().equalsIgnoreCase(c.playerName)) {
// Make sure item on the same height and within 60 blocks
if (c.getH() == i.getItemH() && c.distanceToPoint(i.getItemX(), i.getItemY()) <= 60) {
if (i.hideTicks > 0 && i.getName().equalsIgnoreCase(c.playerName)) {
c.getPacketSender().removeGroundItem(
i.getItemId(), i.getItemX(), i.getItemY(),
i.getItemAmount());
@@ -175,7 +188,6 @@ public class ItemHandler {
}
if (!com.rs2.game.items.ItemData.itemStackable[itemId] && itemAmount > 0) {
for (int j = 0; j < itemAmount; j++) {
c.getPacketSender().createGroundItem(itemId, itemX, itemY, 1);
GroundItem item = new GroundItem(itemId, itemX, itemY, c.getH(), 1, c.playerId, HIDE_TICKS, PlayerHandler.players[playerId].playerName);
addItem(item);
String itemName = ItemAssistant.getItemName(itemId).toLowerCase();
@@ -186,7 +198,6 @@ public class ItemHandler {
}
}
} else {
c.getPacketSender().createGroundItem(itemId, itemX, itemY, itemAmount);
GroundItem item = new GroundItem(itemId, itemX, itemY, c.getH(), itemAmount, c.playerId, HIDE_TICKS, PlayerHandler.players[playerId].playerName);
addItem(item);
String itemName = ItemAssistant.getItemName(itemId).toLowerCase();
@@ -196,6 +207,7 @@ public class ItemHandler {
}
}
}
reloadItems(c);
}
}
@@ -203,6 +215,9 @@ public class ItemHandler {
* Shows items for everyone who is within 60 squares
**/
public void createGlobalItem(GroundItem i) {
if (!itemExists(i.getItemId(), i.getItemX(), i.getItemY())) {
addItem(i);
}
for (Player p : PlayerHandler.players) {
if (p != null) {
Client person = (Client) p;
@@ -212,7 +227,7 @@ public class ItemHandler {
&& person.playerId != i.getItemController()) {
continue;
}
if (person.distanceToPoint(i.getItemX(), i.getItemY()) <= 60) {
if (person.getH() == i.getItemH() && person.distanceToPoint(i.getItemX(), i.getItemY()) <= 60) {
person.getPacketSender().createGroundItem(
i.getItemId(), i.getItemX(), i.getItemY(),
i.getItemAmount());
@@ -293,8 +308,7 @@ public class ItemHandler {
Client person = (Client) p;
if (person != null) {
if (person.distanceToPoint(itemX, itemY) <= 60) {
person.getPacketSender().removeGroundItem(itemId,
itemX, itemY, itemAmount);
person.getPacketSender().removeGroundItem(itemId, itemX, itemY, itemAmount);
}
}
}
@@ -460,6 +474,7 @@ public class ItemHandler {
try {
FileWriter fileWriter = new FileWriter("item-dump.json");
fileWriter.write(array.toString());
fileWriter.close();
characterfile.close();
} catch (IOException e) {
}