A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: 579361e3a8eda5a8741b11a7544ee475d45e2055 (7115 bytes)[doc][blame][raw]
1
package poppy;3
import org.bukkit.Bukkit;4
import org.bukkit.ChatColor;5
import org.bukkit.GameMode;6
import org.bukkit.Location;7
import org.bukkit.Material;8
import org.bukkit.command.Command;9
import org.bukkit.command.CommandSender;10
import org.bukkit.entity.Player;11
import org.bukkit.inventory.ItemStack;12
import org.bukkit.inventory.meta.SkullMeta;13
import org.bukkit.inventory.meta.BookMeta;14
import org.bukkit.plugin.Plugin;15
import org.bukkit.plugin.PluginManager;16
import org.bukkit.plugin.java.JavaPlugin;18
import poppy.modules.AutoWorkbenchModule;19
import poppy.modules.CauldronModule;20
import poppy.modules.ChairModule;21
import poppy.modules.DoubleDoorModule;22
import poppy.modules.CommonModule;23
import poppy.modules.LeavesDecayModule;26
public class Main extends JavaPlugin27
{28
private Plugin plugin;29
private Config config;30
private PluginManager pluginManager;32
private CommonModule commonModule;33
private DoubleDoorModule doubleDoorModule;34
private ChairModule chairModule;35
private AutoWorkbenchModule autoWorkbenchModule;36
private LeavesDecayModule leavesDecayModule;37
private CauldronModule cauldronModule;39
@Override40
public void onEnable()41
{42
plugin = this;43
config = new Config("config/poppy.yml");45
pluginManager = Bukkit.getPluginManager();47
commonModule = new CommonModule();48
pluginManager.registerEvents(commonModule, this);50
doubleDoorModule = new DoubleDoorModule();51
pluginManager.registerEvents(doubleDoorModule, this);53
chairModule = new ChairModule();54
pluginManager.registerEvents(chairModule, this);56
autoWorkbenchModule = new AutoWorkbenchModule();57
pluginManager.registerEvents(autoWorkbenchModule, this);59
leavesDecayModule = new LeavesDecayModule(this);60
pluginManager.registerEvents(leavesDecayModule, this);62
cauldronModule = new CauldronModule(this);63
pluginManager.registerEvents(cauldronModule, this);64
}66
@Override67
public void onDisable()68
{69
chairModule.onDisable();70
}72
@Override73
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)74
{75
if(sender instanceof Player)76
{77
Player player = (Player) sender;79
switch(label)80
{81
case "head":82
return setItemAsHead(player, args);83
case "skull":84
return getSkullForName(player, args);85
case "invsee":86
return openInventoryForPlayer(player, args);87
case "info":88
return openInfoBook(player, args);89
case "spawn":90
return teleportToSpawn(player, args);91
case "home":92
return teleportToHome(player, args);93
case "warp":94
return teleportToWarppoint(player, args);95
case "sethome":96
return setHome(player, args);97
case "setwarp":98
return setWarppoint(player, args);99
default:100
return false;101
}102
}104
return true;105
}107
private boolean setItemAsHead(final Player player, final String[] args)108
{109
final ItemStack item = player.getInventory().getItemInMainHand();110
final ItemStack head = player.getInventory().getHelmet();112
player.getInventory().setHelmet(item);113
player.getInventory().setItemInMainHand((new ItemStack(Material.AIR)));115
if(player.getGameMode() == GameMode.SURVIVAL)116
{117
if(head != null)118
{119
player.getInventory().addItem(head);120
}121
}123
return true;124
}126
@SuppressWarnings("deprecation")127
private boolean getSkullForName(final Player player, final String[] args)128
{129
if(!player.isOp())130
{131
player.sendMessage(Constants.Messages.NOT_ENOUGH_PERMISSION);132
return true;133
}135
if(args.length != 1)136
{137
return false;138
}140
final String name = args[0];141
final ItemStack skull = new ItemStack(Material.PLAYER_HEAD);142
final SkullMeta meta = (SkullMeta) skull.getItemMeta();143
meta.setOwner(name);144
skull.setItemMeta(meta);146
player.getInventory().addItem(skull);148
return true;149
}151
private boolean openInventoryForPlayer(final Player player, final String[] args)152
{153
if(args.length == 0)154
{155
return false;156
}158
if(!player.isOp())159
{160
player.sendMessage(Constants.Messages.NOT_ENOUGH_PERMISSION);161
return true;162
}164
final Player target = Bukkit.getPlayer(args[0]);166
if(target == null)167
{168
player.sendMessage(ChatColor.RED + "Player not found!");169
return true;170
}172
player.openInventory(target.getInventory());174
return true;175
}177
private boolean openInfoBook(final Player player, final String[] args)178
{179
final ItemStack book = new ItemStack(Material.WRITTEN_BOOK);180
final BookMeta meta = (BookMeta) book.getItemMeta();181
meta.setTitle("Info");182
meta.setAuthor("Server");183
meta.setPages(config.getInfoPages());184
book.setItemMeta(meta);186
player.openBook(book);188
return true;189
}191
private boolean teleportToSpawn(final Player player, final String[] args)192
{193
final Location location = Bukkit.getWorld("world").getSpawnLocation();195
if(Utils.travelTo(plugin, player, location))196
{197
player.sendMessage(ChatColor.GRAY + "You've been teleported to spawn.");198
}200
return true;201
}203
private boolean teleportToHome(final Player player, final String[] args)204
{205
final Location location = config.getHome(player);207
if(location == null)208
{209
player.sendMessage(ChatColor.RED + "You've don't have a home point.");210
return true;211
}213
if(Utils.travelTo(plugin, player, location))214
{215
player.sendMessage(ChatColor.GRAY + "You've been teleported to your home.");216
}218
return true;219
}221
private boolean teleportToWarppoint(final Player player, final String[] args)222
{223
if(args.length != 1)224
{225
return false;226
}228
final String name = args[0];229
final Location location = config.getWarp(name.toLowerCase());231
if(location == null)232
{233
player.sendMessage(ChatColor.RED + "Warp point " + name + " doesn't exist!");234
return true;235
}237
if(Utils.travelTo(plugin, player, location))238
{239
player.sendMessage(ChatColor.GRAY + "You've been teleported to warp point " + name + ".");240
}242
return true;243
}245
private boolean setHome(final Player player, final String[] args)246
{247
try248
{249
config.setHome(player);250
player.sendMessage(ChatColor.YELLOW + "Home point set.");251
}252
catch(Exception ex)253
{254
player.sendMessage(Constants.Messages.FAILED_TO_SAVE_CONFIG_FILE);255
}257
return true;258
}260
private boolean setWarppoint(final Player player, final String[] args)261
{262
if(args.length != 1)263
{264
return false;265
}267
final String name = args[0];269
if(!Utils.payFee(player, Material.COMPASS, 1))270
{271
player.sendMessage(ChatColor.RED + "The fee for creating a warp point is 1 compass!");272
return true;273
}275
try276
{277
if(!config.setWarp(name.toLowerCase(), player.getLocation()))278
{279
player.sendMessage(ChatColor.RED + "Warp point " + name + " already exists!");280
return true;281
}283
player.sendMessage(ChatColor.YELLOW + "Warp point " + name + " set.");284
}285
catch(Exception ex)286
{287
player.sendMessage(Constants.Messages.FAILED_TO_SAVE_CONFIG_FILE);288
}290
return true;291
}293
}