so://phie

poppy

A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy

blob: de8e4baecf80736de96ebbe5f9568604b94df948 (6427 bytes)[doc][blame][raw]

1package de.typable.minecrafthub;

2

3import java.io.File;

4import java.io.IOException;

5import java.net.BindException;

6import java.net.ServerSocket;

7import java.net.Socket;

8

9import org.bukkit.Bukkit;

10import org.bukkit.ChatColor;

11import org.bukkit.GameMode;

12import org.bukkit.Material;

13import org.bukkit.World;

14import org.bukkit.WorldCreator;

15import org.bukkit.WorldType;

16import org.bukkit.command.Command;

17import org.bukkit.command.CommandSender;

18import org.bukkit.entity.Player;

19import org.bukkit.inventory.ItemStack;

20import org.bukkit.inventory.meta.SkullMeta;

21import org.bukkit.plugin.Plugin;

22import org.bukkit.plugin.PluginManager;

23import org.bukkit.plugin.java.JavaPlugin;

24import org.bukkit.scheduler.BukkitTask;

25

26import de.typable.minecrafthub.constant.DefaultConstants;

27import de.typable.minecrafthub.event.AutoWorkbenchListener;

28import de.typable.minecrafthub.event.ChairListener;

29import de.typable.minecrafthub.event.DoubleDoorListener;

30import de.typable.minecrafthub.event.EventListener;

31import de.typable.minecrafthub.event.LeavesDecayListener;

32import de.typable.minecrafthub.event.StandbyListener;

33import de.typable.minecrafthub.util.Util;

34

35

36public class Main extends JavaPlugin

37{

38 private PluginManager pluginManager;

39 private StandbyListener standbyListener;

40 private DoubleDoorListener doubleDoorListener;

41 private ChairListener chairListener;

42 private AutoWorkbenchListener autoWorkbenchListener;

43 private LeavesDecayListener leavesDecayListener;

44 private EventListener eventListener;

45

46 private Plugin plugin;

47 private BukkitTask task;

48

49 @Override

50 public void onEnable()

51 {

52 plugin = this;

53

54 pluginManager = Bukkit.getPluginManager();

55

56 standbyListener = new StandbyListener(this);

57 pluginManager.registerEvents(standbyListener, this);

58

59 doubleDoorListener = new DoubleDoorListener();

60 pluginManager.registerEvents(doubleDoorListener, this);

61

62 chairListener = new ChairListener();

63 pluginManager.registerEvents(chairListener, this);

64

65 autoWorkbenchListener = new AutoWorkbenchListener();

66 pluginManager.registerEvents(autoWorkbenchListener, this);

67

68 leavesDecayListener = new LeavesDecayListener(this);

69 pluginManager.registerEvents(leavesDecayListener, this);

70

71 eventListener = new EventListener();

72 pluginManager.registerEvents(eventListener, this);

73

74 task = Bukkit.getScheduler().runTaskAsynchronously(this, new Runnable()

75 {

76 @Override

77 public void run()

78 {

79 try(ServerSocket serverSocket = new ServerSocket(25560))

80 {

81 while(!serverSocket.isClosed())

82 {

83 Socket socket = serverSocket.accept();

84

85 Util.sendCountdown(plugin, "Server restarts in", 5, new Runnable()

86 {

87 @Override

88 public void run()

89 {

90 for(Player target : Bukkit.getOnlinePlayers())

91 {

92 target.kickPlayer("Server restarting...");

93 }

94

95 Bukkit.getServer().shutdown();

96 }

97 });

98

99 socket.close();

100 }

101 }

102 catch(BindException ex)

103 {

104 // ignore

105 }

106 catch(IOException ex)

107 {

108 ex.printStackTrace();

109 }

110 }

111 });

112

113 new WorldCreator("creative")

114 .type(WorldType.FLAT)

115 .generateStructures(false)

116 .createWorld();

117 }

118

119 @Override

120 public void onDisable()

121 {

122 if(task != null && task.isCancelled())

123 {

124 task.cancel();

125 }

126

127 chairListener.onDisable();

128 }

129

130 @SuppressWarnings("deprecation")

131 @Override

132 public boolean onCommand(CommandSender sender, Command command, String label, String[] args)

133 {

134 if(sender instanceof Player)

135 {

136 Player player = (Player) sender;

137

138 if(label.equals("shutdown"))

139 {

140 if(!player.isOp())

141 {

142 player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);

143 return true;

144 }

145

146 String path = new File(".").getAbsolutePath();

147

148 File file = new File(path + "/.shutdown");

149

150 try

151 {

152 file.createNewFile();

153

154 Util.sendCountdown(this, "Server shuts down in", 5, new Runnable()

155 {

156 @Override

157 public void run()

158 {

159 for(Player target : Bukkit.getOnlinePlayers())

160 {

161 target.kickPlayer("Server stopped");

162 }

163

164 Bukkit.getServer().shutdown();

165 }

166 });

167 }

168 catch(IOException ex)

169 {

170 ex.printStackTrace();

171 }

172 }

173

174 if(label.equals("head"))

175 {

176 ItemStack handitem = player.getInventory().getItemInMainHand();

177 ItemStack headitem = player.getInventory().getHelmet();

178

179 player.getInventory().setHelmet(handitem);

180 player.getInventory().setItemInMainHand((new ItemStack(Material.AIR)));

181

182 if(player.getGameMode() == GameMode.SURVIVAL)

183 {

184 if(headitem != null)

185 {

186 player.getInventory().addItem(headitem);

187 }

188 }

189 }

190

191 if(label.equals("skull"))

192 {

193 if(!player.isOp())

194 {

195 player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);

196 return true;

197 }

198

199 if(args.length != 1)

200 {

201 return false;

202 }

203

204 ItemStack skull = new ItemStack(Material.PLAYER_HEAD);

205 SkullMeta meta = (SkullMeta) skull.getItemMeta();

206 meta.setOwner(args[0]);

207 skull.setItemMeta(meta);

208

209 player.getInventory().addItem(skull);

210 }

211

212 if(label.equals("standby"))

213 {

214 if(!player.isOp())

215 {

216 player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);

217 return true;

218 }

219

220 if(args.length != 1)

221 {

222 return false;

223 }

224

225 String argument = args[0];

226

227 if(!argument.equals("true") && !argument.equals("false"))

228 {

229 return false;

230 }

231

232 boolean enabled = argument.equals("true");

233 standbyListener.setEnabled(enabled);

234

235 player.sendMessage(ChatColor.GRAY + "Standby mode is now " + (enabled ? "enabled" : "disabled"));

236 }

237

238 if(label.equals("world"))

239 {

240 if(!player.isOp())

241 {

242 player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);

243 return true;

244 }

245

246 if(args.length != 1)

247 {

248 return false;

249 }

250

251 World world = Bukkit.getWorld(args[0]);

252

253 if(world == null)

254 {

255 player.sendMessage(DefaultConstants.Messages.WORLD_NOT_EXIST);

256 return true;

257 }

258

259 player.teleport(world.getSpawnLocation());

260 }

261 }

262

263 return true;

264 }

265}