add vote & loader
Signed-off-by: szdytom <szdytom@qq.com>
This commit is contained in:
parent
8acd57c49b
commit
00f2943262
@ -2,7 +2,6 @@ __config() -> {
|
|||||||
'scope' -> 'global',
|
'scope' -> 'global',
|
||||||
'command_permission' -> 'ops',
|
'command_permission' -> 'ops',
|
||||||
'commands' -> {
|
'commands' -> {
|
||||||
'' -> 'cmdList',
|
|
||||||
'list' -> 'cmdList',
|
'list' -> 'cmdList',
|
||||||
'confirm' -> 'cmdStart',
|
'confirm' -> 'cmdStart',
|
||||||
'reset clear' -> 'cmdResetClear',
|
'reset clear' -> 'cmdResetClear',
|
||||||
@ -10,23 +9,42 @@ __config() -> {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
import('ica-libs', 'shuffleList', 'countCareer');
|
import('ica-libs', 'shuffleList', 'countCareer', 'playerListNbt', 'findVoteMax', 'resetVotes');
|
||||||
|
|
||||||
__on_start() -> (
|
__on_start() -> (
|
||||||
if(nbt_storage('ica:data'):'Goals' == null, (
|
if(nbt_storage('ica:data'):'Goals' == null, (
|
||||||
nbt_storage('ica:data', '{Goals: [], Started: 0b, Preparing: 0b}')
|
nbt_storage('ica:data', '{Goals: [], Started: 0b, Preparing: 0b}')
|
||||||
));
|
));
|
||||||
if(nbt_storage('ica:careers'):'Config' == null, (
|
if(nbt_storage('ica:careers'):'Config' == null, (
|
||||||
nbt_storage('ica:careers', '{Config: [], Participants: []}')
|
nbt_storage('ica:careers', '{Config: []}')
|
||||||
|
));
|
||||||
|
if(nbt_storage('ica:voting'):'Created' == null, (
|
||||||
|
nbt_storage('ica:voting', '{Created: 1b, Candidates: [], Votes: []}')
|
||||||
))
|
))
|
||||||
);
|
);
|
||||||
|
|
||||||
clearBossbars() -> (
|
clearBossbars() -> (
|
||||||
|
// bossbar(name, 'remove') is sometimes buggy.
|
||||||
run('bossbar remove ica:prepare_counter');
|
run('bossbar remove ica:prepare_counter');
|
||||||
run('bossbar remove ica:time_counter');
|
run('bossbar remove ica:time_counter');
|
||||||
run('bossbar remove ica:collected');
|
run('bossbar remove ica:collected');
|
||||||
);
|
);
|
||||||
|
|
||||||
|
cleanPlayerTags() -> (
|
||||||
|
for(player('all'), modify(_, 'clear_tag', ['ica.piggy'
|
||||||
|
, 'ica.wolf', 'ica.hunter', 'ica.spyglasser', 'ica.spyglass_fireball'
|
||||||
|
, 'ica.voter', 'ica.flyer', 'ica.spyglasser_cooldown'
|
||||||
|
, 'ica.coordinator', 'ica.deceased', 'ica.participant']));
|
||||||
|
);
|
||||||
|
|
||||||
|
endCleanup() -> (
|
||||||
|
clearBossbars();
|
||||||
|
cleanPlayerTags();
|
||||||
|
put(nbt_storage('ica:data'):'Started', '0b');
|
||||||
|
put(nbt_storage('ica:data'):'Preparing', '0b');
|
||||||
|
run('ica-effect-applier disable');
|
||||||
|
);
|
||||||
|
|
||||||
createBossbar(nid, name, val, sty) -> (
|
createBossbar(nid, name, val, sty) -> (
|
||||||
bossbar(nid);
|
bossbar(nid);
|
||||||
bossbar(nid, 'max', val);
|
bossbar(nid, 'max', val);
|
||||||
@ -46,9 +64,14 @@ __on_player_dies(p) -> (
|
|||||||
);
|
);
|
||||||
|
|
||||||
__on_player_connects(p) -> (
|
__on_player_connects(p) -> (
|
||||||
if(nbt_storage('ica:data'):'Started'
|
if(nbt_storage('ica:data'):'Started', (
|
||||||
&& query(p, 'has_scoreboard_tag', 'ica.deceased'), (
|
if(!query(p, 'has_scoreboard_tag', 'ica.participant'), (
|
||||||
modify(p, 'gamemode', 'spectator');
|
modify(p, 'tag', 'ica.deceased');
|
||||||
|
));
|
||||||
|
|
||||||
|
if(p, 'has_scoreboard_tag', 'ica.deceased', (
|
||||||
|
modify(p, 'gamemode', 'spectator');
|
||||||
|
));
|
||||||
));
|
));
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -65,7 +88,7 @@ tm_per_goal() -> (
|
|||||||
);
|
);
|
||||||
|
|
||||||
getPigPlayers() -> (
|
getPigPlayers() -> (
|
||||||
entity_selector('@a[tag=!ica.wolf]')
|
entity_selector('@a[tag=!ica.wolf,tag=ica.participant]')
|
||||||
);
|
);
|
||||||
|
|
||||||
getWolfPlayers() -> (
|
getWolfPlayers() -> (
|
||||||
@ -78,8 +101,7 @@ endGameTitle(p, m, s) -> (
|
|||||||
);
|
);
|
||||||
|
|
||||||
endTimeout(iv) -> (
|
endTimeout(iv) -> (
|
||||||
clearBossbars();
|
endCleanup();
|
||||||
put(nbt_storage('ica:data'):'Started', '0b');
|
|
||||||
endGameTitle(getPigPlayers(), 'Timeout!'
|
endGameTitle(getPigPlayers(), 'Timeout!'
|
||||||
, str('You didn\'t complete %d goals in time.', iv));
|
, str('You didn\'t complete %d goals in time.', iv));
|
||||||
endGameTitle(getWolfPlayers(), 'You won!'
|
endGameTitle(getWolfPlayers(), 'You won!'
|
||||||
@ -87,8 +109,7 @@ endTimeout(iv) -> (
|
|||||||
);
|
);
|
||||||
|
|
||||||
endFinish() -> (
|
endFinish() -> (
|
||||||
clearBossbars();
|
endCleanup();
|
||||||
put(nbt_storage('ica:data'):'Started', '0b');
|
|
||||||
endGameTitle(getPigPlayers(), 'Congratulations!', 'You have completed all the goals.');
|
endGameTitle(getPigPlayers(), 'Congratulations!', 'You have completed all the goals.');
|
||||||
endGameTitle(getWolfPlayers(), 'Oh no!'
|
endGameTitle(getWolfPlayers(), 'Oh no!'
|
||||||
, str('They have completed all the goals.', iv));
|
, str('They have completed all the goals.', iv));
|
||||||
@ -120,6 +141,31 @@ warnDeadline(dt) -> (
|
|||||||
));
|
));
|
||||||
);
|
);
|
||||||
|
|
||||||
|
electionKill(pname) -> (
|
||||||
|
modify(player(pname), 'kill');
|
||||||
|
print(player('all'), str('Election victim %s killed.', pname))
|
||||||
|
);
|
||||||
|
|
||||||
|
checkVotes(tm) -> (
|
||||||
|
if(tm % 12000 == 3600, (
|
||||||
|
print(player('all'), '[WARN] Vote ends in 1 minute');
|
||||||
|
return(false);
|
||||||
|
));
|
||||||
|
if(tm % 12000 == 2400, (
|
||||||
|
max_p = findVoteMax();
|
||||||
|
phint = if(max_p == null, (
|
||||||
|
'nobody was elected.'
|
||||||
|
), (
|
||||||
|
ele_p = player(max_p);
|
||||||
|
schedule(200, 'electionKill', ele_p);
|
||||||
|
print(ele_p, '[WARN] You were elected! You will be killed in 10 seconds.');
|
||||||
|
str('elected player %s', max_p)
|
||||||
|
));
|
||||||
|
resetVotes();
|
||||||
|
print(player('all'), str('Election result: %s.\nNew eletion round started.', phint));
|
||||||
|
));
|
||||||
|
);
|
||||||
|
|
||||||
runUpdateCollect() -> (
|
runUpdateCollect() -> (
|
||||||
if(!nbt_storage('ica:data'):'Started', return());
|
if(!nbt_storage('ica:data'):'Started', return());
|
||||||
tm = bossbar('ica:time_counter', 'value') - 20;
|
tm = bossbar('ica:time_counter', 'value') - 20;
|
||||||
@ -131,6 +177,7 @@ runUpdateCollect() -> (
|
|||||||
endTimeout(iv);
|
endTimeout(iv);
|
||||||
), (
|
), (
|
||||||
warnDeadline(dt);
|
warnDeadline(dt);
|
||||||
|
checkVotes(tm);
|
||||||
schedule(20, 'runUpdateCollect');
|
schedule(20, 'runUpdateCollect');
|
||||||
))
|
))
|
||||||
);
|
);
|
||||||
@ -172,9 +219,7 @@ playerInit(p) -> (
|
|||||||
);
|
);
|
||||||
|
|
||||||
cmdResetClear() -> (
|
cmdResetClear() -> (
|
||||||
clearBossbars();
|
endCleanup();
|
||||||
put(nbt_storage('ica:data'):'Started', '0b');
|
|
||||||
put(nbt_storage('ica:data'):'Preparing', '0b');
|
|
||||||
);
|
);
|
||||||
|
|
||||||
cmdReschedule() -> (
|
cmdReschedule() -> (
|
||||||
@ -223,16 +268,13 @@ cmdStart() -> (
|
|||||||
put(nbt_storage('ica:data'):'Goals[].Completed', '0b');
|
put(nbt_storage('ica:data'):'Goals[].Completed', '0b');
|
||||||
|
|
||||||
createBossbar('ica:prepare_counter', 'Preparing', tm_prepare(), null);
|
createBossbar('ica:prepare_counter', 'Preparing', tm_prepare(), null);
|
||||||
|
|
||||||
schedule(20, 'runUpdatePrepare');
|
schedule(20, 'runUpdatePrepare');
|
||||||
|
|
||||||
for(player('all'), modify(_, 'clear_tag', ['ica.piggy'
|
cleanPlayerTags();
|
||||||
, 'ica.wolf', 'ica.hunter', 'ica.spyglasser', 'ica.spyglass_fireball'
|
put(nbt_storage('ica:voting'), 'Candidates', playerListNbt(participants_list));
|
||||||
, 'ica.voter', 'ica.flyer', 'ica.spyglasser_cooldown'
|
|
||||||
, 'ica.coordinator', 'ica.deceased']));
|
|
||||||
|
|
||||||
for(participants_list, (
|
for(participants_list, (
|
||||||
modify(_, 'tag', ['ica.voter', 'ica.flyer']);
|
modify(_, 'tag', ['ica.voter', 'ica.flyer', 'ica.participant']);
|
||||||
career_tag = 'ica.piggy';
|
career_tag = 'ica.piggy';
|
||||||
if(_i < hunter_n, career_tag = ['ica.hunter', 'ica.spyglasser', 'ica.spyglasser_cooldown']);
|
if(_i < hunter_n, career_tag = ['ica.hunter', 'ica.spyglasser', 'ica.spyglasser_cooldown']);
|
||||||
if(_i < wolf_n, career_tag = ['ica.wolf', 'ica.spyglasser', 'ica.coordinator']);
|
if(_i < wolf_n, career_tag = ['ica.wolf', 'ica.spyglasser', 'ica.coordinator']);
|
||||||
|
@ -1,52 +0,0 @@
|
|||||||
__config() -> {
|
|
||||||
'scope' -> 'global',
|
|
||||||
'command_permission' -> 'ops',
|
|
||||||
'commands' -> {
|
|
||||||
'' -> 'cmdList',
|
|
||||||
'list' -> 'cmdList',
|
|
||||||
'set <slot> <item>' -> 'cmdSet',
|
|
||||||
'add <item>' -> 'cmdSetAppend',
|
|
||||||
},
|
|
||||||
'arguments' -> {
|
|
||||||
'slot' -> { 'type' -> 'int', 'min' -> 0, 'max' -> 5
|
|
||||||
, 'suggest' -> [0, 1, 2, 3, 4, 5] },
|
|
||||||
'item' -> { 'type' -> 'item' }
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
getFirstUnsetGoal() -> (
|
|
||||||
c_for(i = 0, i <= 5, i = i + 1, (
|
|
||||||
p = nbt_storage('ica:data'):str('Goals[{Slot: %db}]', i);
|
|
||||||
if(p == null, (
|
|
||||||
return(i);
|
|
||||||
))
|
|
||||||
));
|
|
||||||
return(6);
|
|
||||||
);
|
|
||||||
|
|
||||||
cmdList() -> (
|
|
||||||
print('please use /ica instead');
|
|
||||||
run('/ica');
|
|
||||||
);
|
|
||||||
|
|
||||||
cmdSet(slot_id, goal_item_tuple) -> (
|
|
||||||
if(nbt_storage('ica:data'):'Started', (
|
|
||||||
print('Already started, use /ica-admin reset clear to cancel.');
|
|
||||||
return(false)
|
|
||||||
));
|
|
||||||
pkey = str('Goals[{Slot: %db}]', slot_id);
|
|
||||||
etag = nbt(str('{Slot: %db, Item: "%s"}', slot_id, goal_item_tuple:0));
|
|
||||||
|
|
||||||
if(nbt_storage('ica:data'):pkey != null, delete(nbt_storage('ica:data'):pkey));
|
|
||||||
put(nbt_storage('ica:data'), 'Goals', etag, -1);
|
|
||||||
print(str('Goal #%d set to %s.', slot_id, goal_item_tuple:0))
|
|
||||||
);
|
|
||||||
|
|
||||||
cmdSetAppend(goal_item_tuple) -> (
|
|
||||||
missing_goal = getFirstUnsetGoal();
|
|
||||||
if(missing_goal <= 5, (
|
|
||||||
cmdSet(missing_goal, goal_item_tuple)
|
|
||||||
), (
|
|
||||||
print('All are goals set, please specify slot.')
|
|
||||||
));
|
|
||||||
);
|
|
@ -1,6 +1,7 @@
|
|||||||
__config() -> {
|
__config() -> {
|
||||||
'scope' -> 'global',
|
'scope' -> 'global',
|
||||||
'exports' -> ['shuffleList', 'countCareer']
|
'exports' -> ['shuffleList', 'countCareer', 'findVoteMax', 'resetVotes'
|
||||||
|
, 'playerListNbt', 'listContain', 'countVotes', 'countAbstainVotes'],
|
||||||
};
|
};
|
||||||
|
|
||||||
shuffleList(list) -> (
|
shuffleList(list) -> (
|
||||||
@ -23,4 +24,54 @@ countCareer(cartype) -> (
|
|||||||
),
|
),
|
||||||
nbt_storage('ica:careers'):str('Config[{Type: "%s"}].Count', cartype)
|
nbt_storage('ica:careers'):str('Config[{Type: "%s"}].Count', cartype)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
playerListNbt(plist) -> (
|
||||||
|
res = [];
|
||||||
|
for(plist, (
|
||||||
|
put(res, null, query(_, 'command_name'), 'extend');
|
||||||
|
));
|
||||||
|
encode_nbt(res)
|
||||||
|
);
|
||||||
|
|
||||||
|
listContain(plist, pele) -> (
|
||||||
|
for(plist, if(_ == pele, return(true)));
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
|
nbtLength(l) -> (
|
||||||
|
if(l == null, return(0));
|
||||||
|
lp = parse_nbt(l);
|
||||||
|
if(type(l) == 'list', length(l), 1)
|
||||||
|
);
|
||||||
|
|
||||||
|
countVotes(pname) -> (
|
||||||
|
l = nbt_storage('ica:voting'):str('Votes[{Abstain: 0b, To: "%s"}]', pname);
|
||||||
|
nbtLength(l)
|
||||||
|
);
|
||||||
|
|
||||||
|
countAbstainVotes() -> (
|
||||||
|
l = nbt_storage('ica:voting'):'Votes[{Abstain: 1b}]';
|
||||||
|
nbtLength(l)
|
||||||
|
);
|
||||||
|
|
||||||
|
findVoteMax() -> (
|
||||||
|
cand_names = parse_nbt(nbt_storage('ica:voting'):'Candidates');
|
||||||
|
max_p = null;
|
||||||
|
max_c = countAbstainVotes();
|
||||||
|
for(cand_names, (
|
||||||
|
v_n = countVotes(_);
|
||||||
|
if(v_n == max_c, (
|
||||||
|
max_p = null;
|
||||||
|
));
|
||||||
|
if(v_n > max_c, (
|
||||||
|
max_p = _;
|
||||||
|
max_c = v_n;
|
||||||
|
));
|
||||||
|
));
|
||||||
|
max_p
|
||||||
|
);
|
||||||
|
|
||||||
|
resetVotes() -> (
|
||||||
|
put(nbt_storage('ica:voting'), 'Votes', '[]');
|
||||||
|
);
|
||||||
|
16
src/ica-loader.sc
Normal file
16
src/ica-loader.sc
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
__config() -> {
|
||||||
|
'scope' -> 'global',
|
||||||
|
'command_permission' -> 'ops',
|
||||||
|
'commands' -> {
|
||||||
|
'' -> 'cmdLoad',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
cmdLoad() -> (
|
||||||
|
run('script load ica-admin');
|
||||||
|
run('script load ica-effect-applier');
|
||||||
|
run('script load ica-fireball');
|
||||||
|
run('script load ica');
|
||||||
|
run('script load ica-vote');
|
||||||
|
run('script load ica-settings');
|
||||||
|
);
|
@ -2,7 +2,6 @@ __config() -> {
|
|||||||
'scope' -> 'global',
|
'scope' -> 'global',
|
||||||
'command_permission' -> 'ops',
|
'command_permission' -> 'ops',
|
||||||
'commands' -> {
|
'commands' -> {
|
||||||
'' -> 'cmdList',
|
|
||||||
'list' -> 'cmdList',
|
'list' -> 'cmdList',
|
||||||
'set <slot> <item>' -> 'cmdSet',
|
'set <slot> <item>' -> 'cmdSet',
|
||||||
'add <item>' -> 'cmdSetAppend',
|
'add <item>' -> 'cmdSetAppend',
|
||||||
|
90
src/ica-vote.sc
Normal file
90
src/ica-vote.sc
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
__config() -> {
|
||||||
|
'commands' -> {
|
||||||
|
'' -> 'cmdInfo',
|
||||||
|
'list' -> 'cmdInfo',
|
||||||
|
'info' -> 'cmdInfo',
|
||||||
|
'sus <candidate_name>' -> 'cmdVotePlayer',
|
||||||
|
'abstain' -> 'cmdVoteAbstain',
|
||||||
|
},
|
||||||
|
'arguments' -> {
|
||||||
|
'candidate_name' -> { 'type' -> 'string', 'suggester' -> _(arg) -> (
|
||||||
|
if(nbt_storage('ica:data'):'Started',
|
||||||
|
parse_nbt(nbt_storage('ica:voting'):'Candidates'),
|
||||||
|
[]
|
||||||
|
)
|
||||||
|
)},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
import('ica-libs', 'listContain', 'countVotes', 'findVoteMax', 'countAbstainVotes');
|
||||||
|
|
||||||
|
|
||||||
|
cmdInfo() -> (
|
||||||
|
if(!nbt_storage('ica:data'):'Started', (
|
||||||
|
print('Not started. use /ica-admin confirm to start.');
|
||||||
|
return(false)
|
||||||
|
));
|
||||||
|
cand_names = parse_nbt(nbt_storage('ica:voting'):'Candidates');
|
||||||
|
cand_n = length(cand_names);
|
||||||
|
print(str('There are %d candidates:', cand_n));
|
||||||
|
for(cand_names, (
|
||||||
|
p = player(_);
|
||||||
|
v_cnt = countVotes(_);
|
||||||
|
print(str(' - %02d vote%s %s%s', v_cnt, if(v_cnt > 1, 's', ' ')
|
||||||
|
, _, if(query(p, 'has_scoreboard_tag', 'ica.deceased'), ' [deceased]', '')));
|
||||||
|
));
|
||||||
|
abv_cnt = countAbstainVotes();
|
||||||
|
print(' - %02d vote%s (abstain)', abv_cnt, if(abv_cnt > 1, 's', ' '));
|
||||||
|
|
||||||
|
max_p = findVoteMax();
|
||||||
|
print(str('Current elected: %s', if(max_p == null, '(nobody)', max_p)));
|
||||||
|
);
|
||||||
|
|
||||||
|
beforeVoteChecks() -> (
|
||||||
|
if(!nbt_storage('ica:data'):'Started', (
|
||||||
|
print('Not started. use /ica-admin confirm to start.');
|
||||||
|
return(false)
|
||||||
|
));
|
||||||
|
myself = player();
|
||||||
|
if(query(myself, 'has_scoreboard_tag', 'ica.deceased'), (
|
||||||
|
print('You can only bystand.');
|
||||||
|
return(false);
|
||||||
|
));
|
||||||
|
if(!query(myself, 'has_scoreboard_tag', 'ica.voter'), (
|
||||||
|
print('You don\'t have this ability');
|
||||||
|
return(false);
|
||||||
|
));
|
||||||
|
myname = query(myself, 'command_name');
|
||||||
|
if(has(nbt_storage('ica:voting'), str('Votes[{From: "%s"}]', myname)), (
|
||||||
|
print('You have already voted.');
|
||||||
|
return(false);
|
||||||
|
));
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
cmdVotePlayer(sus_name) -> (
|
||||||
|
if(!beforeVoteChecks(), return(false));
|
||||||
|
|
||||||
|
cand_names = parse_nbt(nbt_storage('ica:voting'):'Candidates');
|
||||||
|
if(!listContain(cand_names, sus_name), (
|
||||||
|
print(str('Candidate %s not found.', sus_name));
|
||||||
|
return(false);
|
||||||
|
));
|
||||||
|
|
||||||
|
myself = player();
|
||||||
|
myname = query(myself, 'command_name');
|
||||||
|
|
||||||
|
etags = nbt(str('{From: "%s", To: "%s", Abstain: 0b}', myname, sus_name));
|
||||||
|
put(nbt_storage('ica:voting'), 'Votes', etags, -1);
|
||||||
|
print('OK.');
|
||||||
|
);
|
||||||
|
|
||||||
|
cmdVoteAbstain() -> (
|
||||||
|
if(!beforeVoteChecks(), return(false));
|
||||||
|
myself = player();
|
||||||
|
myname = query(myself, 'command_name');
|
||||||
|
|
||||||
|
etags = nbt(str('{From: "%s", To: "", Abstain: 1b}', myname));
|
||||||
|
put(nbt_storage('ica:voting'), 'Votes', etags, -1);
|
||||||
|
print('OK.');
|
||||||
|
);
|
40
src/ica.sc
40
src/ica.sc
@ -6,6 +6,7 @@ __config() -> {
|
|||||||
'refill' -> 'cmdRefill',
|
'refill' -> 'cmdRefill',
|
||||||
'seed' -> 'cmdSeed',
|
'seed' -> 'cmdSeed',
|
||||||
'me' -> 'cmdMe',
|
'me' -> 'cmdMe',
|
||||||
|
'whoami' -> 'cmdMe',
|
||||||
'locate <participant>' -> 'cmdLocate',
|
'locate <participant>' -> 'cmdLocate',
|
||||||
},
|
},
|
||||||
'arguments' -> {
|
'arguments' -> {
|
||||||
@ -28,17 +29,32 @@ cmdLocate(pname) -> (
|
|||||||
print('Not started. use /ica-admin confirm to start.');
|
print('Not started. use /ica-admin confirm to start.');
|
||||||
return(false)
|
return(false)
|
||||||
));
|
));
|
||||||
|
myself = player();
|
||||||
|
if(query(myself, 'has_scoreboard_tag', 'ica.deceased'), (
|
||||||
|
print('You can only bystand.');
|
||||||
|
return(false);
|
||||||
|
));
|
||||||
if(!query(player(), 'has_scoreboard_tag', 'ica.coordinator'), (
|
if(!query(player(), 'has_scoreboard_tag', 'ica.coordinator'), (
|
||||||
print('You don\'t have this ability.');
|
print('You don\'t have this ability.');
|
||||||
return(false)
|
return(false)
|
||||||
));
|
));
|
||||||
|
|
||||||
p = player(pname:0);
|
p = player(pname:0);
|
||||||
|
if(p == null, (
|
||||||
|
print('Not found');
|
||||||
|
return(false);
|
||||||
|
));
|
||||||
|
|
||||||
ppos = query(p, 'pos');
|
ppos = query(p, 'pos');
|
||||||
pdim = query(p, 'dimension');
|
pdim = query(p, 'dimension');
|
||||||
mydim = query(player(), 'dimension');
|
mydim = query(myself, 'dimension');
|
||||||
if(pdim == mydim, (
|
if(pdim == mydim, (
|
||||||
print(str('%s: %.1f %.1f %.1f.', pdim, ppos:0, ppos:1, ppos:2));
|
print(str('%s: %.1f %.1f %.1f.', pdim, ppos:0, ppos:1, ppos:2));
|
||||||
|
sslot = query(myself, 'selected_slot');
|
||||||
|
sitem = inventory_get(myself, sslot);
|
||||||
|
inventory_set(myself, sslot, 1, 'compass',
|
||||||
|
str('{LodestonePos: {X: %d, Y: %d, Z: %d}, LodestoneDimension: "%s", LodestoneTracked: 0b}'
|
||||||
|
, floor(ppos:0), floor(ppos:1), floor(ppos:2), pdim));
|
||||||
), (
|
), (
|
||||||
print(str('%s: ? ? ?', pdim));
|
print(str('%s: ? ? ?', pdim));
|
||||||
));
|
));
|
||||||
@ -53,11 +69,18 @@ cmdRefill() -> (
|
|||||||
print('Not started. use /ica-admin confirm to start.');
|
print('Not started. use /ica-admin confirm to start.');
|
||||||
return(false)
|
return(false)
|
||||||
));
|
));
|
||||||
if(!query(player(), 'has_scoreboard_tag', 'ica.flyer'), (
|
myself = player();
|
||||||
print('You cannot fly.');
|
if(query(myself, 'has_scoreboard_tag', 'ica.deceased'), (
|
||||||
return(false)
|
print('You can only bystand.');
|
||||||
|
return(false);
|
||||||
|
));
|
||||||
|
if(query(myself, 'has_scoreboard_tag', 'ica.flyer'), (
|
||||||
|
run('give @s minecraft:firework_rocket 64');
|
||||||
|
));
|
||||||
|
if(query(myself, 'has_scoreboard_tag', 'ica.spyglasser')
|
||||||
|
&& !nbt_storage('ica:data'):'Preparing', (
|
||||||
|
modify(myself, 'tag', 'ica.spyglass_fireball');
|
||||||
));
|
));
|
||||||
run('give @s minecraft:firework_rocket 64');
|
|
||||||
);
|
);
|
||||||
|
|
||||||
cmdList() -> (
|
cmdList() -> (
|
||||||
@ -136,6 +159,11 @@ cmdSubmit(slot_id) -> (
|
|||||||
print('Currently preparing, please submit later.');
|
print('Currently preparing, please submit later.');
|
||||||
return(false)
|
return(false)
|
||||||
));
|
));
|
||||||
|
me = player();
|
||||||
|
if(query(me, 'has_scoreboard_tag', 'ica.deceased'), (
|
||||||
|
print('You can only bystand.');
|
||||||
|
return(false);
|
||||||
|
));
|
||||||
|
|
||||||
pkey = str('Goals[{Slot: %db}]', slot_id);
|
pkey = str('Goals[{Slot: %db}]', slot_id);
|
||||||
if(nbt_storage('ica:data'):pkey:'Completed', (
|
if(nbt_storage('ica:data'):pkey:'Completed', (
|
||||||
@ -143,7 +171,7 @@ cmdSubmit(slot_id) -> (
|
|||||||
nbt_storage('ica:data'):pkey:'Item')));
|
nbt_storage('ica:data'):pkey:'Item')));
|
||||||
return()
|
return()
|
||||||
));
|
));
|
||||||
me = player();
|
|
||||||
if(inventory_remove(me, nbt_storage('ica:data'):pkey:'Item', 1) == 0, (
|
if(inventory_remove(me, nbt_storage('ica:data'):pkey:'Item', 1) == 0, (
|
||||||
print(str('%s not found.', item_display_name(
|
print(str('%s not found.', item_display_name(
|
||||||
nbt_storage('ica:data'):pkey:'Item')));
|
nbt_storage('ica:data'):pkey:'Item')));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user