Skip to content

Commit

Permalink
done
Browse files Browse the repository at this point in the history
  • Loading branch information
kolinkrewinkel committed Dec 9, 2013
1 parent 986f814 commit dfc7426
Showing 1 changed file with 146 additions and 36 deletions.
182 changes: 146 additions & 36 deletions src/main/java/com/bitlimit/Tweaks/TweaksListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -101,27 +101,30 @@ public void onBlockPlaceEvent(BlockPlaceEvent event) {
}
}

if (event.getItemInHand().getType() == Material.SKULL_ITEM || event.getItemInHand().getType() == Material.SKULL) {
if (event.getItemInHand().getItemMeta().getLore() == null)
return;

if (event.getItemInHand().getItemMeta().getLore().size() == 0)
return;

if (event.getItemInHand().getType() == Material.SKULL_ITEM || event.getItemInHand().getType() == Material.SKULL)
{
SkullMeta skullMeta = (SkullMeta)event.getItemInHand().getItemMeta();
List<String> lore = skullMeta.getLore();

if (lore != null)
{
StringBuilder builder = new StringBuilder();
for (String value : lore)
{
builder.append(value);
}

List<String> meta = event.getItemInHand().getItemMeta().getLore();
StringBuilder builder = new StringBuilder();
for (String value : meta) {
builder.append(value);
}

String builtString = builder.toString();
String strippedString = ChatColor.stripColor(builtString);
builtString = builtString.replaceFirst(strippedString.substring(0, 1), strippedString.substring(0, 1).toLowerCase());
String builtString = builder.toString();
String strippedString = ChatColor.stripColor(builtString);
builtString = builtString.replaceFirst(strippedString.substring(0, 1), strippedString.substring(0, 1).toLowerCase());
event.getBlockPlaced().setMetadata("com.bitlimit.Tweaks.lore", new FixedMetadataValue(this.plugin, skullMeta.getLore()));
event.getBlockPlaced().setMetadata("com.bitlimit.Tweaks.display", new FixedMetadataValue(this.plugin, ChatColor.YELLOW + skullMeta.getOwner() + ChatColor.AQUA + " was " + builtString));
}
else
{
event.getBlockPlaced().setMetadata("com.bitlimit.Tweaks.name", new FixedMetadataValue(this.plugin, skullMeta.getDisplayName()));
}

event.getBlockPlaced().setMetadata("com.bitlimit.Tweaks.display", new FixedMetadataValue(this.plugin, ChatColor.YELLOW + skullMeta.getOwner() + ChatColor.AQUA + " was " + builtString));
event.getBlockPlaced().setMetadata("com.bitlimit.Tweaks.lore", new FixedMetadataValue(this.plugin, skullMeta.getLore()));
}
}

Expand Down Expand Up @@ -157,8 +160,29 @@ public void onBlockBreakEvent(BlockBreakEvent event) {
Block block = event.getBlock();

if (block.hasMetadata("com.bitlimit.Tweaks.display"))
block.removeMetadata("com.bitlimit.Tweaks.display", this.plugin);
{
block.removeMetadata("com.bitlimit.Tweaks.display", this.plugin);
}
else if (block.hasMetadata("com.bitlimit.Tweaks.name"))
{
List<MetadataValue> metadataValueList = block.getMetadata("com.bitlimit.Tweaks.name");
String displayName = (String)metadataValueList.get(0).value();

ItemStack itemStack = (ItemStack)block.getDrops().iterator().next();
ItemMeta itemMeta = itemStack.getItemMeta();
itemMeta.setDisplayName(displayName);
itemStack.setItemMeta(itemMeta);


block.getLocation().getWorld().dropItemNaturally(block.getLocation(), itemStack);

event.setCancelled(true);
block.setType(Material.AIR);

block.removeMetadata("com.bitlimit.Tweaks.name", this.plugin);

return;
}

if (block.hasMetadata("com.bitlimit.Tweaks.lore")) {
List<MetadataValue> metadataValueList = block.getMetadata("com.bitlimit.Tweaks.lore");
Expand Down Expand Up @@ -196,6 +220,21 @@ else if (block.getType() == Material.MELON_BLOCK || block.getType() == Material.
probability = 0.005F;
}

if (event.getPlayer() != null)
{
Player player = event.getPlayer();
if (player.getItemInHand().containsEnchantment(Enchantment.LOOT_BONUS_BLOCKS))
{
float enchantmentLevel = player.getItemInHand().getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS);
Bukkit.broadcastMessage(Float.toString(enchantmentLevel));

enchantmentLevel += 1F;
enchantmentLevel *= 0.75F;

probability *= enchantmentLevel;
}
}

boolean shouldDrop = getRandomBoolean(probability);
if (!shouldDrop)
{
Expand All @@ -205,12 +244,30 @@ else if (block.getType() == Material.MELON_BLOCK || block.getType() == Material.
ItemStack head = new ItemStack(Material.SKULL_ITEM, 1, (byte)3);

SkullMeta meta = (SkullMeta)head.getItemMeta();
meta.setOwner(getMHFNameForBlock(block));
meta.setOwner(getMHFNameForBlockType(block.getType()));
meta.setDisplayName(humanize2(block.getType().toString().toLowerCase()).replace("Tnt", "TNT"));
head.setItemMeta(meta);

Location location = block.getLocation();
location.getWorld().dropItemNaturally(location, head);
class DelayedLocationTask implements Runnable
{
private final ItemStack head;
private final Location location;


DelayedLocationTask(ItemStack head, Location location)
{
this.head = head;
this.location = location;
}

public void run()
{
location.getWorld().dropItemNaturally(location, head);
}
}

Location location = block.getLocation().add(0, 2, 0);
Bukkit.getScheduler().scheduleSyncDelayedTask(this.plugin, new DelayedLocationTask(head, location), 10L);
}
}

Expand Down Expand Up @@ -257,8 +314,7 @@ public void run()
{
if (this.block.getType() != Material.CACTUS)
{
// boolean shouldDrop = getRandomBoolean(0.005F);
boolean shouldDrop = getRandomBoolean(1F);
boolean shouldDrop = getRandomBoolean(0.005F);
if (!shouldDrop)
{
return;
Expand All @@ -268,16 +324,18 @@ public void run()

SkullMeta meta = (SkullMeta)head.getItemMeta();
meta.setOwner((String)MHFBlocks().get(Material.CACTUS));
meta.setDisplayName(humanize2(block.getType().toString().toLowerCase()).replace("Tnt", "TNT"));
meta.setDisplayName(humanize2(Material.CACTUS.toString().toLowerCase()).replace("Tnt", "TNT"));
head.setItemMeta(meta);

Location location = block.getLocation();
location.getWorld().dropItemNaturally(location, head);

Item item = location.getWorld().dropItem(location, head);
item.setVelocity(new org.bukkit.util.Vector(0.2, 0.2, 0.2));
}
}
}

Bukkit.getScheduler().scheduleSyncDelayedTask(this.plugin, , 1L);
Bukkit.getScheduler().scheduleSyncDelayedTask(this.plugin, new DelayedCactusCheckTask(event.getBlock()), 1L);
}
}

