Repository reorganisation

Unified kotlin and java into just src/main
Unified the rs09 and core packages
Took all content out of the core package, and placed it into the new content package
Reorganised all source code relating to content to be easier to find and explore
This commit is contained in:
Ceikry
2023-01-26 13:59:28 +00:00
committed by Ryan
parent e4b799c44a
commit a100affda2
3156 changed files with 24205 additions and 30585 deletions
@@ -0,0 +1,163 @@
package content.global.skill.smithing;
import content.global.skill.smithing.smelting.Bar;
import core.cache.def.impl.SceneryDefinition;
import core.game.node.entity.skill.Skills;
import core.game.interaction.NodeUsageEvent;
import core.game.interaction.OptionHandler;
import core.game.interaction.UseWithHandler;
import core.game.node.Node;
import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.diary.DiaryType;
import core.game.node.item.Item;
import core.game.system.task.Pulse;
import core.game.world.GameWorld;
import core.game.world.map.Location;
import core.game.world.update.flag.context.Animation;
import core.plugin.Initializable;
import core.plugin.Plugin;
import java.util.ArrayList;
import java.util.List;
/**
* Represents the plugin used for the furnace.
* @author Vexia
*/
@Initializable
public final class FurnaceOptionPlugin extends OptionHandler {
/**
* Represents the animation to use.
*/
private static final Animation ANIMATION = new Animation(833);
/**
* Represents the items used for the tutorial island (ores).
*/
private static final Item[] ITEMS = new Item[] { new Item(438, 1), new Item(436, 1) };
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
SceneryDefinition.setOptionHandler("smelt", this);
SceneryDefinition.setOptionHandler("smelt-ore", this);
SceneryDefinition.forId(3044).getHandlers().put("option:use", this);
SceneryDefinition.forId(21303).getHandlers().put("option:use", this);
new SmeltUseWithHandler().newInstance(arg);
return this;
}
@Override
public boolean handle(final Player player, Node node, String option) {
if (node.getId() == 26814 && !player.getAchievementDiaryManager().getDiary(DiaryType.VARROCK).isComplete(0)) {
player.sendMessage("You need to have completed the easy tasks in the Varrock Diary in order to use this.");
return true;
}
show(player);
return true;
}
/**
* Shows the items.
* @param player the player.
*/
private static void show(final Player player) {
player.getInterfaceManager().openChatbox(311);
player.getPacketDispatch().sendItemZoomOnInterface(2349, 150, 311, 4);
if (player.getQuestRepository().isComplete("The Knight's Sword")) {
player.getPacketDispatch().sendString("<br><br><br><br><col=000000>Blurite", 311, 20);
}
player.getPacketDispatch().sendItemZoomOnInterface(Bar.BLURITE.getProduct().getId(), 150, 311, 5);
player.getPacketDispatch().sendItemZoomOnInterface(Bar.IRON.getProduct().getId(), 150, 311, 6);
player.getPacketDispatch().sendItemZoomOnInterface(2355, 150, 311, 7);
player.getPacketDispatch().sendItemZoomOnInterface(2353, 150, 311, 8);
player.getPacketDispatch().sendItemZoomOnInterface(2357, 150, 311, 9);
player.getPacketDispatch().sendItemZoomOnInterface(2359, 150, 311, 10);
player.getPacketDispatch().sendItemZoomOnInterface(2361, 150, 311, 11);
player.getPacketDispatch().sendItemZoomOnInterface(2363, 150, 311, 12);
}
/**
* Method used to handle the tutorial island interaction.
* @param player the player.
*/
private final void handleTutorialIsland(final Player player) {
if (player.getInventory().containItems(438, 436)) {
player.animate(ANIMATION);
GameWorld.getPulser().submit(new Pulse(2, player) {
@Override
public boolean pulse() {
player.getInventory().remove(ITEMS);
player.getInventory().add(Bar.BRONZE.getProduct());
player.getSkills().addExperience(Skills.SMITHING, Bar.BRONZE.getExperience());
return true;
}
});
}
}
/**
* Represents the plugin used to handle the ore on the furance.
* @author 'Vexia
* @version 1.0
*/
public final static class SmeltUseWithHandler extends UseWithHandler {
/**
* Represents the ids.
*/
public static final int[] furnaceIDS = new int[] { 4304, 6189, 11010, 11666, 12100, 12809, 14921, 18497, 26814, 30021, 30510, 36956, 37651 };
/**
* Constructs a new {@code SmeltUseWithHandler} {@code Object}.
*/
public SmeltUseWithHandler() {
super(getIds());
}
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
for (int i : furnaceIDS) {
addHandler(i, OBJECT_TYPE, this);
}
return this;
}
@Override
public boolean handle(NodeUsageEvent event) {
if (event.getUsedWith().getId() == 26814 && !event.getPlayer().getAchievementDiaryManager().getDiary(DiaryType.VARROCK).isComplete(0)) {
event.getPlayer().sendMessage("You need to have completed the easy tasks in the Varrock Diary in order to use this.");
return true;
}
show(event.getPlayer());
return true;
}
/**
* Gets the ore ids.
* @return the ids.
*/
public static final int[] getIds() {
List<Integer> ids = new ArrayList<>(10);
for (Bar bar : Bar.values()) {
for (Item i : bar.getOres()) {
ids.add(i.getId());
}
}
int[] array = new int[ids.size()];
for (int i = 0; i < ids.size(); i++) {
array[i] = ids.get(i);
}
return array;
}
}
@Override
public Location getDestination(Node node, Node n) {
if (node instanceof Player && ((Player) node).getZoneMonitor().isInZone("Donator Zone")) {
return n.getLocation().transform(1, 2, 0);
}
return null;
}
}