修复PHP接口:增益效果接口补齐必要参数,玩家存在性校验兼容登录库,同步新增实体交互权限字段
This commit is contained in:
+21
-2
@@ -500,6 +500,7 @@ function initLandTables($db) {
|
||||
'deny_raid' => "INTEGER DEFAULT 0",
|
||||
'deny_fire_spread' => "INTEGER DEFAULT 0",
|
||||
'deny_item_frame' => "INTEGER DEFAULT 0",
|
||||
'deny_entity_interact' => "INTEGER DEFAULT 0",
|
||||
'deny_move' => "INTEGER DEFAULT 0",
|
||||
'deny_pickup' => "INTEGER DEFAULT 0",
|
||||
'deny_fire' => "INTEGER DEFAULT 0",
|
||||
@@ -632,7 +633,7 @@ function handleSyncLands($db, $post) {
|
||||
punish_commands, deny_block_place, deny_block_break, deny_pvp, deny_fall_damage,
|
||||
deny_hunger, deny_all_damage, deny_drop, deny_mount, deny_ender_pearl,
|
||||
deny_bow, deny_potion, deny_explosion, deny_raid, deny_fire_spread,
|
||||
deny_all_effects, deny_item_frame, deny_move, deny_pickup, deny_fire,
|
||||
deny_all_effects, deny_item_frame, deny_entity_interact, deny_move, deny_pickup, deny_fire,
|
||||
peace_mode, peace_mode_duration,
|
||||
peace_whitelist, enforce_game_mode, mode_exempt, enter_msg, leave_msg,
|
||||
confiscate_msg, deny_thrown_projectiles, deny_glowing, deny_redstone_interaction,
|
||||
@@ -647,7 +648,7 @@ function handleSyncLands($db, $post) {
|
||||
:punish_commands, :deny_block_place, :deny_block_break, :deny_pvp, :deny_fall_damage,
|
||||
:deny_hunger, :deny_all_damage, :deny_drop, :deny_mount, :deny_ender_pearl,
|
||||
:deny_bow, :deny_potion, :deny_explosion, :deny_raid, :deny_fire_spread,
|
||||
:deny_all_effects, :deny_item_frame, :deny_move, :deny_pickup, :deny_fire,
|
||||
:deny_all_effects, :deny_item_frame, :deny_entity_interact, :deny_move, :deny_pickup, :deny_fire,
|
||||
:peace_mode, :peace_mode_duration,
|
||||
:peace_whitelist, :enforce_game_mode, :mode_exempt, :enter_msg, :leave_msg,
|
||||
:confiscate_msg, :deny_thrown_projectiles, :deny_glowing, :deny_redstone_interaction,
|
||||
@@ -694,6 +695,7 @@ function handleSyncLands($db, $post) {
|
||||
$stmt->bindValue(':deny_fire_spread', (int)($land['deny_fire_spread'] ?? 0), SQLITE3_INTEGER);
|
||||
$stmt->bindValue(':deny_all_effects', (int)($land['deny_all_effects'] ?? 0), SQLITE3_INTEGER);
|
||||
$stmt->bindValue(':deny_item_frame', (int)($land['deny_item_frame'] ?? 0), SQLITE3_INTEGER);
|
||||
$stmt->bindValue(':deny_entity_interact', (int)($land['deny_entity_interact'] ?? 0), SQLITE3_INTEGER);
|
||||
$stmt->bindValue(':deny_move', (int)($land['deny_move'] ?? 0), SQLITE3_INTEGER);
|
||||
$stmt->bindValue(':deny_pickup', (int)($land['deny_pickup'] ?? 0), SQLITE3_INTEGER);
|
||||
$stmt->bindValue(':deny_fire', (int)($land['deny_fire'] ?? 0), SQLITE3_INTEGER);
|
||||
@@ -1207,6 +1209,23 @@ function playerExists($db, $playerName) {
|
||||
// 表可能不存在,忽略
|
||||
}
|
||||
|
||||
// ★ 兜底:检查login.db(Java游戏库,玩家注册的权威数据源)
|
||||
try {
|
||||
$loginDbPath = defined('GAME_LOGIN_DB') ? GAME_LOGIN_DB : (__DIR__ . '/../../plugin/login.db');
|
||||
if (file_exists($loginDbPath)) {
|
||||
$loginDb = new SQLite3($loginDbPath);
|
||||
$loginDb->enableExceptions(true);
|
||||
$stmt = $loginDb->prepare("SELECT COUNT(*) as cnt FROM users WHERE player_name = :player");
|
||||
$stmt->bindValue(':player', $playerName, SQLITE3_TEXT);
|
||||
$result = $stmt->execute();
|
||||
$row = $result->fetchArray(SQLITE3_ASSOC);
|
||||
$loginDb->close();
|
||||
if ($row && $row['cnt'] > 0) return true;
|
||||
}
|
||||
} catch (\Throwable $e) {
|
||||
// login.db 可能不存在,忽略
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -469,7 +469,7 @@ function syncLands() {
|
||||
peace_mode, peace_mode_duration, peace_whitelist, enforce_game_mode, mode_exempt,
|
||||
enter_msg, leave_msg, confiscate_msg, enable_announce, announce_template, txt_content,
|
||||
deny_block_break, deny_block_place, deny_fluid, deny_pvp, deny_fire_spread, deny_all_effects,
|
||||
deny_item_frame, deny_move, deny_pickup, deny_drop, deny_explosion, deny_fall_damage, deny_hunger,
|
||||
deny_item_frame, deny_entity_interact, deny_move, deny_pickup, deny_drop, deny_explosion, deny_fall_damage, deny_hunger,
|
||||
deny_all_damage, clear_effects, give_effects, clear_all_bad_effects,
|
||||
admin_changed, deny_thrown_projectiles, deny_glowing, deny_redstone_interaction, deny_door_interaction,
|
||||
deny_noteblock_jukebox, deny_lead, deny_crop_harvest, deny_wool_shear, deny_animal_feeding,
|
||||
@@ -478,7 +478,7 @@ function syncLands() {
|
||||
:peace_mode, :peace_dur, :peace_wl, :enforce_gm, :mode_exempt,
|
||||
:enter_msg, :leave_msg, :confiscate_msg, :announce, :announce_tpl, :txt_content,
|
||||
:deny_block_break, :deny_block_place, :deny_fluid, :deny_pvp, :deny_fire_spread, :deny_all_effects,
|
||||
:deny_item_frame, :deny_move, :deny_pickup, :deny_drop, :deny_explosion, :deny_fall_damage, :deny_hunger,
|
||||
:deny_item_frame, :deny_entity_interact, :deny_move, :deny_pickup, :deny_drop, :deny_explosion, :deny_fall_damage, :deny_hunger,
|
||||
:deny_all_damage, :clear_effects, :give_effects, :clear_all_bad_effects,
|
||||
:admin_changed, :deny_thrown_projectiles, :deny_glowing, :deny_redstone_interaction, :deny_door_interaction,
|
||||
:deny_noteblock_jukebox, :deny_lead, :deny_crop_harvest, :deny_wool_shear, :deny_animal_feeding,
|
||||
@@ -515,6 +515,7 @@ function syncLands() {
|
||||
$stmt->bindValue(':deny_fire_spread', (int)($land['deny_fire_spread'] ?? 0), SQLITE3_INTEGER);
|
||||
$stmt->bindValue(':deny_all_effects', (int)($land['deny_all_effects'] ?? 0), SQLITE3_INTEGER);
|
||||
$stmt->bindValue(':deny_item_frame', (int)($land['deny_item_frame'] ?? 0), SQLITE3_INTEGER);
|
||||
$stmt->bindValue(':deny_entity_interact', (int)($land['deny_entity_interact'] ?? 0), SQLITE3_INTEGER);
|
||||
$stmt->bindValue(':deny_move', (int)($land['deny_move'] ?? 0), SQLITE3_INTEGER);
|
||||
$stmt->bindValue(':deny_pickup', (int)($land['deny_pickup'] ?? 0), SQLITE3_INTEGER);
|
||||
$stmt->bindValue(':deny_drop', (int)($land['deny_drop'] ?? 0), SQLITE3_INTEGER);
|
||||
|
||||
@@ -3164,6 +3164,8 @@ async function addClearEffect(landName) {
|
||||
current.push(eff);
|
||||
|
||||
const url = new URL(API + 'land_api.php', location.href);
|
||||
url.searchParams.set('action', 'update_land_field');
|
||||
url.searchParams.set('token', TOKEN);
|
||||
const body = new URLSearchParams();
|
||||
body.set('name', landName);
|
||||
body.set('field', 'clear_effects');
|
||||
@@ -3244,6 +3246,8 @@ async function addGiveEffect(landName) {
|
||||
current.push([eff, Math.min(Math.max(level,1),255), Math.min(Math.max(duration,1),3600)]);
|
||||
|
||||
const url = new URL(API + 'land_api.php', location.href);
|
||||
url.searchParams.set('action', 'update_land_field');
|
||||
url.searchParams.set('token', TOKEN);
|
||||
const body = new URLSearchParams();
|
||||
body.set('name', landName);
|
||||
body.set('field', 'give_effects');
|
||||
@@ -3264,6 +3268,8 @@ async function addGiveEffect(landName) {
|
||||
async function removeLandEffect(landName, field, effValue) {
|
||||
try {
|
||||
const url = new URL(API + 'land_api.php', location.href);
|
||||
url.searchParams.set('action', 'update_land_field');
|
||||
url.searchParams.set('token', TOKEN);
|
||||
const detailUrl = new URL(API + 'land_api.php', location.href);
|
||||
detailUrl.searchParams.set('action', 'land_detail');
|
||||
detailUrl.searchParams.set('token', TOKEN);
|
||||
|
||||
Reference in New Issue
Block a user