New stuff
This commit is contained in:
parent
8b290daadc
commit
30a1b1bfa6
@ -4,6 +4,7 @@ import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import com.massivecraft.mcore2.cmd.Cmd;
|
||||
@ -14,8 +15,7 @@ import com.massivecraft.mcore2.persist.Persist;
|
||||
import com.massivecraft.mcore2.util.LibLoader;
|
||||
import com.massivecraft.mcore2.util.Txt;
|
||||
|
||||
|
||||
public abstract class MPlugin extends JavaPlugin
|
||||
public abstract class MPlugin extends JavaPlugin implements Listener
|
||||
{
|
||||
// Tools
|
||||
public Cmd cmd;
|
||||
|
@ -28,4 +28,9 @@ public class ReqHasPerm implements IReq
|
||||
return Perm.getForbiddenMessage(this.perm);
|
||||
}
|
||||
|
||||
public static ReqHasPerm get(String perm)
|
||||
{
|
||||
return new ReqHasPerm(perm);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -25,4 +25,9 @@ public class ReqIsPlayer implements IReq
|
||||
{
|
||||
return instance;
|
||||
}
|
||||
|
||||
public static ReqIsPlayer get()
|
||||
{
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
|
174
src/com/massivecraft/mcore2/util/MUtil.java
Normal file
174
src/com/massivecraft/mcore2/util/MUtil.java
Normal file
@ -0,0 +1,174 @@
|
||||
package com.massivecraft.mcore2.util;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.SortedSet;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Projectile;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
|
||||
import com.massivecraft.mcore2.MCore;
|
||||
|
||||
public class MUtil
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// MATERIAL FACTS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public final static Set<Material> foodMaterials = new HashSet<Material>(MUtil.list(
|
||||
Material.APPLE,
|
||||
Material.BREAD,
|
||||
Material.COOKED_BEEF,
|
||||
Material.COOKED_CHICKEN,
|
||||
Material.COOKED_FISH,
|
||||
Material.COOKIE,
|
||||
Material.GRILLED_PORK,
|
||||
Material.GOLDEN_APPLE,
|
||||
Material.MELON,
|
||||
Material.MUSHROOM_SOUP,
|
||||
Material.PORK,
|
||||
Material.RAW_BEEF,
|
||||
Material.RAW_CHICKEN,
|
||||
Material.RAW_FISH,
|
||||
Material.ROTTEN_FLESH,
|
||||
Material.SPIDER_EYE
|
||||
));
|
||||
|
||||
// -------------------------------------------- //
|
||||
// EVENT DERP
|
||||
// -------------------------------------------- //
|
||||
|
||||
public static Material getEatenMaterial(PlayerInteractEvent event)
|
||||
{
|
||||
Action action = event.getAction();
|
||||
if (action != Action.RIGHT_CLICK_AIR && action != Action.RIGHT_CLICK_BLOCK) return null;
|
||||
|
||||
Material ret = null;
|
||||
|
||||
if (action == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getType() == Material.CAKE_BLOCK)
|
||||
{
|
||||
ret = Material.CAKE_BLOCK;
|
||||
}
|
||||
else if (foodMaterials.contains(event.getMaterial()))
|
||||
{
|
||||
ret = event.getMaterial();
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static boolean isCombatEvent(EntityDamageEvent event)
|
||||
{
|
||||
if (event.getCause() != DamageCause.ENTITY_ATTACK && event.getCause() != DamageCause.PROJECTILE) return false;
|
||||
return event instanceof EntityDamageByEntityEvent;
|
||||
}
|
||||
|
||||
public static boolean isCloseCombatEvent(EntityDamageEvent event)
|
||||
{
|
||||
if (event.getCause() != DamageCause.ENTITY_ATTACK) return false;
|
||||
return event instanceof EntityDamageByEntityEvent;
|
||||
}
|
||||
|
||||
public static Entity getLiableDamager(EntityDamageEvent event)
|
||||
{
|
||||
if ( ! (event instanceof EntityDamageByEntityEvent)) return null;
|
||||
EntityDamageByEntityEvent edbeEvent = (EntityDamageByEntityEvent)event;
|
||||
Entity ret = edbeEvent.getDamager();
|
||||
if (ret instanceof Projectile)
|
||||
{
|
||||
ret = ((Projectile)ret).getShooter();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// SIMPLE CONSTRUCTORS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public static <T> List<T> list(T... items)
|
||||
{
|
||||
return new ArrayList<T>(Arrays.asList(items));
|
||||
}
|
||||
|
||||
public static <T> Set<T> set(T... items)
|
||||
{
|
||||
return new LinkedHashSet<T>(Arrays.asList(items));
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <K, V> Map<K, V> map(K key1, V value1, Object... objects)
|
||||
{
|
||||
Map<K, V> ret = new LinkedHashMap<K, V>();
|
||||
|
||||
ret.put(key1, value1);
|
||||
|
||||
Iterator<Object> iter = Arrays.asList(objects).iterator();
|
||||
while (iter.hasNext())
|
||||
{
|
||||
K key = (K) iter.next();
|
||||
V value = (V) iter.next();
|
||||
ret.put(key, value);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// SORTING
|
||||
// -------------------------------------------- //
|
||||
|
||||
//http://stackoverflow.com/questions/2864840/treemap-sort-by-value
|
||||
public static <K,V extends Comparable<? super V>> SortedSet<Map.Entry<K,V>> entriesSortedByValues(Map<K,V> map) {
|
||||
SortedSet<Map.Entry<K,V>> sortedEntries = new TreeSet<Map.Entry<K,V>>(
|
||||
new Comparator<Map.Entry<K,V>>() {
|
||||
@Override public int compare(Map.Entry<K,V> e1, Map.Entry<K,V> e2) {
|
||||
int res = e1.getValue().compareTo(e2.getValue());
|
||||
return res != 0 ? res : 1; // Special fix to preserve items with equal values
|
||||
}
|
||||
}
|
||||
);
|
||||
sortedEntries.addAll(map.entrySet());
|
||||
return sortedEntries;
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// MATH
|
||||
// -------------------------------------------- //
|
||||
public static <T extends Number> T limitNumber(T d, T min, T max)
|
||||
{
|
||||
if (min instanceof Number && d.doubleValue() < min.doubleValue())
|
||||
{
|
||||
return min;
|
||||
}
|
||||
|
||||
if (max instanceof Number && d.doubleValue() > max.doubleValue())
|
||||
{
|
||||
return max;
|
||||
}
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
public static long probabilityRound(double val)
|
||||
{
|
||||
long ret = (long) Math.floor(val);
|
||||
double prob = val % 1;
|
||||
if (MCore.random.nextDouble() < prob) ret += 1;
|
||||
return ret;
|
||||
}
|
||||
}
|
@ -4,7 +4,12 @@ import java.io.File;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import net.minecraft.server.EntityPlayer;
|
||||
import net.minecraft.server.Packet8UpdateHealth;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.craftbukkit.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class PlayerUtil
|
||||
{
|
||||
@ -23,4 +28,11 @@ public class PlayerUtil
|
||||
allVisitorNames.add(playername);
|
||||
}
|
||||
}
|
||||
|
||||
public static void sendHealthFoodUpdatePacket(Player player)
|
||||
{
|
||||
CraftPlayer cplayer = (CraftPlayer)player;
|
||||
EntityPlayer eplayer = cplayer.getHandle();
|
||||
eplayer.netServerHandler.sendPacket(new Packet8UpdateHealth(eplayer.getHealth(), eplayer.getFoodData().a(), eplayer.getFoodData().c()));
|
||||
}
|
||||
}
|
||||
|
@ -61,6 +61,16 @@ public class Txt
|
||||
parseReplacements.put("<pink>", "\u00A7d");
|
||||
parseReplacements.put("<yellow>", "\u00A7e");
|
||||
parseReplacements.put("<white>", "\u00A7f");
|
||||
parseReplacements.put("<magic>", "\u00A7k");
|
||||
parseReplacements.put("<bold>", "\u00A7l");
|
||||
parseReplacements.put("<strong>", "\u00A7l");
|
||||
parseReplacements.put("<strike>", "\u00A7m");
|
||||
parseReplacements.put("<strikethrough>", "\u00A7m");
|
||||
parseReplacements.put("<under>", "\u00A7n");
|
||||
parseReplacements.put("<underline>", "\u00A7n");
|
||||
parseReplacements.put("<italic>", "\u00A7o");
|
||||
parseReplacements.put("<em>", "\u00A7o");
|
||||
parseReplacements.put("<reset>", "\u00A7r");
|
||||
|
||||
// Color by semantic functionality
|
||||
parseReplacements.put("<l>", "\u00A72");
|
||||
@ -157,7 +167,7 @@ public class Txt
|
||||
// -------------------------------------------- //
|
||||
public static ArrayList<String> wrap(final String string)
|
||||
{
|
||||
return new ArrayList<String>(Arrays.asList(TextWrapper.wrapText(string)));
|
||||
return wrap(Arrays.asList(string.split("\\r?\\n")));
|
||||
}
|
||||
|
||||
public static ArrayList<String> wrap(final Collection<String> strings)
|
||||
@ -165,7 +175,7 @@ public class Txt
|
||||
ArrayList<String> ret = new ArrayList<String>();
|
||||
for (String line : strings)
|
||||
{
|
||||
ret.addAll(wrap(line));
|
||||
ret.addAll(Arrays.asList(TextWrapper.wrapText(line)));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user