A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: 2dc8675d3b6b35c6dd9b32889b6c7a0639d68ce2 (5399 bytes)[doc][blame][raw]
1
package de.typable.minecrafthub;3
import java.io.File;4
import java.io.IOException;5
import java.net.ServerSocket;6
import java.net.Socket;8
import org.bukkit.Bukkit;9
import org.bukkit.ChatColor;10
import org.bukkit.GameMode;11
import org.bukkit.Material;12
import org.bukkit.command.Command;13
import org.bukkit.command.CommandSender;14
import org.bukkit.entity.Player;15
import org.bukkit.inventory.ItemStack;16
import org.bukkit.inventory.meta.SkullMeta;17
import org.bukkit.plugin.Plugin;18
import org.bukkit.plugin.PluginManager;19
import org.bukkit.plugin.java.JavaPlugin;21
import de.typable.minecrafthub.constant.DefaultConstants;22
import de.typable.minecrafthub.event.AutoWorkbenchListener;23
import de.typable.minecrafthub.event.ChairListener;24
import de.typable.minecrafthub.event.ChestLockListener;25
import de.typable.minecrafthub.event.DoubleDoorListener;26
import de.typable.minecrafthub.event.EventListener;27
import de.typable.minecrafthub.event.StandbyListener;28
import de.typable.minecrafthub.util.Util;31
public class Main extends JavaPlugin32
{33
private PluginManager pluginManager;34
private StandbyListener standbyListener;35
private DoubleDoorListener doubleDoorListener;36
private ChairListener chairListener;37
private AutoWorkbenchListener autoWorkbenchListener;38
private ChestLockListener chestLockListener;39
private EventListener eventListener;41
private Plugin plugin;43
@Override44
public void onEnable()45
{46
plugin = this;48
pluginManager = Bukkit.getPluginManager();50
standbyListener = new StandbyListener(this);51
pluginManager.registerEvents(standbyListener, this);53
doubleDoorListener = new DoubleDoorListener();54
pluginManager.registerEvents(doubleDoorListener, this);56
chairListener = new ChairListener();57
pluginManager.registerEvents(chairListener, this);59
autoWorkbenchListener = new AutoWorkbenchListener();60
pluginManager.registerEvents(autoWorkbenchListener, this);62
chestLockListener = new ChestLockListener();63
pluginManager.registerEvents(chestLockListener, this);65
eventListener = new EventListener();66
pluginManager.registerEvents(eventListener, this);68
Bukkit.getScheduler().runTaskAsynchronously(this, new Runnable()69
{70
@Override71
public void run()72
{73
try(ServerSocket serverSocket = new ServerSocket(25560))74
{75
while(!serverSocket.isClosed())76
{77
Socket socket = serverSocket.accept();79
Util.sendCountdown(plugin, "Server restarts in", 5, new Runnable()80
{81
@Override82
public void run()83
{84
for(Player target : Bukkit.getOnlinePlayers())85
{86
target.kickPlayer("Server restarting...");87
}89
Bukkit.getServer().shutdown();90
}91
});93
socket.close();94
}95
}96
catch(IOException ex)97
{98
ex.printStackTrace();99
}100
}101
});102
}104
@SuppressWarnings("deprecation")105
@Override106
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)107
{108
if(sender instanceof Player)109
{110
Player player = (Player) sender;112
if(label.equals("shutdown")) {114
if(!player.isOp())115
{116
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);117
return true;118
}120
String path = new File(".").getAbsolutePath();122
File file = new File(path + "/.shutdown");124
try125
{126
file.createNewFile();128
Util.sendCountdown(this, "Server shuts down in", 5, new Runnable()129
{130
@Override131
public void run()132
{133
for(Player target : Bukkit.getOnlinePlayers())134
{135
target.kickPlayer("Server stopped");136
}138
Bukkit.getServer().shutdown();139
}140
});141
}142
catch(IOException ex)143
{144
ex.printStackTrace();145
}146
}148
if(label.equals("head"))149
{150
ItemStack handitem = player.getInventory().getItemInMainHand();151
ItemStack headitem = player.getInventory().getHelmet();153
player.getInventory().setHelmet(handitem);154
player.getInventory().setItemInMainHand((new ItemStack(Material.AIR)));156
if(player.getGameMode() == GameMode.SURVIVAL)157
{158
if(headitem != null)159
{160
player.getInventory().addItem(headitem);161
}162
}163
}165
if(label.equals("skull"))166
{167
if(!player.isOp())168
{169
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);170
return true;171
}173
if(args.length != 1)174
{175
return false;176
}178
ItemStack skull = new ItemStack(Material.PLAYER_HEAD);179
SkullMeta meta = (SkullMeta) skull.getItemMeta();180
meta.setOwner(args[0]);181
skull.setItemMeta(meta);183
player.getInventory().addItem(skull);184
}186
if(label.equals("standby"))187
{188
if(!player.isOp())189
{190
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);191
return true;192
}194
if(args.length != 1)195
{196
return false;197
}199
String argument = args[0];201
if(!argument.equals("true") && !argument.equals("false"))202
{203
return false;204
}206
boolean enabled = argument.equals("true");207
standbyListener.setEnabled(enabled);209
player.sendMessage(ChatColor.GRAY + "Standby mode is now " + (enabled ? "enabled" : "disabled"));210
}211
}213
return true;214
}215
}