A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: 02466fd6b3688a6e31f361a0b3161c0377a8480d (8494 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.AutoBreakerModule;19
import poppy.modules.AutoPlacerModule;20
import poppy.modules.AutoWorkbenchModule;21
import poppy.modules.CauldronModule;22
import poppy.modules.ChairModule;23
import poppy.modules.DoubleDoorModule;24
import poppy.modules.HopperSorterModule;25
import poppy.modules.CommonModule;26
import poppy.modules.LeavesDecayModule;27
import poppy.modules.SpawnerModule;30
public class Main extends JavaPlugin31
{32
private Plugin plugin;33
private Config config;34
private PluginManager pluginManager;36
private CommonModule commonModule;37
private DoubleDoorModule doubleDoorModule;38
private ChairModule chairModule;39
private AutoWorkbenchModule autoWorkbenchModule;40
private LeavesDecayModule leavesDecayModule;41
private CauldronModule cauldronModule;42
private SpawnerModule spawnerModule;43
private HopperSorterModule hopperSorterModule;44
private AutoPlacerModule autoPlacerModule;45
private AutoBreakerModule autoBreakerModule;47
@Override48
public void onEnable()49
{50
plugin = this;51
config = new Config("config/poppy.yml");53
pluginManager = Bukkit.getPluginManager();55
commonModule = new CommonModule();56
pluginManager.registerEvents(commonModule, this);58
doubleDoorModule = new DoubleDoorModule();59
pluginManager.registerEvents(doubleDoorModule, this);61
chairModule = new ChairModule();62
pluginManager.registerEvents(chairModule, this);64
autoWorkbenchModule = new AutoWorkbenchModule();65
pluginManager.registerEvents(autoWorkbenchModule, this);67
leavesDecayModule = new LeavesDecayModule(this);68
pluginManager.registerEvents(leavesDecayModule, this);70
cauldronModule = new CauldronModule(this);71
pluginManager.registerEvents(cauldronModule, this);73
spawnerModule = new SpawnerModule();74
pluginManager.registerEvents(spawnerModule, this);76
hopperSorterModule = new HopperSorterModule();77
pluginManager.registerEvents(hopperSorterModule, this);79
autoPlacerModule = new AutoPlacerModule(this);80
pluginManager.registerEvents(autoPlacerModule, this);82
autoBreakerModule = new AutoBreakerModule(this);83
pluginManager.registerEvents(autoBreakerModule, this);84
}86
@Override87
public void onDisable()88
{89
chairModule.onDisable();90
}92
@Override93
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)94
{95
if(sender instanceof Player)96
{97
Player player = (Player) sender;99
switch(label)100
{101
case "head":102
return setItemAsHead(player, args);103
case "skull":104
return getSkullForName(player, args);105
case "invsee":106
return openInventoryForPlayer(player, args);107
case "info":108
return openInfoBook(player, args);109
case "spawn":110
return teleportToSpawn(player, args);111
case "home":112
return teleportToHome(player, args);113
case "warp":114
return teleportToWarppoint(player, args);115
case "sethome":116
return setHome(player, args);117
case "setwarp":118
return setWarppoint(player, args);119
case "slime":120
return ifSlimeChunk(player, args);121
case "r":122
return reload(player, args);123
default:124
return false;125
}126
}128
return true;129
}131
private boolean setItemAsHead(final Player player, final String[] args)132
{133
final ItemStack item = player.getInventory().getItemInMainHand();134
final ItemStack head = player.getInventory().getHelmet();136
player.getInventory().setHelmet(item);137
player.getInventory().setItemInMainHand((new ItemStack(Material.AIR)));139
if(player.getGameMode() == GameMode.SURVIVAL)140
{141
if(head != null)142
{143
player.getInventory().addItem(head);144
}145
}147
return true;148
}150
@SuppressWarnings("deprecation")151
private boolean getSkullForName(final Player player, final String[] args)152
{153
if(!player.isOp())154
{155
player.sendMessage(Constants.Messages.NOT_ENOUGH_PERMISSION);156
return true;157
}159
if(args.length != 1)160
{161
return false;162
}164
final String name = args[0];165
final ItemStack skull = new ItemStack(Material.PLAYER_HEAD);166
final SkullMeta meta = (SkullMeta) skull.getItemMeta();167
meta.setOwner(name);168
skull.setItemMeta(meta);170
player.getInventory().addItem(skull);172
return true;173
}175
private boolean openInventoryForPlayer(final Player player, final String[] args)176
{177
if(args.length == 0)178
{179
return false;180
}182
if(!player.isOp())183
{184
player.sendMessage(Constants.Messages.NOT_ENOUGH_PERMISSION);185
return true;186
}188
final Player target = Bukkit.getPlayer(args[0]);190
if(target == null)191
{192
player.sendMessage(ChatColor.RED + "Player not found!");193
return true;194
}196
player.openInventory(target.getInventory());198
return true;199
}201
private boolean openInfoBook(final Player player, final String[] args)202
{203
final ItemStack book = new ItemStack(Material.WRITTEN_BOOK);204
final BookMeta meta = (BookMeta) book.getItemMeta();205
meta.setTitle("Info");206
meta.setAuthor("Server");207
meta.setPages(config.getInfoPages());208
book.setItemMeta(meta);210
player.openBook(book);212
return true;213
}215
private boolean teleportToSpawn(final Player player, final String[] args)216
{217
final Location location = Bukkit.getWorld("world").getSpawnLocation();219
if(Utils.travelTo(plugin, player, location))220
{221
player.sendMessage(ChatColor.GRAY + "You've been teleported to spawn.");222
}224
return true;225
}227
private boolean teleportToHome(final Player player, final String[] args)228
{229
final Location location = config.getHome(player);231
if(location == null)232
{233
player.sendMessage(ChatColor.RED + "You've don't have a home point.");234
return true;235
}237
if(Utils.travelTo(plugin, player, location))238
{239
player.sendMessage(ChatColor.GRAY + "You've been teleported to your home.");240
}242
return true;243
}245
private boolean teleportToWarppoint(final Player player, final String[] args)246
{247
if(args.length != 1)248
{249
return false;250
}252
final String name = args[0].toLowerCase();253
final Location location = config.getWarp(name);255
if(location == null)256
{257
player.sendMessage(ChatColor.RED + "Warppoint " + name + " doesn't exist!");258
return true;259
}261
if(Utils.travelTo(plugin, player, location))262
{263
player.sendMessage(ChatColor.GRAY + "You've been teleported to warppoint " + name + ".");264
}266
return true;267
}269
private boolean setHome(final Player player, final String[] args)270
{271
try272
{273
config.setHome(player);274
player.sendMessage(ChatColor.YELLOW + "Home point set.");275
}276
catch(Exception ex)277
{278
player.sendMessage(Constants.Messages.FAILED_TO_SAVE_CONFIG_FILE);279
}281
return true;282
}284
private boolean setWarppoint(final Player player, final String[] args)285
{286
if(args.length != 1)287
{288
return false;289
}291
final String name = args[0].toLowerCase();293
if(!Utils.payFee(player, Material.COMPASS, 1))294
{295
player.sendMessage(ChatColor.RED + "The fee for creating a warppoint is 1 compass!");296
return true;297
}299
try300
{301
if(!config.setWarp(name, player.getLocation()))302
{303
player.sendMessage(ChatColor.RED + "Warppoint " + name + " already exists!");304
return true;305
}307
player.sendMessage(ChatColor.YELLOW + "Warppoint " + name + " set.");308
}309
catch(Exception ex)310
{311
player.sendMessage(Constants.Messages.FAILED_TO_SAVE_CONFIG_FILE);312
}314
return true;315
}317
private boolean ifSlimeChunk(final Player player, final String[] args)318
{319
boolean isSlimeChunk = player.getLocation().getChunk().isSlimeChunk();321
if(isSlimeChunk)322
{323
player.sendMessage(ChatColor.YELLOW + "This is a slime chunk!");324
return true;325
}326
else327
{328
player.sendMessage(ChatColor.RED + "This is not a slime chunk!");329
return true;330
}331
}333
private boolean reload(final Player player, final String[] args)334
{335
player.chat("/reload confirm");336
return true;337
}338
}