修复PHP接口:增益效果接口补齐必要参数,玩家存在性校验兼容登录库,同步新增实体交互权限字段
This commit is contained in:
+21
-2
@@ -500,6 +500,7 @@ function initLandTables($db) {
|
|||||||
'deny_raid' => "INTEGER DEFAULT 0",
|
'deny_raid' => "INTEGER DEFAULT 0",
|
||||||
'deny_fire_spread' => "INTEGER DEFAULT 0",
|
'deny_fire_spread' => "INTEGER DEFAULT 0",
|
||||||
'deny_item_frame' => "INTEGER DEFAULT 0",
|
'deny_item_frame' => "INTEGER DEFAULT 0",
|
||||||
|
'deny_entity_interact' => "INTEGER DEFAULT 0",
|
||||||
'deny_move' => "INTEGER DEFAULT 0",
|
'deny_move' => "INTEGER DEFAULT 0",
|
||||||
'deny_pickup' => "INTEGER DEFAULT 0",
|
'deny_pickup' => "INTEGER DEFAULT 0",
|
||||||
'deny_fire' => "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,
|
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_hunger, deny_all_damage, deny_drop, deny_mount, deny_ender_pearl,
|
||||||
deny_bow, deny_potion, deny_explosion, deny_raid, deny_fire_spread,
|
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_mode, peace_mode_duration,
|
||||||
peace_whitelist, enforce_game_mode, mode_exempt, enter_msg, leave_msg,
|
peace_whitelist, enforce_game_mode, mode_exempt, enter_msg, leave_msg,
|
||||||
confiscate_msg, deny_thrown_projectiles, deny_glowing, deny_redstone_interaction,
|
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,
|
: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_hunger, :deny_all_damage, :deny_drop, :deny_mount, :deny_ender_pearl,
|
||||||
:deny_bow, :deny_potion, :deny_explosion, :deny_raid, :deny_fire_spread,
|
: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_mode, :peace_mode_duration,
|
||||||
:peace_whitelist, :enforce_game_mode, :mode_exempt, :enter_msg, :leave_msg,
|
:peace_whitelist, :enforce_game_mode, :mode_exempt, :enter_msg, :leave_msg,
|
||||||
:confiscate_msg, :deny_thrown_projectiles, :deny_glowing, :deny_redstone_interaction,
|
: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_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_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_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_move', (int)($land['deny_move'] ?? 0), SQLITE3_INTEGER);
|
||||||
$stmt->bindValue(':deny_pickup', (int)($land['deny_pickup'] ?? 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);
|
$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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-2
@@ -469,7 +469,7 @@ function syncLands() {
|
|||||||
peace_mode, peace_mode_duration, peace_whitelist, enforce_game_mode, mode_exempt,
|
peace_mode, peace_mode_duration, peace_whitelist, enforce_game_mode, mode_exempt,
|
||||||
enter_msg, leave_msg, confiscate_msg, enable_announce, announce_template, txt_content,
|
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_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,
|
deny_all_damage, clear_effects, give_effects, clear_all_bad_effects,
|
||||||
admin_changed, deny_thrown_projectiles, deny_glowing, deny_redstone_interaction, deny_door_interaction,
|
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,
|
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,
|
:peace_mode, :peace_dur, :peace_wl, :enforce_gm, :mode_exempt,
|
||||||
:enter_msg, :leave_msg, :confiscate_msg, :announce, :announce_tpl, :txt_content,
|
: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_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,
|
:deny_all_damage, :clear_effects, :give_effects, :clear_all_bad_effects,
|
||||||
:admin_changed, :deny_thrown_projectiles, :deny_glowing, :deny_redstone_interaction, :deny_door_interaction,
|
: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,
|
: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_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_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_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_move', (int)($land['deny_move'] ?? 0), SQLITE3_INTEGER);
|
||||||
$stmt->bindValue(':deny_pickup', (int)($land['deny_pickup'] ?? 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);
|
$stmt->bindValue(':deny_drop', (int)($land['deny_drop'] ?? 0), SQLITE3_INTEGER);
|
||||||
|
|||||||
@@ -3164,6 +3164,8 @@ async function addClearEffect(landName) {
|
|||||||
current.push(eff);
|
current.push(eff);
|
||||||
|
|
||||||
const url = new URL(API + 'land_api.php', location.href);
|
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();
|
const body = new URLSearchParams();
|
||||||
body.set('name', landName);
|
body.set('name', landName);
|
||||||
body.set('field', 'clear_effects');
|
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)]);
|
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);
|
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();
|
const body = new URLSearchParams();
|
||||||
body.set('name', landName);
|
body.set('name', landName);
|
||||||
body.set('field', 'give_effects');
|
body.set('field', 'give_effects');
|
||||||
@@ -3264,6 +3268,8 @@ async function addGiveEffect(landName) {
|
|||||||
async function removeLandEffect(landName, field, effValue) {
|
async function removeLandEffect(landName, field, effValue) {
|
||||||
try {
|
try {
|
||||||
const url = new URL(API + 'land_api.php', location.href);
|
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);
|
const detailUrl = new URL(API + 'land_api.php', location.href);
|
||||||
detailUrl.searchParams.set('action', 'land_detail');
|
detailUrl.searchParams.set('action', 'land_detail');
|
||||||
detailUrl.searchParams.set('token', TOKEN);
|
detailUrl.searchParams.set('token', TOKEN);
|
||||||
|
|||||||
Reference in New Issue
Block a user