A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: 7da4cf63f967c78699ee36068ec85fd215cdc530 (6632 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.game.kit.KitGame;34
import de.typable.minecrafthub.util.Util;37
public class Main extends JavaPlugin38
{39
private PluginManager pluginManager;40
private StandbyListener standbyListener;41
private DoubleDoorListener doubleDoorListener;42
private ChairListener chairListener;43
private AutoWorkbenchListener autoWorkbenchListener;44
private LeavesDecayListener leavesDecayListener;45
private EventListener eventListener;47
private KitGame kitGame;49
private Plugin plugin;50
private BukkitTask task;52
@Override53
public void onEnable()54
{55
plugin = this;57
pluginManager = Bukkit.getPluginManager();59
standbyListener = new StandbyListener(this);60
pluginManager.registerEvents(standbyListener, this);62
doubleDoorListener = new DoubleDoorListener();63
pluginManager.registerEvents(doubleDoorListener, this);65
chairListener = new ChairListener();66
pluginManager.registerEvents(chairListener, this);68
autoWorkbenchListener = new AutoWorkbenchListener();69
pluginManager.registerEvents(autoWorkbenchListener, this);71
leavesDecayListener = new LeavesDecayListener(this);72
pluginManager.registerEvents(leavesDecayListener, this);74
eventListener = new EventListener();75
pluginManager.registerEvents(eventListener, this);77
kitGame = new KitGame();78
this.getCommand("kit").setExecutor(kitGame);79
pluginManager.registerEvents(kitGame, this);81
task = Bukkit.getScheduler().runTaskAsynchronously(this, new Runnable()82
{83
@Override84
public void run()85
{86
try(ServerSocket serverSocket = new ServerSocket(25560))87
{88
while(!serverSocket.isClosed())89
{90
Socket socket = serverSocket.accept();92
Util.sendCountdown(plugin, "Server restarts in", 5, new Runnable()93
{94
@Override95
public void run()96
{97
for(Player target : Bukkit.getOnlinePlayers())98
{99
target.kickPlayer("Server restarting...");100
}102
Bukkit.getServer().shutdown();103
}104
});106
socket.close();107
}108
}109
catch(BindException ex)110
{111
// ignore112
}113
catch(IOException ex)114
{115
ex.printStackTrace();116
}117
}118
});120
new WorldCreator("creative")121
.type(WorldType.FLAT)122
.generateStructures(false)123
.createWorld();124
}126
@Override127
public void onDisable()128
{129
if(task != null && task.isCancelled())130
{131
task.cancel();132
}134
chairListener.onDisable();135
}137
@SuppressWarnings("deprecation")138
@Override139
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)140
{141
if(sender instanceof Player)142
{143
Player player = (Player) sender;145
if(label.equals("shutdown"))146
{147
if(!player.isOp())148
{149
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);150
return true;151
}153
String path = new File(".").getAbsolutePath();155
File file = new File(path + "/.shutdown");157
try158
{159
file.createNewFile();161
Util.sendCountdown(this, "Server shuts down in", 5, new Runnable()162
{163
@Override164
public void run()165
{166
for(Player target : Bukkit.getOnlinePlayers())167
{168
target.kickPlayer("Server stopped");169
}171
Bukkit.getServer().shutdown();172
}173
});174
}175
catch(IOException ex)176
{177
ex.printStackTrace();178
}179
}181
if(label.equals("head"))182
{183
ItemStack handitem = player.getInventory().getItemInMainHand();184
ItemStack headitem = player.getInventory().getHelmet();186
player.getInventory().setHelmet(handitem);187
player.getInventory().setItemInMainHand((new ItemStack(Material.AIR)));189
if(player.getGameMode() == GameMode.SURVIVAL)190
{191
if(headitem != null)192
{193
player.getInventory().addItem(headitem);194
}195
}196
}198
if(label.equals("skull"))199
{200
if(!player.isOp())201
{202
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);203
return true;204
}206
if(args.length != 1)207
{208
return false;209
}211
ItemStack skull = new ItemStack(Material.PLAYER_HEAD);212
SkullMeta meta = (SkullMeta) skull.getItemMeta();213
meta.setOwner(args[0]);214
skull.setItemMeta(meta);216
player.getInventory().addItem(skull);217
}219
if(label.equals("standby"))220
{221
if(!player.isOp())222
{223
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);224
return true;225
}227
if(args.length != 1)228
{229
return false;230
}232
String argument = args[0];234
if(!argument.equals("true") && !argument.equals("false"))235
{236
return false;237
}239
boolean enabled = argument.equals("true");240
standbyListener.setEnabled(enabled);242
player.sendMessage(ChatColor.GRAY + "Standby mode is now " + (enabled ? "enabled" : "disabled"));243
}245
if(label.equals("world"))246
{247
if(!player.isOp())248
{249
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);250
return true;251
}253
if(args.length != 1)254
{255
return false;256
}258
World world = Bukkit.getWorld(args[0]);260
if(world == null)261
{262
player.sendMessage(DefaultConstants.Messages.WORLD_NOT_EXIST);263
return true;264
}266
player.teleport(world.getSpawnLocation());267
}268
}270
return true;271
}272
}