RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
GroundItemEvent.java
1package com.osroyale.game.world.items.ground;
2
3import com.osroyale.game.task.Task;
4import com.osroyale.game.world.World;
5import com.osroyale.game.world.entity.mob.player.Player;
6import com.osroyale.game.world.region.Region;
7import com.osroyale.net.packet.out.SendGroundItem;
8
40
41public final class GroundItemEvent extends Task {
42
44 private static final int MINUTE = 100;
45
47 private final GroundItem groundItem;
48
50 private int minutes;
51
53 GroundItemEvent(GroundItem groundItem) {
54 super(MINUTE);
55 this.groundItem = groundItem;
56 }
57
58 @Override
59 public void execute() {
60 switch (groundItem.policy) {
61 case GLOBAL:
62 if (++minutes < 5) {
63 return;
64 }
65
66 if (groundItem.item.getId() == 12791) {
67 groundItem.player.runePouch.runes.clear();
68 }
69
70 cancel();
71 break;
72 case ONLY_OWNER:
73 if (++minutes < 2) {
74 return;
75 }
76
77 groundItem.policy = GroundItemPolicy.GLOBAL;
78 if (!groundItem.item.isTradeable()) {
79 return;
80 }
81 //If a player drops an item, only they will be able to view it
82 if(groundItem.player.playTime < 6000) {
83 return;
84 }
85
86 Region[] regions = World.getRegions().getSurroundingRegions(groundItem.getPosition());
87 for (Region region : regions) {
88 for (Player player : region.getPlayers(groundItem.getHeight())) {
89 if (!groundItem.isRegistered())
90 continue;
91
92 if (!groundItem.canSee(player))
93 continue;
94
95 if (groundItem.player.usernameLong != player.usernameLong)
96 player.send(new SendGroundItem(groundItem));
97 }
98 }
99 break;
100 }
101 }
102
103 @Override
104 protected void onCancel(boolean logout) {
105 groundItem.unregister();
106 }
107
108}
synchronized final void cancel()
Definition Task.java:147
Task(boolean instant, int delay)
Definition Task.java:75
Region[] getSurroundingRegions(Position position)