A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: de8e4baecf80736de96ebbe5f9568604b94df948 (6427 bytes)[doc][blame][raw]
1
package de.typable.minecrafthub;3
import java.io.File;4
import java.io.IOException;5
import java.net.BindException;6
import java.net.ServerSocket;7
import java.net.Socket;9
import org.bukkit.Bukkit;10
import org.bukkit.ChatColor;11
import org.bukkit.GameMode;12
import org.bukkit.Material;13
import org.bukkit.World;14
import org.bukkit.WorldCreator;15
import org.bukkit.WorldType;16
import org.bukkit.command.Command;17
import org.bukkit.command.CommandSender;18
import org.bukkit.entity.Player;19
import org.bukkit.inventory.ItemStack;20
import org.bukkit.inventory.meta.SkullMeta;21
import org.bukkit.plugin.Plugin;22
import org.bukkit.plugin.PluginManager;23
import org.bukkit.plugin.java.JavaPlugin;24
import org.bukkit.scheduler.BukkitTask;26
import de.typable.minecrafthub.constant.DefaultConstants;27
import de.typable.minecrafthub.event.AutoWorkbenchListener;28
import de.typable.minecrafthub.event.ChairListener;29
import de.typable.minecrafthub.event.DoubleDoorListener;30
import de.typable.minecrafthub.event.EventListener;31
import de.typable.minecrafthub.event.LeavesDecayListener;32
import de.typable.minecrafthub.event.StandbyListener;33
import de.typable.minecrafthub.util.Util;36
public class Main extends JavaPlugin37
{38
private PluginManager pluginManager;39
private StandbyListener standbyListener;40
private DoubleDoorListener doubleDoorListener;41
private ChairListener chairListener;42
private AutoWorkbenchListener autoWorkbenchListener;43
private LeavesDecayListener leavesDecayListener;44
private EventListener eventListener;46
private Plugin plugin;47
private BukkitTask task;49
@Override50
public void onEnable()51
{52
plugin = this;54
pluginManager = Bukkit.getPluginManager();56
standbyListener = new StandbyListener(this);57
pluginManager.registerEvents(standbyListener, this);59
doubleDoorListener = new DoubleDoorListener();60
pluginManager.registerEvents(doubleDoorListener, this);62
chairListener = new ChairListener();63
pluginManager.registerEvents(chairListener, this);65
autoWorkbenchListener = new AutoWorkbenchListener();66
pluginManager.registerEvents(autoWorkbenchListener, this);68
leavesDecayListener = new LeavesDecayListener(this);69
pluginManager.registerEvents(leavesDecayListener, this);71
eventListener = new EventListener();72
pluginManager.registerEvents(eventListener, this);74
task = Bukkit.getScheduler().runTaskAsynchronously(this, new Runnable()75
{76
@Override77
public void run()78
{79
try(ServerSocket serverSocket = new ServerSocket(25560))80
{81
while(!serverSocket.isClosed())82
{83
Socket socket = serverSocket.accept();85
Util.sendCountdown(plugin, "Server restarts in", 5, new Runnable()86
{87
@Override88
public void run()89
{90
for(Player target : Bukkit.getOnlinePlayers())91
{92
target.kickPlayer("Server restarting...");93
}95
Bukkit.getServer().shutdown();96
}97
});99
socket.close();100
}101
}102
catch(BindException ex)103
{104
// ignore105
}106
catch(IOException ex)107
{108
ex.printStackTrace();109
}110
}111
});113
new WorldCreator("creative")114
.type(WorldType.FLAT)115
.generateStructures(false)116
.createWorld();117
}119
@Override120
public void onDisable()121
{122
if(task != null && task.isCancelled())123
{124
task.cancel();125
}127
chairListener.onDisable();128
}130
@SuppressWarnings("deprecation")131
@Override132
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)133
{134
if(sender instanceof Player)135
{136
Player player = (Player) sender;138
if(label.equals("shutdown"))139
{140
if(!player.isOp())141
{142
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);143
return true;144
}146
String path = new File(".").getAbsolutePath();148
File file = new File(path + "/.shutdown");150
try151
{152
file.createNewFile();154
Util.sendCountdown(this, "Server shuts down in", 5, new Runnable()155
{156
@Override157
public void run()158
{159
for(Player target : Bukkit.getOnlinePlayers())160
{161
target.kickPlayer("Server stopped");162
}164
Bukkit.getServer().shutdown();165
}166
});167
}168
catch(IOException ex)169
{170
ex.printStackTrace();171
}172
}174
if(label.equals("head"))175
{176
ItemStack handitem = player.getInventory().getItemInMainHand();177
ItemStack headitem = player.getInventory().getHelmet();179
player.getInventory().setHelmet(handitem);180
player.getInventory().setItemInMainHand((new ItemStack(Material.AIR)));182
if(player.getGameMode() == GameMode.SURVIVAL)183
{184
if(headitem != null)185
{186
player.getInventory().addItem(headitem);187
}188
}189
}191
if(label.equals("skull"))192
{193
if(!player.isOp())194
{195
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);196
return true;197
}199
if(args.length != 1)200
{201
return false;202
}204
ItemStack skull = new ItemStack(Material.PLAYER_HEAD);205
SkullMeta meta = (SkullMeta) skull.getItemMeta();206
meta.setOwner(args[0]);207
skull.setItemMeta(meta);209
player.getInventory().addItem(skull);210
}212
if(label.equals("standby"))213
{214
if(!player.isOp())215
{216
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);217
return true;218
}220
if(args.length != 1)221
{222
return false;223
}225
String argument = args[0];227
if(!argument.equals("true") && !argument.equals("false"))228
{229
return false;230
}232
boolean enabled = argument.equals("true");233
standbyListener.setEnabled(enabled);235
player.sendMessage(ChatColor.GRAY + "Standby mode is now " + (enabled ? "enabled" : "disabled"));236
}238
if(label.equals("world"))239
{240
if(!player.isOp())241
{242
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);243
return true;244
}246
if(args.length != 1)247
{248
return false;249
}251
World world = Bukkit.getWorld(args[0]);253
if(world == null)254
{255
player.sendMessage(DefaultConstants.Messages.WORLD_NOT_EXIST);256
return true;257
}259
player.teleport(world.getSpawnLocation());260
}261
}263
return true;264
}265
}