1package com.osroyale.content.skill.impl.hunter.birdhouse.action;
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;
15public class FillBirdhouse
extends Action<Player> {
17 private PlayerBirdHouseData playerBirdHouseData;
18 private Item itemUsed;
19 private int itemAmount;
20 public FillBirdhouse(Player player, PlayerBirdHouseData playerBirdHouseData, Item itemUsed,
int itemAmount) {
22 this.playerBirdHouseData = playerBirdHouseData;
23 this.itemUsed = itemUsed;
24 this.itemAmount = itemAmount;
34 return "Fill birdhouse";
39 getMob().inventory.remove(
new Item(itemUsed.getId(), itemAmount));
40 getMob().inventory.refresh();
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");
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())));
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.");
53 playerBirdHouseData.seedAmount += itemAmount;
56 PlayerSerializer.save(
getMob());
57 getMob().action.getCurrentAction().cancel();
abstract String getName()
abstract WalkablePolicy getWalkablePolicy()