so://phie

poppy

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

blob: 3b6e776287bb7f47848c852d4799d2837e0a0281 (7810 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.Location;

13import org.bukkit.Material;

14import org.bukkit.World;

15import org.bukkit.WorldCreator;

16import org.bukkit.WorldType;

17import org.bukkit.command.Command;

18import org.bukkit.command.CommandSender;

19import org.bukkit.entity.Player;

20import org.bukkit.entity.Entity;

21import org.bukkit.inventory.ItemStack;

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

23import org.bukkit.inventory.meta.BookMeta;

24import org.bukkit.material.Tree;

25import org.bukkit.plugin.Plugin;

26import org.bukkit.plugin.PluginManager;

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

28

29import de.typable.minecrafthub.constant.Constants;

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

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

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

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

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

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

36import de.typable.minecrafthub.config.Config;

37

38

39public class Main extends JavaPlugin

40{

41 private PluginManager pluginManager;

42 private DoubleDoorListener doubleDoorListener;

43 private ChairListener chairListener;

44 private AutoWorkbenchListener autoWorkbenchListener;

45 private LeavesDecayListener leavesDecayListener;

46 private EventListener eventListener;

47

48 private Plugin plugin;

49 private Config config;

50

51 @Override

52 public void onEnable()

53 {

54 plugin = this;

55 config = new Config("config/minecraft-hub.yml");

56

57 pluginManager = Bukkit.getPluginManager();

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

75 @Override

76 public void onDisable()

77 {

78 chairListener.onDisable();

79 }

80

81 @SuppressWarnings("deprecation")

82 @Override

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

84 {

85 if(sender instanceof Player)

86 {

87 Player player = (Player) sender;

88

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

90 {

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

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

93

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

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

96

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

98 {

99 if(headitem != null)

100 {

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

102 }

103 }

104 }

105

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

107 {

108 if(!player.isOp())

109 {

110 player.sendMessage(Constants.Messages.NOT_ENOUGH_PERMISSION);

111 return true;

112 }

113

114 if(args.length != 1)

115 {

116 return false;

117 }

118

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

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

121 meta.setOwner(args[0]);

122 skull.setItemMeta(meta);

123

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

125 }

126

127 if(label.equals("spawn"))

128 {

129 final Location location = Bukkit.getWorld("world").getSpawnLocation();

130

131 if(travelTo(player, location))

132 {

133 player.sendMessage(ChatColor.GRAY + "You've been teleported to spawn.");

134 }

135 }

136

137 if(label.equals("invsee"))

138 {

139 if(args.length == 0) {

140 return false;

141 }

142

143 if(Bukkit.getPlayer(args[0]) == null)

144 {

145 player.sendMessage(ChatColor.RED + "Player not found!");

146 return true;

147 }

148

149 if(!player.isOp())

150 {

151 player.sendMessage(Constants.Messages.NOT_ENOUGH_PERMISSION);

152 return true;

153 }

154

155 Player target = Bukkit.getPlayer(args[0]);

156

157 player.openInventory(target.getInventory());

158

159 if(args.length == 1 && args[1].toLowerCase() == "enderchest")

160 {

161 player.openInventory(target.getEnderChest());

162 }

163 }

164

165 if(label.equals("sethome"))

166 {

167 try

168 {

169 config.setHome(player);

170 player.sendMessage(ChatColor.YELLOW + "Home point set.");

171 }

172 catch(Exception ex)

173 {

174 player.sendMessage(Constants.Messages.FAILED_TO_SAVE_CONFIG_FILE);

175 }

176 }

177

178 if(label.equals("home"))

179 {

180 final Location location = config.getHome(player);

181

182 if(location == null)

183 {

184 player.sendMessage(ChatColor.RED + "You've don't have a home point.");

185 return true;

186 }

187

188 if(travelTo(player, location))

189 {

190 player.sendMessage(ChatColor.GRAY + "You've been teleported to your home.");

191 }

192 }

193

194 if(label.equals("setwarp"))

195 {

196 if(args.length != 1)

197 {

198 return false;

199 }

200

201 final String name = args[0];

202

203 if(!payFee(player, Material.COMPASS, 1))

204 {

205 player.sendMessage(ChatColor.RED + "The fee for creating a warp point is 1 compass!");

206 return true;

207 }

208

209 try

210 {

211 if(!config.setWarp(name, player.getLocation()))

212 {

213 player.sendMessage(ChatColor.RED + "Warp point " + name + " already exists!");

214 return true;

215 }

216

217 player.sendMessage(ChatColor.YELLOW + "Warp point " + name + " set.");

218 }

219 catch(Exception ex)

220 {

221 player.sendMessage(Constants.Messages.FAILED_TO_SAVE_CONFIG_FILE);

222 }

223 }

224

225 if(label.equals("warp"))

226 {

227 if(args.length != 1)

228 {

229 return false;

230 }

231

232 final String name = args[0];

233 final Location location = config.getWarp(name);

234

235 if(location == null)

236 {

237 player.sendMessage(ChatColor.RED + "Warp point " + name + " doesn't exist!");

238 return true;

239 }

240

241 if(travelTo(player, location))

242 {

243 player.sendMessage(ChatColor.GRAY + "You've been teleported to warp point " + name + ".");

244 }

245 }

246

247 if(label.equals("info"))

248 {

249 final ItemStack book = new ItemStack(Material.WRITTEN_BOOK);

250 final BookMeta meta = (BookMeta) book.getItemMeta();

251 meta.setTitle("Info");

252 meta.setAuthor("Server");

253 meta.setPages(config.getInfoPages());

254 book.setItemMeta(meta);

255

256 player.openBook(book);

257 }

258 }

259

260 return true;

261 }

262

263 private boolean travelTo(final Player player, final Location location)

264 {

265 final int fee = Util.calcTravelFee(player.getLocation(), location);

266 final String unit = fee == 1 ? "emerald" : "emeralds";

267

268 if(!payFee(player, Material.EMERALD, fee) && player.getGameMode() == GameMode.SURVIVAL)

269 {

270 player.sendMessage(ChatColor.RED + "Not enough emeralds to teleport! Travel fee: " + fee + " " + unit);

271 return false;

272 }

273

274 if(player.getVehicle() != null)

275 {

276 Entity vehicle = player.getVehicle();

277 vehicle.eject();

278 player.teleport(location);

279

280 Bukkit.getScheduler().runTaskLater(plugin, () -> {

281 vehicle.teleport(location);

282 }, 3);

283

284 Bukkit.getScheduler().runTaskLater(plugin, () -> {

285 vehicle.addPassenger(player);

286 }, 6);

287 }

288 else

289 {

290 player.teleport(location);

291 }

292

293 return true;

294 }

295

296 private boolean payFee(final Player player, final Material unit, final int amount)

297 {

298 final ItemStack item = player.getInventory().getItemInMainHand();

299

300 if(item.getType() != unit || item.getAmount() < amount)

301 {

302 return false;

303 }

304

305 item.setAmount(item.getAmount() - amount);

306

307 return true;

308 }

309}