Expand Down Expand Up @@ -312,7 +370,7 @@ public void onPlayerDeath(PlayerDeathEvent event) {
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onEntityDeathEvent(EntityDeathEvent event)
{
Entity entity = event.getEntity();
LivingEntity entity = event.getEntity();
if (entity instanceof Skeleton)
{
Skeleton skeleton = (Skeleton)entity;
Expand All @@ -322,17 +380,43 @@ public void onEntityDeathEvent(EntityDeathEvent event)
}
}

float probability = 0.99F;
if (entity.getType() == EntityType.GHAST)
float probability = 0.01F;
EntityType entityType = entity.getType();

if (entityType == EntityType.GHAST)
{
probability = 0.4F;
}
else if (entityType == EntityType.CREEPER)
{
probability = 0.18F;
}
else if (entityType == EntityType.SQUID || entityType == EntityType.SLIME)
{
probability = 0.08F;
}
else if (entityType == EntityType.WITHER)
{
probability = 0.6F;
probability = 1F;
}
else if (entity.getType() == EntityType.CREEPER)

if (entity.getKiller() != null)
{
probability = 0.85F;
Player player = entity.getKiller();
if (player.getItemInHand().containsEnchantment(Enchantment.LOOT_BONUS_MOBS))
{
float enchantmentLevel = player.getItemInHand().getEnchantmentLevel(Enchantment.LOOT_BONUS_MOBS);
Bukkit.broadcastMessage(Float.toString(enchantmentLevel));

enchantmentLevel += 1F;
enchantmentLevel *= 0.75F;

probability *= enchantmentLevel;
}
}

if (!MHFNames().containsKey(entity.getType()) || getRandomBoolean(probability))
boolean shouldDrop = getRandomBoolean(probability);
if (!MHFNames().containsKey(entity.getType()) || !shouldDrop)
{
return;
}
Expand Down Expand Up @@ -439,6 +523,32 @@ public void run()
Bukkit.getScheduler().scheduleSyncDelayedTask(this.plugin, new ChatHandlerTask(event));
}

@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onExplosionEvent(EntityExplodeEvent event)
{
if (event.getEntity() instanceof TNTPrimed)
{
TNTPrimed entityTNT = (TNTPrimed)event.getEntity();


boolean shouldDrop = getRandomBoolean(0.25F);
if (!shouldDrop)
{
return;
}

ItemStack head = new ItemStack(Material.SKULL_ITEM, 1, (byte)3);

SkullMeta meta = (SkullMeta)head.getItemMeta();
meta.setOwner(getMHFNameForBlockType(Material.TNT));
meta.setDisplayName("TNT");
head.setItemMeta(meta);

Location location = entityTNT.getLocation();
Item item = location.getWorld().dropItemNaturally(location.add(0, 0, 0), head);
}
}

/******************************************
Event Handler: First Join Events
--------------- Core Event ----------------
Expand Down Expand Up @@ -716,9 +826,9 @@ private static ArrayList<String> MHFBonuses()
return bonuses;
}

private static String getMHFNameForBlock(Block block)
private static String getMHFNameForBlockType(Material type)
{
Object unknown = MHFBlocks().get(block.getType());
Object unknown = MHFBlocks().get(type);

if (unknown instanceof String)
{
Expand Down

0 comments on commit dfc7426

Please sign in to comment.