A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: 46bef07934b492badb0a579ebe4bb669aa3b26d4 (5185 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.DoubleDoorListener;25
import de.typable.minecrafthub.event.EventListener;26
import de.typable.minecrafthub.event.StandbyListener;27
import de.typable.minecrafthub.util.Util;30
public class Main extends JavaPlugin31
{32
private PluginManager pluginManager;33
private StandbyListener standbyListener;34
private DoubleDoorListener doubleDoorListener;35
private ChairListener chairListener;36
private AutoWorkbenchListener autoWorkbenchListener;37
private EventListener eventListener;39
private Plugin plugin;41
@Override42
public void onEnable()43
{44
plugin = this;46
pluginManager = Bukkit.getPluginManager();48
standbyListener = new StandbyListener(this);49
pluginManager.registerEvents(standbyListener, this);51
doubleDoorListener = new DoubleDoorListener();52
pluginManager.registerEvents(doubleDoorListener, this);54
chairListener = new ChairListener();55
pluginManager.registerEvents(chairListener, this);57
autoWorkbenchListener = new AutoWorkbenchListener();58
pluginManager.registerEvents(autoWorkbenchListener, this);60
eventListener = new EventListener();61
pluginManager.registerEvents(eventListener, this);63
Bukkit.getScheduler().runTaskAsynchronously(this, new Runnable()64
{65
@Override66
public void run()67
{68
try(ServerSocket serverSocket = new ServerSocket(25560))69
{70
while(!serverSocket.isClosed())71
{72
Socket socket = serverSocket.accept();74
Util.sendCountdown(plugin, "Server restarts in", 5, new Runnable()75
{76
@Override77
public void run()78
{79
for(Player target : Bukkit.getOnlinePlayers())80
{81
target.kickPlayer("Server restarting...");82
}84
Bukkit.getServer().shutdown();85
}86
});88
socket.close();89
}90
}91
catch(IOException ex)92
{93
ex.printStackTrace();94
}95
}96
});97
}99
@SuppressWarnings("deprecation")100
@Override101
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)102
{103
if(sender instanceof Player)104
{105
Player player = (Player) sender;107
if(label.equals("shutdown")) {109
if(!player.isOp())110
{111
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);112
return true;113
}115
String path = new File(".").getAbsolutePath();117
File file = new File(path + "/.shutdown");119
try120
{121
file.createNewFile();123
Util.sendCountdown(this, "Server shuts down in", 5, new Runnable()124
{125
@Override126
public void run()127
{128
for(Player target : Bukkit.getOnlinePlayers())129
{130
target.kickPlayer("Server stopped");131
}133
Bukkit.getServer().shutdown();134
}135
});136
}137
catch(IOException ex)138
{139
ex.printStackTrace();140
}141
}143
if(label.equals("head"))144
{145
ItemStack handitem = player.getInventory().getItemInMainHand();146
ItemStack headitem = player.getInventory().getHelmet();148
player.getInventory().setHelmet(handitem);149
player.getInventory().setItemInMainHand((new ItemStack(Material.AIR)));151
if(player.getGameMode() == GameMode.SURVIVAL)152
{153
if(headitem != null)154
{155
player.getInventory().addItem(headitem);156
}157
}158
}160
if(label.equals("skull"))161
{162
if(!player.isOp())163
{164
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);165
return true;166
}168
if(args.length != 1)169
{170
return false;171
}173
ItemStack skull = new ItemStack(Material.PLAYER_HEAD);174
SkullMeta meta = (SkullMeta) skull.getItemMeta();175
meta.setOwner(args[0]);176
skull.setItemMeta(meta);178
player.getInventory().addItem(skull);179
}181
if(label.equals("standby"))182
{183
if(!player.isOp())184
{185
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);186
return true;187
}189
if(args.length != 1)190
{191
return false;192
}194
String argument = args[0];196
if(!argument.equals("true") && !argument.equals("false"))197
{198
return false;199
}201
boolean enabled = argument.equals("true");202
standbyListener.setEnabled(enabled);204
player.sendMessage(ChatColor.GRAY + "Standby mode is now " + (enabled ? "enabled" : "disabled"));205
}206
}208
return true;209
}210
}