A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: 852625fa8eddd4e1d83e7337833b9e4db5a20d47 (5502 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.StandbyListener;29
import de.typable.minecrafthub.util.Util;32
public class Main extends JavaPlugin33
{34
private PluginManager pluginManager;35
private StandbyListener standbyListener;36
private DoubleDoorListener doubleDoorListener;37
private ChairListener chairListener;38
private AutoWorkbenchListener autoWorkbenchListener;39
private EventListener eventListener;41
private Plugin plugin;42
private BukkitTask task;44
@Override45
public void onEnable()46
{47
plugin = this;49
pluginManager = Bukkit.getPluginManager();51
standbyListener = new StandbyListener(this);52
pluginManager.registerEvents(standbyListener, this);54
doubleDoorListener = new DoubleDoorListener();55
pluginManager.registerEvents(doubleDoorListener, this);57
chairListener = new ChairListener();58
pluginManager.registerEvents(chairListener, this);60
autoWorkbenchListener = new AutoWorkbenchListener();61
pluginManager.registerEvents(autoWorkbenchListener, this);63
eventListener = new EventListener();64
pluginManager.registerEvents(eventListener, this);66
task = Bukkit.getScheduler().runTaskAsynchronously(this, new Runnable()67
{68
@Override69
public void run()70
{71
try(ServerSocket serverSocket = new ServerSocket(25560))72
{73
while(!serverSocket.isClosed())74
{75
Socket socket = serverSocket.accept();77
Util.sendCountdown(plugin, "Server restarts in", 5, new Runnable()78
{79
@Override80
public void run()81
{82
for(Player target : Bukkit.getOnlinePlayers())83
{84
target.kickPlayer("Server restarting...");85
}87
Bukkit.getServer().shutdown();88
}89
});91
socket.close();92
}93
}94
catch(BindException ex)95
{96
// ignore97
}98
catch(IOException ex)99
{100
ex.printStackTrace();101
}102
}103
});104
}106
@Override107
public void onDisable()108
{109
if(task != null && task.isCancelled())110
{111
task.cancel();112
}114
chairListener.onDisable();115
}117
@SuppressWarnings("deprecation")118
@Override119
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)120
{121
if(sender instanceof Player)122
{123
Player player = (Player) sender;125
if(label.equals("shutdown")) {127
if(!player.isOp())128
{129
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);130
return true;131
}133
String path = new File(".").getAbsolutePath();135
File file = new File(path + "/.shutdown");137
try138
{139
file.createNewFile();141
Util.sendCountdown(this, "Server shuts down in", 5, new Runnable()142
{143
@Override144
public void run()145
{146
for(Player target : Bukkit.getOnlinePlayers())147
{148
target.kickPlayer("Server stopped");149
}151
Bukkit.getServer().shutdown();152
}153
});154
}155
catch(IOException ex)156
{157
ex.printStackTrace();158
}159
}161
if(label.equals("head"))162
{163
ItemStack handitem = player.getInventory().getItemInMainHand();164
ItemStack headitem = player.getInventory().getHelmet();166
player.getInventory().setHelmet(handitem);167
player.getInventory().setItemInMainHand((new ItemStack(Material.AIR)));169
if(player.getGameMode() == GameMode.SURVIVAL)170
{171
if(headitem != null)172
{173
player.getInventory().addItem(headitem);174
}175
}176
}178
if(label.equals("skull"))179
{180
if(!player.isOp())181
{182
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);183
return true;184
}186
if(args.length != 1)187
{188
return false;189
}191
ItemStack skull = new ItemStack(Material.PLAYER_HEAD);192
SkullMeta meta = (SkullMeta) skull.getItemMeta();193
meta.setOwner(args[0]);194
skull.setItemMeta(meta);196
player.getInventory().addItem(skull);197
}199
if(label.equals("standby"))200
{201
if(!player.isOp())202
{203
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);204
return true;205
}207
if(args.length != 1)208
{209
return false;210
}212
String argument = args[0];214
if(!argument.equals("true") && !argument.equals("false"))215
{216
return false;217
}219
boolean enabled = argument.equals("true");220
standbyListener.setEnabled(enabled);222
player.sendMessage(ChatColor.GRAY + "Standby mode is now " + (enabled ? "enabled" : "disabled"));223
}224
}226
return true;227
}228
}