A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: 3a604fe9740a6b9ffda3c55dbfc34e687b715029 (7469 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.Location;13
import org.bukkit.Material;14
import org.bukkit.World;15
import org.bukkit.WorldCreator;16
import org.bukkit.WorldType;17
import org.bukkit.command.Command;18
import org.bukkit.command.CommandSender;19
import org.bukkit.entity.Player;20
import org.bukkit.inventory.ItemStack;21
import org.bukkit.inventory.meta.SkullMeta;22
import org.bukkit.inventory.meta.BookMeta;23
import org.bukkit.material.Tree;24
import org.bukkit.plugin.Plugin;25
import org.bukkit.plugin.PluginManager;26
import org.bukkit.plugin.java.JavaPlugin;28
import de.typable.minecrafthub.constant.Constants;29
import de.typable.minecrafthub.event.AutoWorkbenchListener;30
import de.typable.minecrafthub.event.ChairListener;31
import de.typable.minecrafthub.event.DoubleDoorListener;32
import de.typable.minecrafthub.event.EventListener;33
import de.typable.minecrafthub.event.LeavesDecayListener;34
import de.typable.minecrafthub.util.Util;35
import de.typable.minecrafthub.config.Config;38
public class Main extends JavaPlugin39
{40
private PluginManager pluginManager;41
private DoubleDoorListener doubleDoorListener;42
private ChairListener chairListener;43
private AutoWorkbenchListener autoWorkbenchListener;44
private LeavesDecayListener leavesDecayListener;45
private EventListener eventListener;47
private Plugin plugin;48
private Config config;50
@Override51
public void onEnable()52
{53
plugin = this;54
config = new Config("config/minecraft-hub.yml");56
pluginManager = Bukkit.getPluginManager();58
doubleDoorListener = new DoubleDoorListener();59
pluginManager.registerEvents(doubleDoorListener, this);61
chairListener = new ChairListener();62
pluginManager.registerEvents(chairListener, this);64
autoWorkbenchListener = new AutoWorkbenchListener();65
pluginManager.registerEvents(autoWorkbenchListener, this);67
leavesDecayListener = new LeavesDecayListener(this);68
pluginManager.registerEvents(leavesDecayListener, this);70
eventListener = new EventListener();71
pluginManager.registerEvents(eventListener, this);72
}74
@Override75
public void onDisable()76
{77
chairListener.onDisable();78
}80
@Override81
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)82
{83
if(sender instanceof Player)84
{85
Player player = (Player) sender;87
switch(label)88
{89
case "head":90
return setItemAsHead(player, args);91
case "skull":92
return getSkullForName(player, args);93
case "invsee":94
return openInventoryForPlayer(player, args);95
case "info":96
return openInfoBook(player, args);97
case "spawn":98
return teleportToSpawn(player, args);99
case "home":100
return teleportToHome(player, args);101
case "warp":102
return teleportToWarppoint(player, args);103
case "sethome":104
return setHome(player, args);105
case "setwarp":106
return addWarppoint(player, args);107
default:108
return false;109
}110
}112
return true;113
}115
private boolean setItemAsHead(final Player player, final String[] args)116
{117
final ItemStack item = player.getInventory().getItemInMainHand();118
final ItemStack head = player.getInventory().getHelmet();120
player.getInventory().setHelmet(item);121
player.getInventory().setItemInMainHand((new ItemStack(Material.AIR)));123
if(player.getGameMode() == GameMode.SURVIVAL)124
{125
if(head != null)126
{127
player.getInventory().addItem(head);128
}129
}131
return true;132
}134
@SuppressWarnings("deprecation")135
private boolean getSkullForName(final Player player, final String[] args)136
{137
if(!player.isOp())138
{139
player.sendMessage(Constants.Messages.NOT_ENOUGH_PERMISSION);140
return true;141
}143
if(args.length != 1)144
{145
return false;146
}148
final String name = args[0];149
final ItemStack skull = new ItemStack(Material.PLAYER_HEAD);150
final SkullMeta meta = (SkullMeta) skull.getItemMeta();151
meta.setOwner(name);152
skull.setItemMeta(meta);154
player.getInventory().addItem(skull);156
return true;157
}159
private boolean openInventoryForPlayer(final Player player, final String[] args)160
{161
if(args.length == 0)162
{163
return false;164
}166
if(!player.isOp())167
{168
player.sendMessage(Constants.Messages.NOT_ENOUGH_PERMISSION);169
return true;170
}172
final Player target = Bukkit.getPlayer(args[0]);174
if(target == null)175
{176
player.sendMessage(ChatColor.RED + "Player not found!");177
return true;178
}180
player.openInventory(target.getInventory());182
return true;183
}185
private boolean openInfoBook(final Player player, final String[] args)186
{187
final ItemStack book = new ItemStack(Material.WRITTEN_BOOK);188
final BookMeta meta = (BookMeta) book.getItemMeta();189
meta.setTitle("Info");190
meta.setAuthor("Server");191
meta.setPages(config.getInfoPages());192
book.setItemMeta(meta);194
player.openBook(book);196
return true;197
}199
private boolean teleportToSpawn(final Player player, final String[] args)200
{201
final Location location = Bukkit.getWorld("world").getSpawnLocation();203
if(Util.travelTo(plugin, player, location))204
{205
player.sendMessage(ChatColor.GRAY + "You've been teleported to spawn.");206
}208
return true;209
}211
private boolean teleportToHome(final Player player, final String[] args)212
{213
final Location location = config.getHome(player);215
if(location == null)216
{217
player.sendMessage(ChatColor.RED + "You've don't have a home point.");218
return true;219
}221
if(Util.travelTo(plugin, player, location))222
{223
player.sendMessage(ChatColor.GRAY + "You've been teleported to your home.");224
}226
return true;227
}229
private boolean teleportToWarppoint(final Player player, final String[] args)230
{231
if(args.length != 1)232
{233
return false;234
}236
final String name = args[0];237
final Location location = config.getWarp(name);239
if(location == null)240
{241
player.sendMessage(ChatColor.RED + "Warp point " + name + " doesn't exist!");242
return true;243
}245
if(Util.travelTo(plugin, player, location))246
{247
player.sendMessage(ChatColor.GRAY + "You've been teleported to warp point " + name + ".");248
}250
return true;251
}253
private boolean setHome(final Player player, final String[] args)254
{255
try256
{257
config.setHome(player);258
player.sendMessage(ChatColor.YELLOW + "Home point set.");259
}260
catch(Exception ex)261
{262
player.sendMessage(Constants.Messages.FAILED_TO_SAVE_CONFIG_FILE);263
}265
return true;266
}268
private boolean addWarppoint(final Player player, final String[] args)269
{270
if(args.length != 1)271
{272
return false;273
}275
final String name = args[0];277
if(!Util.payFee(player, Material.COMPASS, 1))278
{279
player.sendMessage(ChatColor.RED + "The fee for creating a warp point is 1 compass!");280
return true;281
}283
try284
{285
if(!config.setWarp(name, player.getLocation()))286
{287
player.sendMessage(ChatColor.RED + "Warp point " + name + " already exists!");288
return true;289
}291
player.sendMessage(ChatColor.YELLOW + "Warp point " + name + " set.");292
}293
catch(Exception ex)294
{295
player.sendMessage(Constants.Messages.FAILED_TO_SAVE_CONFIG_FILE);296
}298
return true;299
}301
}