A few things (#382)

- Added a distance check for item on object packet
- Added cook x functionality
- Removed a fair amount of dead code
- Did some renaming and fixed some typos
- Cleaned up a lot of the smithing code
- Added a new boundary system to reduce code clutter
- Fixed a firemaking bug
This commit is contained in:
Mr Extremez
2020-03-06 17:52:10 -06:00
committed by GitHub
parent 804ceae886
commit e5799200d7
88 changed files with 2575 additions and 3267 deletions
@@ -0,0 +1,293 @@
package com.rebotted.world;
import java.util.Arrays;
import java.util.Objects;
import java.util.Optional;
import com.rebotted.game.npcs.Npc;
import com.rebotted.game.players.Player;
import com.rebotted.game.players.PlayerHandler;
/**
* @author Andrew (Mr Extremez) - added all the boundaries
* @author Jason http://www.rune-server.org/members/jason - made the system
* @date Mar 2, 2014
*/
public class Boundary {
int minX, minY, highX, highY;
int height;
/**
*
* @param minX
* The south-west x coordinate
* @param minY
* The south-west y coordinate
* @param highX
* The north-east x coordinate
* @param highY
* The north-east y coordinate
*/
public Boundary(int minX, int highX, int minY, int highY) {
this.minX = minX;
this.minY = minY;
this.highX = highX;
this.highY = highY;
height = -1;
}
/**
*
* @param minX
* The south-west x coordinate
* @param minY
* The south-west y coordinate
* @param highX
* The north-east x coordinate
* @param highY
* The north-east y coordinate
* @param height
* The height of the boundary
*/
public Boundary(int minX, int highX, int minY, int highY, int height) {
this.minX = minX;
this.minY = minY;
this.highX = highX;
this.highY = highY;
this.height = height;
}
/**
*
* @param player
* The player object
* @param boundaries
* The array of Boundary objects
* @return
*/
public static boolean isIn(Player player, Boundary[] boundaries) {
for (Boundary b : boundaries) {
if (b.height >= 0) {
if (player.getH() != b.height) {
continue;
}
}
if (player.getX() >= b.minX && player.getX() <= b.highX && player.getY() >= b.minY && player.getY() <= b.highY) {
return true;
}
}
return false;
}
/**
*
* @param player
* The player object
* @param boundaries
* The boundary object
* @return
*/
public static boolean isIn(Player player, Boundary boundaries) {
if (boundaries.height >= 0) {
if (player.getH() != boundaries.height) {
return false;
}
}
return player.getX() >= boundaries.minX && player.getX() <= boundaries.highX && player.getY() >= boundaries.minY && player.getY() <= boundaries.highY;
}
/**
*
* @param npc
* The npc object
* @param boundaries
* The boundary object
* @return
*/
public static boolean isIn(Npc npc, Boundary boundaries) {
if (boundaries.height >= 0) {
if (npc.heightLevel != boundaries.height) {
return false;
}
}
return npc.getX() >= boundaries.minX && npc.getX() <= boundaries.highX && npc.getY() >= boundaries.minY && npc.getY() <= boundaries.highY;
}
public static boolean isIn(Npc npc, Boundary[] boundaries) {
for (Boundary boundary : boundaries) {
if (boundary.height >= 0) {
if (npc.heightLevel != boundary.height) {
return false;
}
}
if (npc.getX() >= boundary.minX && npc.getX() <= boundary.highX && npc.getY() >= boundary.minY && npc.getY() <= boundary.highY) {
return true;
}
}
return false;
}
public static boolean isInSameBoundary(Player player1, Player player2, Boundary[] boundaries) {
Optional<Boundary> boundary1 = Arrays.asList(boundaries).stream().filter(b -> isIn(player1, b)).findFirst();
Optional<Boundary> boundary2 = Arrays.asList(boundaries).stream().filter(b -> isIn(player2, b)).findFirst();
if (!boundary1.isPresent() || !boundary2.isPresent()) {
return false;
}
return Objects.equals(boundary1.get(), boundary2.get());
}
public static int entitiesInArea(Boundary boundary) {
int i = 0;
for (Player player : PlayerHandler.players)
if (player != null)
if (isIn(player, boundary))
i++;
return i;
}
/**
* Returns the centre point of a boundary as a {@link Coordinate}
*
* @param boundary The boundary of which we want the centre.
* @return The centre point of the boundary, represented as a {@link Coordinate}.
*/
public static Coordinate centre(Boundary boundary) {
int x = (boundary.minX + boundary.highX) / 2;
int y = (boundary.minY + boundary.highY) / 2;
if (boundary.height >= 0) {
return new Coordinate(x, y, boundary.height);
} else {
return new Coordinate(x, y, 0);
}
}
//low x, high x, low y, high y
public static final Boundary F2P = new Boundary(2944, 3328, 3097, 3515);
public static final Boundary TUTORIAL = new Boundary(3055, 3150, 3054, 3128);
public static final Boundary CRANDOR = new Boundary(2813, 2867, 3226, 3307);
public static final Boundary[] IN_F2P = {F2P, TUTORIAL, CRANDOR };
public static final Boundary LUMBRIDGE = new Boundary(3134, 3266, 3131, 3317);
public static final Boundary WIZARDS_TOWER = new Boundary(3094, 3124, 3141, 3172);
public static final Boundary FALADOR = new Boundary(2945, 3066, 3303, 3390);
public static final Boundary VARROCK = new Boundary(3172, 3289, 3368, 3504);
public static final Boundary DRAYNOR = new Boundary(3079, 3149, 3226, 3382);
public static final Boundary BARB = new Boundary(3072, 3098, 3399, 3445);
public static final Boundary GOBLIN_VILLAGE = new Boundary(2945, 2970, 3475, 3515);
public static final Boundary EDGEVILLE = new Boundary(3072, 3126, 3459, 3517);
public static final Boundary PORT_SARIM = new Boundary(3327, 3423, 3131, 3324);
public static final Boundary RIMMINGTON = new Boundary(3327, 3423, 3131, 3324);
public static final Boundary AL_KHARID = new Boundary(3327, 3423, 3131, 3324);
public static final Boundary[] BANK_AREA = new Boundary[] {
new Boundary(3205, 3226, 3211, 3214, 2), //Lumbridge
new Boundary(3162, 3271, 3266, 3272),//Al Kharid
new Boundary(2436, 2453, 5174, 5186),//TzHaar
new Boundary(2842, 2860, 2950, 2957),//Shilo
new Boundary(3456, 3492, 3200, 3215),//Burgh d rott
new Boundary(3377, 3386, 3266, 3275),//Duel
new Boundary(3087, 3098, 3239, 3248),//Draynor
new Boundary(3248, 3260, 3414, 3423),//Varrock East
new Boundary(3183, 3193, 3432, 3446),//Varrock West
new Boundary(3088, 3100, 3486, 3501),//Edge
new Boundary(3009, 3020, 3352, 3358),//Fally East
new Boundary(2942, 2950, 3365, 3374),//Fally West
new Boundary(2804, 2815, 3438, 3447),//Catherby
new Boundary(2718, 2733, 3485, 3500),//Seers
new Boundary(2610, 2622, 3326, 3338),//North ardougne
new Boundary(2645, 2660, 3281, 3288),//South ardougne
new Boundary(2607, 2618, 3087, 3098),//Yanille
new Boundary(2442, 2444, 3081, 3084),//Castle Wars
new Boundary(2348, 2358, 3159, 3168),//Lleyta
new Boundary(2324, 2334, 3685, 3694),//Piscatoris
new Boundary(2442, 2448, 3420, 3430),//Tree Gnome Stronghold
new Boundary(2440, 2453, 3478, 3491, 1),//Grand Tree Area
new Boundary(3113, 3131, 3118, 3131),//Tut
new Boundary(2885, 2895, 3422, 3433),//Nardah
new Boundary(3685, 3694, 3461, 3473),//Phasmatys
new Boundary(2530, 2550, 4705, 4725),//Mage Bank
new Boundary(2834, 2841, 10204, 10215),//Keldagrim
new Boundary(2379, 2386, 4453, 4462),//Zanaris
new Boundary(2582, 2591, 3417, 3423),//Fishing Guild
new Boundary(3509, 3516, 3417, 3423),//Canifis
new Boundary(3297, 3311, 3115, 3133),//Shantay Pass
new Boundary(3035, 3049, 4967, 4977, 1),//Rogues Den
};
public static final Boundary ZAMMY_WAIT = new Boundary(2409, 2431, 9511, 9535);
public static final Boundary SARA_WAIT = new Boundary(2368, 2392, 9479, 9498);
public static final Boundary[] MULTI = new Boundary[] {
new Boundary(3136, 3327, 3519, 3607), new Boundary(2360, 2445, 5045, 5125), new Boundary(2256, 2287, 4680, 4711),
new Boundary(3190, 3327, 3648, 3839), new Boundary(3200, 3390, 3840, 3967), new Boundary(2992, 3007, 3912, 3967),
new Boundary(2946, 2959, 3816, 3831), new Boundary(3008, 3199, 3856, 3903), new Boundary(3008, 3071, 3600, 3711),
new Boundary(3072, 3327, 3608, 3647), new Boundary(2624, 2690, 2550, 2619), new Boundary(2667, 2685, 3712, 3730),
new Boundary(2371, 2422, 5062, 5117), new Boundary(2896, 2927, 3595, 3630), new Boundary(2892, 2932, 4435, 4464),
new Boundary(3279, 3307, 3156, 3179)
};
//jungle
public static final Boundary[] KARAMAJA = new Boundary[] {
new Boundary(2745, 3007, 2876, 3095), new Boundary(2747, 2944, 3096, 3131)
};
//jungle
public static final Boundary[] MUSA_POINT = new Boundary[] {
new Boundary(2817, 2917, 3192, 3204), new Boundary(2817, 2961, 3131, 3191)
};
//jungle
public static final Boundary BRIMHAVEN = new Boundary(2688, 2815, 3131, 3258);
//desert
public static final Boundary DESERT = new Boundary(3137, 3517, 2747, 3130, 0);
//desert - no heat
public static final Boundary NARDAH = new Boundary(3392, 3455, 2876, 2940);
public static final Boundary BANDIT_CAMP = new Boundary(3151, 3192, 2963, 2986);
public static final Boundary MINING_CAMP = new Boundary(3267, 3311, 3000, 3043);
public static final Boundary BEDABIN = new Boundary(3160, 3187, 3015, 3046);
public static final Boundary UZER = new Boundary(3462, 3503, 3068, 3109);
public static final Boundary AGILITY_PYRAMID = new Boundary(3329, 3391, 2812, 2855);
public static final Boundary PYRAMID = new Boundary(3217, 3250, 2881, 2908);
public static final Boundary SOPHANEM = new Boundary(3273, 3323, 2749, 2806);
public static final Boundary MENAPHOS = new Boundary(3200, 3266, 2749, 2806);
public static final Boundary POLLIVNEACH = new Boundary(3329, 3377, 2936, 3002);
public static final Boundary SHANTAY_PASS = new Boundary(3298, 3312, 3304, 3303);
public static final Boundary[] NO_HEAT = {NARDAH, BANDIT_CAMP, MINING_CAMP, BEDABIN, UZER, AGILITY_PYRAMID, PYRAMID, SOPHANEM, MENAPHOS, POLLIVNEACH, SHANTAY_PASS};
//mortyania
public static final Boundary MORTYANIA = new Boundary(3401, 3773, 3157, 3577);
//wild
public static final Boundary[] WILDERNESS = new Boundary[] { new Boundary(2941, 3392, 3518, 3966), new Boundary(2941, 3392, 9922, 10366) };
public static final Boundary IN_LESSER = new Boundary(3108, 3112, 3156, 3158, 2);
public static final Boundary IN_DUEL = new Boundary(3331, 3391, 3242, 3260);
public static final Boundary[] IN_DUEL_AREA = new Boundary[] { new Boundary(3322, 3394, 3195, 3291), new Boundary(3311, 3323, 3223, 3248) };
public static final Boundary TRAWLER_GAME = new Boundary (2808, 2811, 3415, 3425);
public static final Boundary PITS_WAIT = new Boundary (2394, 2404, 5169, 5175);
public static final Boundary[] LUMB_BUILDING = new Boundary[] { new Boundary(3205, 3216, 3209, 3228), new Boundary(3229, 3233, 3206, 3208), new Boundary(3228, 3233, 3201, 3205), new Boundary(3230, 3237, 3195, 3198), new Boundary(3238, 3229, 3209, 3211),
new Boundary(3240, 3247, 3204, 3215), new Boundary(3247, 3252, 3190, 3195), new Boundary(3227, 3230, 3212, 3216), new Boundary(3227, 3230, 3221, 3225), new Boundary(3229, 3232, 3236, 3241),
new Boundary(3209, 3213, 3243, 3250), new Boundary(3222, 3229, 3252, 3257), new Boundary(3184, 3192, 3270, 3275), new Boundary(3222, 3224, 3292, 3294), new Boundary(3225, 3230, 3287, 3228),
new Boundary(3243, 3248, 3244, 3248), new Boundary(3202, 3205, 3167, 3170), new Boundary(3231, 3238, 3151, 3155), new Boundary(3233, 3234, 3156, 3156), new Boundary(3163, 3170, 3305, 3308),
new Boundary(3165, 3168, 3303, 3310) };
public static final Boundary[] DRAYNOR_BUILDING = new Boundary[] { new Boundary(3097, 3102, 3277, 3281), new Boundary(3088, 3092, 3273, 3276), new Boundary(3096, 3102, 3266, 3270), new Boundary(3089, 3095, 3265, 3268), new Boundary(3083, 3088, 3256, 3261),
new Boundary(3087, 3094, 3251, 3255), new Boundary(3121, 3130, 3240, 3246), new Boundary(3102, 3112, 3162, 3165), new Boundary(3107, 3111, 3166, 3166), new Boundary(3103, 3115, 3157, 3161),
new Boundary(3105, 3114, 3156, 3156), new Boundary(3105, 3113, 3155, 3155), new Boundary(3106, 3112, 3154, 3154), new Boundary(3092, 3097, 3240, 3246) };
public static final Boundary ARDOUGNE_ZOO = new Boundary(2593, 2639, 3265, 3288);
public static final Boundary APE_ATOLL = new Boundary(2694, 2811, 2691, 2805);
public static final Boundary TUTORIAL_ISLAND = new Boundary(2625, 2687, 4670, 4735);
public static final Boundary BARROWS = new Boundary(3543, 3584, 3265, 3311);
public static final Boundary BARROWS_UNDERGROUND = new Boundary(3529, 3581, 9673, 9722);
public static final Boundary PC_BOAT = new Boundary(2660, 2663, 2638, 2643);
public static final Boundary PC_GAME = new Boundary(2624, 2690, 2550, 2619);
public static final Boundary FIGHT_CAVES = new Boundary(2360, 2445, 5045, 5125);
public static final Boundary PIRATE_HOUSE = new Boundary(3038, 3044, 3949, 3959);
public static final Boundary[] FIGHT_PITS = new Boundary[] { new Boundary(2378, 3415, 5133, 5167), new Boundary(2394, 2404, 5169, 5174) };
}