A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
1
org.gradle.console = plain1
\ No newline at end of file
10
import org.bukkit.entity.Player;11
import org.bukkit.Location;13
import poppy.Utils;13
public class Config14
{15
private File file;
67
try68
{69
this.configuration.load(this.file);72
pages = (List<String>) this.configuration.getList(path);70
pages = this.configuration.getStringList(path);71
}72
catch(Exception ex)73
{
1
package poppy;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;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;14
import org.bukkit.World;15
import org.bukkit.WorldCreator;16
import org.bukkit.WorldType;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;23
import org.bukkit.material.Tree;14
import org.bukkit.plugin.Plugin;15
import org.bukkit.plugin.PluginManager;16
import org.bukkit.plugin.java.JavaPlugin;28
import poppy.Constants;29
import poppy.Config;30
import poppy.Utils;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;
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;48
private CommonModule commonModule;37
private CauldronModule cauldronModule;39
@Override40
public void onEnable()
45
pluginManager = Bukkit.getPluginManager();47
commonModule = new CommonModule();48
pluginManager.registerEvents(commonModule, this);50
doubleDoorModule = new DoubleDoorModule();51
pluginManager.registerEvents(doubleDoorModule, this);
59
leavesDecayModule = new LeavesDecayModule(this);60
pluginManager.registerEvents(leavesDecayModule, this);70
commonModule = new CommonModule();71
pluginManager.registerEvents(commonModule, this);62
cauldronModule = new CauldronModule(this);63
pluginManager.registerEvents(cauldronModule, this);64
}66
@Override
10
import org.bukkit.inventory.Inventory;11
import org.bukkit.inventory.ItemStack;12
import org.bukkit.plugin.Plugin;13
import org.bukkit.Location;13
import org.bukkit.GameMode;15
import org.bukkit.plugin.Plugin;15
import net.md_5.bungee.api.ChatColor;16
import net.md_5.bungee.api.ChatMessageType;17
import net.md_5.bungee.api.chat.TextComponent;21
import poppy.Constants;20
public class Utils21
{
1
package poppy.modules;3
import org.bukkit.Bukkit;4
import org.bukkit.Material;5
import org.bukkit.block.Block;6
import org.bukkit.block.BlockState;7
import org.bukkit.block.Dispenser;8
import org.bukkit.block.data.Directional;9
import org.bukkit.event.EventHandler;10
import org.bukkit.event.Listener;11
import org.bukkit.event.block.BlockDispenseEvent;12
import org.bukkit.inventory.ItemStack;13
import org.bukkit.plugin.Plugin;16
public class CauldronModule implements Listener17
{18
private Plugin plugin;20
public CauldronModule(Plugin plugin)21
{22
this.plugin = plugin;23
}25
@EventHandler26
public void onBlockDispenseEvent(BlockDispenseEvent event)27
{28
final Block block = event.getBlock();29
final BlockState blockState = block.getState();31
if(blockState instanceof Dispenser)32
{33
final Dispenser dispenser = (Dispenser) blockState;34
final ItemStack item = event.getItem();36
if(block.getBlockData() instanceof Directional)37
{38
final Directional direction = (Directional) dispenser.getBlockData();39
final Block cauldron = dispenser.getBlock().getRelative(direction.getFacing());41
if(item.getType() == Material.BUCKET)42
{43
if(cauldron.getType() == Material.WATER_CAULDRON)44
{45
cauldron.setType(Material.CAULDRON);46
removeSnapshotItem(dispenser, item.getType(), 1);47
event.setItem(new ItemStack(Material.WATER_BUCKET));48
}50
if(cauldron.getType() == Material.LAVA_CAULDRON)51
{52
cauldron.setType(Material.CAULDRON);53
removeSnapshotItem(dispenser, item.getType(), 1);54
event.setItem(new ItemStack(Material.LAVA_BUCKET));55
}56
}57
}58
}59
}61
public void removeSnapshotItem(Dispenser dispenser, Material material, int amount)62
{63
Bukkit.getScheduler().runTaskLater(plugin, () -> {64
dispenser.getSnapshotInventory().addItem(new ItemStack(material, -amount));65
dispenser.update();66
}, 1);67
}68
}
18
import org.bukkit.event.block.Action;19
import org.bukkit.event.block.BlockBreakEvent;20
import org.bukkit.event.player.PlayerInteractEvent;21
import org.bukkit.util.Vector;21
import org.spigotmc.event.entity.EntityDismountEvent;23
import poppy.Utils;
33
@EventHandler34
public void onPlayerInteract(PlayerInteractEvent event)35
{37
Player player = event.getPlayer();36
final Player player = event.getPlayer();38
if(event.getAction() == Action.PHYSICAL)39
{
46
}47
}50
EquipmentSlot equip = event.getHand();52
if(equip.equals(EquipmentSlot.HAND))49
if(event.getAction() == Action.RIGHT_CLICK_BLOCK)50
{51
final EquipmentSlot equip = event.getHand();55
if(event.getAction() == Action.RIGHT_CLICK_BLOCK)53
if(equip.equals(EquipmentSlot.HAND))54
{57
Block block = event.getClickedBlock();55
final Block block = event.getClickedBlock();57
if(block == null)58
{59
return;60
}64
Material material = block.getType();62
final Material material = block.getType();64
if(player.isSneaking())65
{66
return;67
}71
BlockData blockdata = block.getBlockData();69
final BlockData blockdata = block.getBlockData();71
if(blockdata instanceof Ageable)72
{76
Ageable ageable = (Ageable) blockdata;74
final Ageable ageable = (Ageable) blockdata;76
if(Utils.isFarmable(material) && ageable.getAge() == ageable.getMaximumAge())77
{
81
if(blockdata instanceof Directional)82
{83
Directional directional = (Directional) blockdata;86
BlockFace blockface = directional.getFacing();84
final BlockFace blockface = directional.getFacing();86
block.breakNaturally(player.getItemInUse());87
block.setType(material);
92
}93
else94
{95
block.breakNaturally(player.getItemInUse());96
block.setType(material);97
}
128
{129
if(event.getDamager() instanceof Snowball)130
{134
Snowball snowball = (Snowball) event.getDamager();131
final Snowball snowball = (Snowball) event.getDamager();133
if(snowball.getShooter() instanceof Player)134
{138
Player player = (Player) event.getEntity();135
final Player player = (Player) event.getEntity();137
player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 20 * 2, 1));138
event.setDamage(1);
143
@EventHandler144
public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event)145
{149
Player player = event.getPlayer();146
final Player player = event.getPlayer();148
if(event.getRightClicked().getType().equals(EntityType.ARMOR_STAND))149
{153
ItemStack item = player.getInventory().getItemInMainHand();150
final ItemStack item = player.getInventory().getItemInMainHand();152
if(item.getType() == Material.STICK && item.getAmount() > 1 && player.isSneaking())153
{157
ArmorStand armorstand = (ArmorStand) event.getRightClicked();154
final ArmorStand armorstand = (ArmorStand) event.getRightClicked();156
armorstand.setArms(true);157
item.setAmount(item.getAmount() - 2);
166
{167
if(event.getEntity() instanceof ArmorStand)168
{172
ArmorStand armorstand = (ArmorStand) event.getEntity();169
final ArmorStand armorstand = (ArmorStand) event.getEntity();171
if(armorstand.hasArms())172
{
18
public class DoubleDoorModule implements Listener19
{20
private static final Material[] DOOR_TYPE = new Material[] { Material.OAK_DOOR, Material.SPRUCE_DOOR, Material.BIRCH_DOOR, Material.JUNGLE_DOOR, Material.ACACIA_DOOR, Material.DARK_OAK_DOOR, Material.ACACIA_DOOR, Material.CRIMSON_DOOR, Material.WARPED_DOOR };20
private static final Material[] DOOR_TYPE = new Material[]21
{22
Material.OAK_DOOR,23
Material.SPRUCE_DOOR,24
Material.BIRCH_DOOR,25
Material.JUNGLE_DOOR,26
Material.ACACIA_DOOR,27
Material.DARK_OAK_DOOR,28
Material.ACACIA_DOOR,29
Material.CRIMSON_DOOR,30
Material.WARPED_DOOR31
};33
@EventHandler34
public void onPlayerInteract(PlayerInteractEvent event)