mirror of
https://github.com/webmin/webmin.git
synced 2025-07-20 16:48:46 +00:00
94 lines
2.4 KiB
Perl
Executable File
94 lines
2.4 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# Show a form to edit or create a world
|
|
|
|
use strict;
|
|
use warnings;
|
|
no warnings 'redefine';
|
|
no warnings 'uninitialized';
|
|
require './minecraft-lib.pl';
|
|
our (%in, %text, %config);
|
|
&ReadParse();
|
|
my @worlds = &list_worlds();
|
|
my $conf = &get_minecraft_config();
|
|
my $def = &find_value("level-name", $conf);
|
|
|
|
# Get world, show title
|
|
my $world;
|
|
if ($in{'new'}) {
|
|
&ui_print_header(undef, $text{'world_create'}, "");
|
|
$world = { };
|
|
}
|
|
else {
|
|
&ui_print_header(undef, $text{'world_edit'}, "");
|
|
($world) = grep { $_->{'name'} eq $in{'name'} } @worlds;
|
|
$world || &error($text{'world_egone'});
|
|
}
|
|
|
|
print &ui_form_start("save_world.cgi", "form-data");
|
|
print &ui_table_start($text{'world_header'}, undef, 2);
|
|
print &ui_hidden("new", $in{'new'});
|
|
|
|
if ($in{'new'}) {
|
|
# World name
|
|
print &ui_table_row($text{'world_name'},
|
|
&ui_textbox("name", undef, 20));
|
|
|
|
# Source of data
|
|
my @opts = ( [ 0, $text{'world_src0'} ] );
|
|
if (@worlds) {
|
|
push(@opts, [ 1, $text{'world_src1'},
|
|
&ui_select("world", undef,
|
|
[ map { $_->{'name'} } @worlds ]) ]);
|
|
}
|
|
push(@opts, [ 2, $text{'world_src2'},
|
|
&ui_upload("upload") ]);
|
|
push(@opts, [ 3, $text{'world_src3'},
|
|
&ui_filebox("file", undef, 40) ]);
|
|
print &ui_table_row($text{'world_src'},
|
|
&ui_radio_table("src", 0, \@opts));
|
|
}
|
|
else {
|
|
# World name (non-editable)
|
|
print &ui_table_row($text{'world_name'},
|
|
"<tt>$world->{'name'}</tt>");
|
|
print &ui_hidden("name", $in{'name'});
|
|
|
|
# Current state
|
|
print &ui_table_row($text{'world_state'},
|
|
!&is_minecraft_server_running() ?
|
|
$text{'world_state0'} :
|
|
$def eq $world->{'name'} ?
|
|
$text{'world_state1'} :
|
|
$text{'world_state2'});
|
|
|
|
# Size
|
|
print &ui_table_row($text{'worlds_size'},
|
|
&nice_size($world->{'size'}));
|
|
|
|
# Seed, if active
|
|
if (&is_minecraft_server_running() && $def eq $world->{'name'}) {
|
|
my $out = &execute_minecraft_command("/seed");
|
|
if ($out =~ /Seed:\s+(\S+)/) {
|
|
print &ui_table_row($text{'worlds_seed'}, $1);
|
|
}
|
|
}
|
|
|
|
# All players
|
|
if (@{$world->{'players'}}) {
|
|
my @grid = map { "<a href='view_conn.cgi?name=".&urlize($_).
|
|
"'>".&html_escape($_)."</a> " }
|
|
@{$world->{'players'}};
|
|
print &ui_table_row($text{'world_players'},
|
|
&ui_grid_table(\@grid, 4, 100));
|
|
}
|
|
}
|
|
|
|
print &ui_table_end();
|
|
print &ui_form_end(
|
|
$in{'new'} ? [ [ undef, $text{'create'} ] ]
|
|
: [ [ 'delete', $text{'world_delete'} ],
|
|
[ 'download', $text{'world_download'} ] ],
|
|
);
|
|
|
|
&ui_print_footer("list_worlds.cgi", $text{'worlds_return'});
|