feat: add playerWillDestroy,attack,pullInEntity

feat: add playerWillDestroy,attack,pullInEntity
This commit is contained in:
Kobe Bryant
2024-06-04 14:24:30 +08:00
committed by GitHub
Unverified
2 changed files with 40 additions and 1 deletions
+21 -1
View File
@@ -123,7 +123,11 @@ const GMLIB_API = {
itemCanDestroyInCreative: ll.import("GMLIB_API", "itemCanDestroyInCreative"), itemCanDestroyInCreative: ll.import("GMLIB_API", "itemCanDestroyInCreative"),
itemCanDestroySpecial: ll.import("GMLIB_API", "itemCanDestroySpecial"), itemCanDestroySpecial: ll.import("GMLIB_API", "itemCanDestroySpecial"),
blockCanDropWithAnyTool: ll.import("GMLIB_API", "blockCanDropWithAnyTool"), blockCanDropWithAnyTool: ll.import("GMLIB_API", "blockCanDropWithAnyTool"),
blockIsAlwaysDestroyable: ll.import("GMLIB_API", "blockIsAlwaysDestroyable") blockIsAlwaysDestroyable: ll.import("GMLIB_API", "blockIsAlwaysDestroyable"),
blockPlayerWillDestroy: ll.import("GMLIB_API", "blockPlayerWillDestroy"),
playerAttack: ll.import("GMLIB_API", "playerAttack"),
playerPullInEntity: ll.import("GMLIB_API", "playerPullInEntity"),
getBlockTranslateKeyFromName: ll.import("GMLIB_API", "getBlockTranslateKeyFromName")
} }
const mStaticFloatingTextMap = new Map(); const mStaticFloatingTextMap = new Map();
@@ -431,6 +435,10 @@ class Minecraft {
static readNbtFromFile(path, isBinary = true) { static readNbtFromFile(path, isBinary = true) {
return GMLIB_API.readNbtFromFile(path, isBinary); return GMLIB_API.readNbtFromFile(path, isBinary);
} }
static getBlockTranslateKeyFromName(name) {
return GMLIB_API.getBlockTranslateKeyFromName(name);
}
} }
class Recipes { class Recipes {
@@ -990,6 +998,18 @@ LLSE_Block.prototype.isAlwaysDestroyable = function () {
return GMLIB_API.blockIsAlwaysDestroyable(this); return GMLIB_API.blockIsAlwaysDestroyable(this);
} }
LLSE_Block.prototype.playerWillDestroy = function (player) {
return GMLIB_API.blockPlayerWillDestroy(this, player, this.pos);
}
LLSE_Player.prototype.attack = function (entity) {
return GMLIB_API.playerAttack(this, entity);
}
LLSE_Player.prototype.pullInEntity = function (entity) {
return GMLIB_API.playerPullInEntity(this, entity);
}
module.exports = { module.exports = {
StaticFloatingText, StaticFloatingText,
DynamicFloatingText, DynamicFloatingText,
+19
View File
@@ -659,4 +659,23 @@ void Export_Compatibility_API() {
RemoteCall::exportAs("GMLIB_API", "blockIsAlwaysDestroyable", [](Block const* block) -> bool { RemoteCall::exportAs("GMLIB_API", "blockIsAlwaysDestroyable", [](Block const* block) -> bool {
return block->getMaterial().isAlwaysDestroyable(); return block->getMaterial().isAlwaysDestroyable();
}); });
RemoteCall::exportAs(
"GMLIB_API",
"blockPlayerWillDestroy",
[](Block const* block, Player* player, std::pair<BlockPos, int> pos) -> bool {
return block->playerWillDestroy(*player, pos.first);
}
);
RemoteCall::exportAs("GMLIB_API", "playerAttack", [](Player* player, Actor* entity) -> bool {
return player->attack(*entity, ActorDamageCause::EntityAttack);
});
RemoteCall::exportAs("GMLIB_API", "playerPullInEntity", [](Player* player, Actor* entity) -> bool {
return player->pullInEntity(*entity);
});
RemoteCall::exportAs("GMLIB_API", "getBlockTranslateKeyFromName", [](std::string const& blockName) -> std::string {
if (auto block = Block::tryGetFromRegistry(blockName)) {
return block->buildDescriptionId();
}
return blockName;
});
} }