mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-01 16:19:53 +01:00
All changes up to 0.8.16
This commit is contained in:
parent
f3aedac1f2
commit
2f6dbfccfc
@ -1,5 +1,10 @@
|
||||
Changelog:
|
||||
#Versions without changelogs probably had very small misc fixes, like tweaks to the source code#
|
||||
Version 0.8.16
|
||||
Moved configuration file to /plugins/mcMMO
|
||||
Arrows now have a chance to Ignite enemiesw
|
||||
Fixed arrows not being retrievable from corpses
|
||||
Added info about ignition to /archery
|
||||
Version 0.8.14
|
||||
Mining, Woodcutting, Herbalism, and Acrobatics proc rates now are based on your skill level directly rather than tiers you unlock via skill levels
|
||||
Archery's ability to retrieve arrows from corpses now is based on your skill level directly rather than tiers you unlock via skill levels
|
||||
|
@ -2,6 +2,7 @@ package com.gmail.nossr50;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -9,6 +10,7 @@ import org.bukkit.event.block.BlockDamageEvent;
|
||||
import org.bukkit.event.block.BlockFromToEvent;
|
||||
import org.bukkit.event.block.BlockListener;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class mcBlockListener extends BlockListener {
|
||||
private final mcMMO plugin;
|
||||
@ -64,8 +66,32 @@ public class mcBlockListener extends BlockListener {
|
||||
if(player != null && block.getTypeId() == 17 && mcPermissions.getInstance().woodcutting(player)){
|
||||
mcWoodCutting.getInstance().woodCuttingProcCheck(player, block, loc);
|
||||
mcUsers.getProfile(player).addWoodcuttingGather(7);
|
||||
/*
|
||||
* IF PLAYER IS USING TREEFELLER
|
||||
*/
|
||||
/*
|
||||
if(mcPermissions.getInstance().woodcuttingability(player)){
|
||||
player.sendMessage(ChatColor.RED+"TIIIIIIIIIIIMBER");
|
||||
mcWoodCutting.getInstance().treeFeller(block);
|
||||
for(Block blockx : mcConfig.getInstance().getTreeFeller()){
|
||||
if(blockx != null){
|
||||
Material mat = Material.getMaterial(blockx.getTypeId());
|
||||
byte damage = 0;
|
||||
ItemStack item = new ItemStack(mat, 1, (byte)0, damage);
|
||||
blockx.setTypeId(0);
|
||||
if(item.getTypeId() == 17)
|
||||
blockx.getLocation().getWorld().dropItemNaturally(blockx.getLocation(), item);
|
||||
if(item.getTypeId() == 18){
|
||||
mat = Material.getMaterial(6);
|
||||
item = new ItemStack(mat, 1, (byte)0, damage);
|
||||
if(Math.random() * 10 > 6)
|
||||
blockx.getLocation().getWorld().dropItemNaturally(blockx.getLocation(), item);
|
||||
}
|
||||
}
|
||||
//mcConfig.getInstance().removeTreeFeller(blockx);
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
/*
|
||||
* EXCAVATION
|
||||
|
@ -332,6 +332,19 @@ public class mcCombat {
|
||||
*/
|
||||
if(y instanceof Player){
|
||||
Player attacker = (Player)y;
|
||||
if(Math.random() * 1500 <= mcUsers.getProfile(attacker).getArcheryInt()){
|
||||
if(x instanceof Player){
|
||||
Player Defender = (Player)x;
|
||||
if(!mcParty.getInstance().inSameParty(attacker, Defender)){
|
||||
event.getEntity().setFireTicks(120);
|
||||
attacker.sendMessage(ChatColor.RED+"**IGNITION**");
|
||||
Defender.sendMessage(ChatColor.DARK_RED+"You were struck by a burning arrow!");
|
||||
}
|
||||
} else {
|
||||
event.getEntity().setFireTicks(160);
|
||||
attacker.sendMessage(ChatColor.RED+"**IGNITION**");
|
||||
}
|
||||
}
|
||||
if(event.getProjectile().toString().equals("CraftArrow") && mcPermissions.getInstance().archery(attacker)){
|
||||
if(!mcConfig.getInstance().isTracked(x) && event.getDamage() > 0){
|
||||
mcConfig.getInstance().addArrowTrack(x, 0);
|
||||
@ -357,7 +370,6 @@ public class mcCombat {
|
||||
/*
|
||||
* TRACK ARROWS USED AGAINST THE ENTITY
|
||||
*/
|
||||
int healthbefore = defender.getHealth();
|
||||
if(mcUsers.getProfile(attacker).getArcheryInt() >= 50 && mcUsers.getProfile(attacker).getArcheryInt() < 250)
|
||||
event.setDamage(calculateDamage(event, 1));
|
||||
if(mcUsers.getProfile(attacker).getArcheryInt() >= 250 && mcUsers.getProfile(attacker).getArcheryInt() < 575)
|
||||
@ -466,7 +478,6 @@ public class mcCombat {
|
||||
attacker.sendMessage("Target was "+ChatColor.DARK_RED+"Dazed");
|
||||
}
|
||||
}
|
||||
int healthbefore = defender.getHealth();
|
||||
if(mcUsers.getProfile(attacker).getArcheryInt() >= 50 && mcUsers.getProfile(attacker).getArcheryInt() < 250)
|
||||
event.setDamage(calculateDamage(event, 1));
|
||||
if(mcUsers.getProfile(attacker).getArcheryInt() >= 250 && mcUsers.getProfile(attacker).getArcheryInt() < 575)
|
||||
|
@ -18,6 +18,7 @@ public class mcConfig {
|
||||
static ArrayList<Entity> bleedTracker = new ArrayList<Entity>();
|
||||
static ArrayList<Entity> mobSpawnTracker = new ArrayList<Entity>();
|
||||
public boolean isBlockWatched(Block block) {return blockWatchList.contains(block);}
|
||||
public boolean isTreeFellerWatched(Block block) {return treeFeller.contains(block);}
|
||||
public ArrayList<Block> getTreeFeller() {return treeFeller;}
|
||||
public void removeBlockWatch(Block block) {blockWatchList.remove(blockWatchList.indexOf(block));}
|
||||
public void addBlockWatch(Block block) {blockWatchList.add(block);}
|
||||
|
@ -124,6 +124,7 @@ public class mcEntityListener extends EntityListener {
|
||||
}
|
||||
public void onEntityDeath(EntityDeathEvent event) {
|
||||
Entity x = event.getEntity();
|
||||
mcSkills.getInstance().arrowRetrievalCheck(x);
|
||||
if(x instanceof Player){
|
||||
Player player = (Player)x;
|
||||
if(mcUsers.getProfile(player).isDead()){
|
||||
|
@ -18,7 +18,7 @@ import org.bukkit.entity.Player;
|
||||
|
||||
|
||||
public class mcMMO extends JavaPlugin {
|
||||
static String maindirectory = "mcMMO/";
|
||||
static String maindirectory = "plugins/mcMMO/";
|
||||
static File Properties = new File(maindirectory + "mcmmo.properties");
|
||||
public static final Logger log = Logger.getLogger("Minecraft");
|
||||
private final mcPlayerListener playerListener = new mcPlayerListener(this);
|
||||
@ -32,7 +32,7 @@ public class mcMMO extends JavaPlugin {
|
||||
|
||||
//herp
|
||||
public void onEnable() {
|
||||
//mcMMO_Timer.schedule(new mcTimer(this), 0, (long)(2000));
|
||||
mcMMO_Timer.schedule(new mcTimer(this), 0, (long)(2000));
|
||||
//Make the directory if it does not exist
|
||||
new File(maindirectory).mkdir();
|
||||
//Make the file if it does not exist
|
||||
@ -61,6 +61,9 @@ public class mcMMO extends JavaPlugin {
|
||||
//Load the file
|
||||
mcLoadProperties.loadMain();
|
||||
mcUsers.getInstance().loadUsers();
|
||||
for(Player player : getServer().getOnlinePlayers()){
|
||||
mcUsers.addUser(player);
|
||||
}
|
||||
PluginManager pm = getServer().getPluginManager();
|
||||
pm.registerEvent(Event.Type.PLAYER_JOIN, playerListener, Priority.Normal, this);
|
||||
pm.registerEvent(Event.Type.PLAYER_LOGIN, playerListener, Priority.Normal, this);
|
||||
|
@ -1,5 +1,7 @@
|
||||
package com.gmail.nossr50;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
@ -7,6 +9,8 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class mcWoodCutting {
|
||||
int w = 0;
|
||||
private boolean isdone = false;
|
||||
private static mcMMO plugin;
|
||||
public mcWoodCutting(mcMMO instance) {
|
||||
plugin = instance;
|
||||
@ -31,11 +35,62 @@ public class mcWoodCutting {
|
||||
}
|
||||
}
|
||||
public void treeFeller(Block block){
|
||||
Location loc = block.getLocation();
|
||||
int radius = 1;
|
||||
int typeid = 17;
|
||||
if(mcm.getInstance().isBlockAround(loc, radius, typeid)){
|
||||
|
||||
ArrayList<Block> blocklist = new ArrayList<Block>();
|
||||
ArrayList<Block> toAdd = new ArrayList<Block>();
|
||||
if(block != null)
|
||||
blocklist.add(block);
|
||||
while(isdone == false){
|
||||
addBlocksToTreeFelling(blocklist, toAdd, radius);
|
||||
}
|
||||
//This needs to be a hashmap too!
|
||||
isdone = false;
|
||||
/*
|
||||
* Add blocks from the temporary 'toAdd' array list into the 'treeFeller' array list
|
||||
* We use this temporary list to prevent concurrent modification exceptions
|
||||
*/
|
||||
for(Block x : toAdd){
|
||||
if(!mcConfig.getInstance().isTreeFellerWatched(x))
|
||||
mcConfig.getInstance().addTreeFeller(x);
|
||||
}
|
||||
}
|
||||
public void addBlocksToTreeFelling(ArrayList<Block> blocklist, ArrayList<Block> toAdd, Integer radius){
|
||||
int u = 0;
|
||||
for (Block x : blocklist){
|
||||
u++;
|
||||
if(toAdd.contains(x))
|
||||
continue;
|
||||
w = 0;
|
||||
Location loc = x.getLocation();
|
||||
int vx = x.getX();
|
||||
int vy = x.getY();
|
||||
int vz = x.getZ();
|
||||
/*
|
||||
* Run through the blocks around the broken block to see if they qualify to be 'felled'
|
||||
*/
|
||||
for (int cx = -radius; cx <= radius; cx++) {
|
||||
for (int cy = -radius; cy <= radius; cy++) {
|
||||
for (int cz = -radius; cz <= radius; cz++) {
|
||||
Block blocktarget = loc.getWorld().getBlockAt(vx + cx, vy + cy, vz + cz);
|
||||
if (!blocklist.contains(blocktarget) && !toAdd.contains(blocktarget) && (blocktarget.getTypeId() == 17 || blocktarget.getTypeId() == 18)) {
|
||||
toAdd.add(blocktarget);
|
||||
w++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Add more blocks to blocklist so they can be 'felled'
|
||||
*/
|
||||
for(Block xx : toAdd){
|
||||
if(!blocklist.contains(xx))
|
||||
blocklist.add(xx);
|
||||
}
|
||||
if(u >= blocklist.size()){
|
||||
isdone = true;
|
||||
} else {
|
||||
isdone = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -233,15 +233,17 @@ public class mcm {
|
||||
event.setCancelled(true);
|
||||
float skillvalue = (float)mcUsers.getProfile(player).getArcheryInt();
|
||||
String percentage = String.valueOf((skillvalue / 1000) * 100);
|
||||
String percentagefire = String.valueOf((skillvalue / 1500) * 100);
|
||||
player.sendMessage(ChatColor.RED+"-----[]"+ChatColor.GREEN+"ARCHERY"+ChatColor.RED+"[]-----");
|
||||
player.sendMessage(ChatColor.DARK_GRAY+"XP GAIN: "+ChatColor.WHITE+"Attacking Monsters");
|
||||
player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"EFFECTS"+ChatColor.RED+"[]---");
|
||||
//player.sendMessage(ChatColor.DARK_AQUA+"Daze (Monsters): "+ChatColor.GREEN+"Enemies lose interest for 1 second");
|
||||
player.sendMessage(ChatColor.DARK_AQUA+"Ignition: "+ChatColor.GREEN+"Enemies will catch on fire");
|
||||
player.sendMessage(ChatColor.DARK_AQUA+"Daze (Players): "+ChatColor.GREEN+"Disorients foes");
|
||||
player.sendMessage(ChatColor.DARK_AQUA+"Damage+: "+ChatColor.GREEN+"Modifies Damage");
|
||||
player.sendMessage(ChatColor.DARK_AQUA+"Arrow Retrieval: "+ChatColor.GREEN+"Chance to retrieve arrows from corpses");
|
||||
player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"YOUR STATS"+ChatColor.RED+"[]---");
|
||||
player.sendMessage(ChatColor.RED+"Chance to Retrieve Arrows: "+ChatColor.YELLOW+percentage+"%");
|
||||
player.sendMessage(ChatColor.RED+"Chance for Ignition: "+ChatColor.YELLOW+percentagefire+"%");
|
||||
}
|
||||
if(split[0].equalsIgnoreCase("/axes")){
|
||||
event.setCancelled(true);
|
||||
|
@ -1,3 +1,3 @@
|
||||
name: mcMMO
|
||||
main: com.gmail.nossr50.mcMMO
|
||||
version: 0.8.15
|
||||
version: 0.8.16
|
Loading…
Reference in New Issue
Block a user