@nxg-org/mineflayer-physics-util
Version:
Provides functionality for more accurate entity and projectile tracking.
64 lines (63 loc) • 2.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PhysicsUtilWrapper = exports.SimulationTypes = void 0;
const engines_1 = require("./physics/engines");
const settings_1 = require("./physics/settings");
const simulators_1 = require("./simulators");
/**
* Just a convenience thing.
*/
var SimulationTypes;
(function (SimulationTypes) {
SimulationTypes[SimulationTypes["UNTIL_GROUND"] = 0] = "UNTIL_GROUND";
SimulationTypes[SimulationTypes["FOR_X_TICKS"] = 1] = "FOR_X_TICKS";
SimulationTypes[SimulationTypes["TO_DESTINATION"] = 2] = "TO_DESTINATION";
})(SimulationTypes || (exports.SimulationTypes = SimulationTypes = {}));
class PhysicsUtilWrapper {
constructor(bot) {
this.bot = bot;
this.ePhysicsCtx = settings_1.EPhysicsCtx;
this.data = bot.registry;
settings_1.EPhysicsCtx.loadData(this.data);
this.engine = new engines_1.EntityPhysics(this.data);
}
getPhysicsSim() {
return new engines_1.EntityPhysics(this.data);
}
getPhysicsCtx(ctx, entity) {
return settings_1.EPhysicsCtx.FROM_ENTITY(ctx, entity);
}
getPhysicsCtxRaw(ctx, entity, options = {}) {
return settings_1.EPhysicsCtx.FROM_ENTITY_TYPE(ctx, entity, options);
}
simulate(simulator, simCtx, world) {
return simulator.simulate(simCtx, world);
}
exampleSim(entity, type, ticks = 10, destination) {
const simulator = new simulators_1.BasicSim(new engines_1.EntityPhysics(this.data));
switch (type) {
case SimulationTypes.FOR_X_TICKS:
return simulator.simXTicks(entity, this.bot.world, ticks);
case SimulationTypes.UNTIL_GROUND:
return simulator.simUntilOnGround(entity, this.bot.world, ticks);
case SimulationTypes.TO_DESTINATION:
if (!destination)
throw "Invalid destination for example sim.";
return simulator.simUntilDestination(entity, destination, this.bot.world, ticks);
}
}
advancedExample(simCtx, type, ticks = 10, destination) {
const simulator = new simulators_1.BasicSim(new engines_1.EntityPhysics(this.data));
switch (type) {
case SimulationTypes.FOR_X_TICKS:
return simulator.simXTicksPrebuilt(simCtx, this.bot.world, ticks);
case SimulationTypes.UNTIL_GROUND:
return simulator.simUntilOnGroundPrebuilt(simCtx, this.bot.world, ticks);
case SimulationTypes.TO_DESTINATION:
if (!destination)
throw "Invalid destination for example sim.";
return simulator.simUntilDestinationPrebuilt(simCtx, destination, this.bot.world, ticks);
}
}
}
exports.PhysicsUtilWrapper = PhysicsUtilWrapper;