RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
FillBirdhouse.java
1package com.osroyale.content.skill.impl.hunter.birdhouse.action;
2
3import com.osroyale.content.skill.impl.hunter.birdhouse.PlayerBirdHouseData;
4import com.osroyale.game.action.Action;
5import com.osroyale.game.action.policy.WalkablePolicy;
6import com.osroyale.game.task.impl.PlayerSaveEvent;
7import com.osroyale.game.world.entity.mob.player.Player;
8import com.osroyale.game.world.entity.mob.player.persist.PlayerSerializer;
9import com.osroyale.game.world.items.Item;
10import com.osroyale.game.world.object.CustomGameObject;
11import com.osroyale.game.world.object.ObjectDirection;
12import com.osroyale.game.world.object.ObjectType;
13import com.osroyale.net.packet.out.SendAddObject;
14
15public class FillBirdhouse extends Action<Player> {
16
17 private PlayerBirdHouseData playerBirdHouseData;
18 private Item itemUsed;
19 private int itemAmount;
20 public FillBirdhouse(Player player, PlayerBirdHouseData playerBirdHouseData, Item itemUsed, int itemAmount) {
21 super(player, 1);
22 this.playerBirdHouseData = playerBirdHouseData;
23 this.itemUsed = itemUsed;
24 this.itemAmount = itemAmount;
25 }
26
27 @Override
28 public WalkablePolicy getWalkablePolicy() {
29 return WalkablePolicy.WALKABLE;
30 }
31
32 @Override
33 public String getName() {
34 return "Fill birdhouse";
35 }
36
37 @Override
38 protected void execute() {
39 getMob().inventory.remove(new Item(itemUsed.getId(), itemAmount));
40 getMob().inventory.refresh();
41
42 if(itemAmount >= 10 || playerBirdHouseData.seedAmount + itemAmount >= 10) {
43 getMob().dialogueFactory.sendStatement("Your birdhouse trap is now full of seed and will start to catch birds").execute();
44 getMob().message("Your birdhouse trap is now full of seed and will start to catch birds");
45
46 playerBirdHouseData.seedAmount += itemAmount;
47 playerBirdHouseData.birdhouseTimer = System.currentTimeMillis() + 3_300_000;
48 getMob().send(new SendAddObject(new CustomGameObject(playerBirdHouseData.birdhouseData.objectData[playerBirdHouseData.seedAmount >= 10 ? 1 : 0], playerBirdHouseData.birdhousePosition, ObjectDirection.valueOf(playerBirdHouseData.rotation).get(), ObjectType.valueOf(playerBirdHouseData.type).get())));
49 } else {
50 getMob().dialogueFactory.sendStatement("You add " + itemAmount + " x " + itemUsed.getDefinition().getName().toLowerCase() + " to the birdhouse.").execute();
51 getMob().message("You add " + itemAmount + " x " + itemUsed.getDefinition().getName().toLowerCase() + " to the birdhouse.");
52
53 playerBirdHouseData.seedAmount += itemAmount;
54 }
55
56 PlayerSerializer.save(getMob());
57 getMob().action.getCurrentAction().cancel();
58 }
59
60}
abstract WalkablePolicy getWalkablePolicy()