Advertisement
Olivki

Totally legit thing

Jun 28th, 2013
359
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.98 KB | None | 0 0
  1. package se.proxus.mods.list.gui;
  2.  
  3. import java.util.LinkedList;
  4. import java.util.List;
  5.  
  6. import net.minecraft.src.EntityLiving;
  7. import net.minecraft.src.FontRenderer;
  8. import se.proxus.Gallium;
  9. import se.proxus.commands.Command;
  10. import se.proxus.commands.CommandType;
  11. import se.proxus.events.EventHandler;
  12. import se.proxus.events.list.client.EventRendered2D;
  13. import se.proxus.mods.Mod;
  14. import se.proxus.mods.ModCategory;
  15. import se.proxus.tools.Colours;
  16. import se.proxus.tools.Location;
  17. import se.proxus.tools.Tools;
  18.  
  19. public class Notifications extends Mod {
  20.  
  21.     private final static List<Notification> ACTIVE_NOTIFICATIONS = new LinkedList<Notification>();
  22.     private final static List<Notification> STORED_NOTIFICATIONS = new LinkedList<Notification>();
  23.  
  24.     public Notifications(final Gallium client) {
  25.     super("Notifications", ModCategory.GUI, true, client);
  26.     }
  27.  
  28.     @Override
  29.     public void init() {
  30.     setDescription("Some notification stuff.");
  31.     setState(true);
  32.     getClient().getCommands().registerCommand(
  33.         new Command("notifications",
  34.             ".notifications <add> [duration] [name]",
  35.             "Adds a notification.", getClient(),
  36.             CommandType.LISTHANDLER) {
  37.             @Override
  38.             public void onCommand(final String message,
  39.                 final String... args) {
  40.             if (args[0].equalsIgnoreCase("add")) {
  41.                 String name = message.substring(getCommand()
  42.                     .length()
  43.                     + args[0].length()
  44.                     + args[1].length() + 3);
  45.                 addNotification(new Notification(name.replace("&",
  46.                     "" + Colours.COLOUR_SYMBOL), name, Integer
  47.                     .parseInt(args[1])));
  48.                 getClient().getPlayer().addMessage(
  49.                     Colours.GREY + "Added '"
  50.                         + Colours.CLIENT_COLOUR + name
  51.                         + Colours.GREY + "' Duration '"
  52.                         + Colours.CLIENT_COLOUR
  53.                         + Integer.parseInt(args[1])
  54.                         + Colours.GREY + "'.");
  55.             }
  56.             }
  57.         });
  58.     }
  59.  
  60.     @Override
  61.     public void onEnable() {
  62.     getClient().getEvents().registerListener(this);
  63.     }
  64.  
  65.     @Override
  66.     public void onDisable() {
  67.     getClient().getEvents().unregisterListener(this);
  68.     getActiveNotifications().clear();
  69.     }
  70.  
  71.     @EventHandler
  72.     public void onEventRendered2D(final EventRendered2D event) {
  73.     FontRenderer font = event.getFont();
  74.     for (int size = 0; size < getActiveNotifications().size(); size++) {
  75.         Notification notification = getActiveNotifications().get(size);
  76.         int x = getClient().getResolution().getScaledWidth()
  77.             - event.getFont().getStringWidth(notification.getName())
  78.             - 2;
  79.         int y = getClient().getResolution().getScaledHeight() - 10;
  80.  
  81.         if (notification.getTicks() < Tools.secondsToTicks(notification
  82.             .getDuration())) {
  83.         notification.setTicks(notification.getTicks() + 1);
  84.         font.drawStringWithShadow(notification.getName(), x, y - size
  85.             * 9, 0xFFFFFFFF);
  86.         } else if (notification.getTicks() >= Tools
  87.             .secondsToTicks(notification.getDuration())) {
  88.         getActiveNotifications().remove(notification);
  89.         Tools.playSound("random.click", 1.0F, 2.0F);
  90.         }
  91.     }
  92.  
  93.     for (Object o : getClient().getMinecraft().theWorld.loadedEntityList)
  94.         if (o instanceof EntityLiving) {
  95.         EntityLiving entity = (EntityLiving) o;
  96.         double distance = getClient().getPlayer().getLocation()
  97.             .distanceTo(Location.entityToLocation(entity));
  98.         Notification entityNotification = new Notification(
  99.             entity.getEntityName() + " has entered attack range.",
  100.             entity.entityId, 4);
  101.  
  102.         if (distance <= 3.5F
  103.             && entity != getClient().getMinecraft().thePlayer)
  104.             addNotification(entityNotification);
  105.         }
  106.     }
  107.  
  108.     public void addNotification(final Notification notification) {
  109.     if (!isIdLoaded(notification.getId())) {
  110.         getActiveNotifications().add(notification);
  111.         getStoredNotifications().add(notification);
  112.         Tools.playSound("random.click", 1.0F, 1.0F);
  113.     }
  114.     }
  115.  
  116.     public boolean isIdLoaded(final Object id) {
  117.     for (Notification notification : getActiveNotifications())
  118.         if (notification.getId().equals(id))
  119.         return true;
  120.  
  121.     return false;
  122.     }
  123.  
  124.     public static List<Notification> getActiveNotifications() {
  125.     return ACTIVE_NOTIFICATIONS;
  126.     }
  127.  
  128.     public static List<Notification> getStoredNotifications() {
  129.     return STORED_NOTIFICATIONS;
  130.     }
  131.  
  132.     class Notification {
  133.  
  134.     private String name;
  135.     private int ticks;
  136.     private int duration;
  137.     private Object id;
  138.  
  139.     public Notification(final String name, final Object id,
  140.         final int duration) {
  141.         setName(name);
  142.         setId(id);
  143.         setDuration(duration);
  144.     }
  145.  
  146.     public String getName() {
  147.         return name;
  148.     }
  149.  
  150.     public void setName(final String name) {
  151.         this.name = name;
  152.     }
  153.  
  154.     public Object getId() {
  155.         return id;
  156.     }
  157.  
  158.     public void setId(final Object id) {
  159.         this.id = id;
  160.     }
  161.  
  162.     public int getTicks() {
  163.         return ticks;
  164.     }
  165.  
  166.     public void setTicks(final int ticks) {
  167.         this.ticks = ticks;
  168.     }
  169.  
  170.     public int getDuration() {
  171.         return duration;
  172.     }
  173.  
  174.     public void setDuration(final int duration) {
  175.         this.duration = duration;
  176.     }
  177.     }
  178. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement