A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: 952977adae6766611c255677b06e96dc17443c85 (5933 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.command.Command;14
import org.bukkit.command.CommandSender;15
import org.bukkit.entity.Player;16
import org.bukkit.inventory.ItemStack;17
import org.bukkit.inventory.meta.SkullMeta;18
import org.bukkit.plugin.Plugin;19
import org.bukkit.plugin.PluginManager;20
import org.bukkit.plugin.java.JavaPlugin;21
import org.bukkit.scheduler.BukkitTask;23
import de.typable.minecrafthub.constant.DefaultConstants;24
import de.typable.minecrafthub.event.AutoWorkbenchListener;25
import de.typable.minecrafthub.event.ChairListener;26
import de.typable.minecrafthub.event.DoubleDoorListener;27
import de.typable.minecrafthub.event.EventListener;28
import de.typable.minecrafthub.event.LeavesDecayListener;29
import de.typable.minecrafthub.event.StandbyListener;30
import de.typable.minecrafthub.game.kit.KitGame;31
import de.typable.minecrafthub.util.Util;34
public class Main extends JavaPlugin35
{36
private PluginManager pluginManager;37
private StandbyListener standbyListener;38
private DoubleDoorListener doubleDoorListener;39
private ChairListener chairListener;40
private AutoWorkbenchListener autoWorkbenchListener;41
private LeavesDecayListener leavesDecayListener;42
private EventListener eventListener;44
private KitGame kitGame;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
kitGame = new KitGame();75
this.getCommand("kit").setExecutor(kitGame);76
pluginManager.registerEvents(kitGame, this);78
task = Bukkit.getScheduler().runTaskAsynchronously(this, new Runnable()79
{80
@Override81
public void run()82
{83
try(ServerSocket serverSocket = new ServerSocket(25560))84
{85
while(!serverSocket.isClosed())86
{87
Socket socket = serverSocket.accept();89
Util.sendCountdown(plugin, "Server restarts in", 5, new Runnable()90
{91
@Override92
public void run()93
{94
for(Player target : Bukkit.getOnlinePlayers())95
{96
target.kickPlayer("Server restarting...");97
}99
Bukkit.getServer().shutdown();100
}101
});103
socket.close();104
}105
}106
catch(BindException ex)107
{108
// ignore109
}110
catch(IOException ex)111
{112
ex.printStackTrace();113
}114
}115
});116
}118
@Override119
public void onDisable()120
{121
if(task != null && task.isCancelled())122
{123
task.cancel();124
}126
chairListener.onDisable();127
}129
@SuppressWarnings("deprecation")130
@Override131
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)132
{133
if(sender instanceof Player)134
{135
Player player = (Player) sender;137
if(label.equals("shutdown"))138
{139
if(!player.isOp())140
{141
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);142
return true;143
}145
String path = new File(".").getAbsolutePath();147
File file = new File(path + "/.shutdown");149
try150
{151
file.createNewFile();153
Util.sendCountdown(this, "Server shuts down in", 5, new Runnable()154
{155
@Override156
public void run()157
{158
for(Player target : Bukkit.getOnlinePlayers())159
{160
target.kickPlayer("Server stopped");161
}163
Bukkit.getServer().shutdown();164
}165
});166
}167
catch(IOException ex)168
{169
ex.printStackTrace();170
}171
}173
if(label.equals("head"))174
{175
ItemStack handitem = player.getInventory().getItemInMainHand();176
ItemStack headitem = player.getInventory().getHelmet();178
player.getInventory().setHelmet(handitem);179
player.getInventory().setItemInMainHand((new ItemStack(Material.AIR)));181
if(player.getGameMode() == GameMode.SURVIVAL)182
{183
if(headitem != null)184
{185
player.getInventory().addItem(headitem);186
}187
}188
}190
if(label.equals("skull"))191
{192
if(!player.isOp())193
{194
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);195
return true;196
}198
if(args.length != 1)199
{200
return false;201
}203
ItemStack skull = new ItemStack(Material.PLAYER_HEAD);204
SkullMeta meta = (SkullMeta) skull.getItemMeta();205
meta.setOwner(args[0]);206
skull.setItemMeta(meta);208
player.getInventory().addItem(skull);209
}211
if(label.equals("standby"))212
{213
if(!player.isOp())214
{215
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);216
return true;217
}219
if(args.length != 1)220
{221
return false;222
}224
String argument = args[0];226
if(!argument.equals("true") && !argument.equals("false"))227
{228
return false;229
}231
boolean enabled = argument.equals("true");232
standbyListener.setEnabled(enabled);234
player.sendMessage(ChatColor.GRAY + "Standby mode is now " + (enabled ? "enabled" : "disabled"));235
}236
}238
return true;239
}240
}