diff --git a/.travis.yml b/.travis.yml index dff5f3a..bf018d2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1 +1,4 @@ language: java +jdk: + - oraclejdk8 + \ No newline at end of file diff --git a/pom.xml b/pom.xml index f84cb96..9960a2d 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,9 @@ http://maven.apache.org - src/main/java + + src/main/java src @@ -89,6 +91,14 @@ + @@ -117,6 +127,10 @@ Essentials http://repo.ess3.net/content/repositories/essrel/ + + projectlombok.org + http://projectlombok.org/mavenrepo + @@ -129,7 +143,7 @@ org.spigotmc spigot-api - 1.11-R0.1-SNAPSHOT + 1.12-R0.1-SNAPSHOT provided @@ -154,7 +168,7 @@ com.github.milkbowl VaultAPI - master-SNAPSHOT + master-SNAPSHOT provided @@ -162,5 +176,17 @@ Essentials 2.13.1 + + com.github.xaanit + D4J-OAuth + master-SNAPSHOT + + + + org.projectlombok + lombok + 1.16.16 + provided + diff --git a/src/main/java/buttondevteam/discordplugin/DiscordConnectedPlayer.java b/src/main/java/buttondevteam/discordplugin/DiscordConnectedPlayer.java new file mode 100644 index 0000000..0ac9e14 --- /dev/null +++ b/src/main/java/buttondevteam/discordplugin/DiscordConnectedPlayer.java @@ -0,0 +1,1854 @@ +package buttondevteam.discordplugin; + +import java.net.InetSocketAddress; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; + +import org.bukkit.Achievement; +import org.bukkit.Effect; +import org.bukkit.EntityEffect; +import org.bukkit.GameMode; +import org.bukkit.Instrument; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.Note; +import org.bukkit.Particle; +import org.bukkit.Server; +import org.bukkit.Sound; +import org.bukkit.SoundCategory; +import org.bukkit.Statistic; +import org.bukkit.WeatherType; +import org.bukkit.World; +import org.bukkit.advancement.Advancement; +import org.bukkit.advancement.AdvancementProgress; +import org.bukkit.attribute.Attribute; +import org.bukkit.attribute.AttributeInstance; +import org.bukkit.block.Block; +import org.bukkit.block.PistonMoveReaction; +import org.bukkit.conversations.Conversation; +import org.bukkit.conversations.ConversationAbandonedEvent; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; +import org.bukkit.entity.Villager; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; +import org.bukkit.inventory.EntityEquipment; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.bukkit.inventory.InventoryView.Property; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.MainHand; +import org.bukkit.inventory.Merchant; +import org.bukkit.inventory.PlayerInventory; +import org.bukkit.map.MapView; +import org.bukkit.metadata.MetadataValue; +import org.bukkit.permissions.Permission; +import org.bukkit.permissions.PermissionAttachment; +import org.bukkit.permissions.PermissionAttachmentInfo; +import org.bukkit.plugin.Plugin; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import org.bukkit.scoreboard.Scoreboard; +import org.bukkit.util.Vector; + +public class DiscordConnectedPlayer implements Player { + + @Override + public void closeInventory() { + } + + @Override + public int getCooldown(Material arg0) { + return 0; + } + + @Override + public Inventory getEnderChest() { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getExpToLevel() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public GameMode getGameMode() { + // TODO Auto-generated method stub + return null; + } + + @Override + public PlayerInventory getInventory() { + // TODO Auto-generated method stub + return null; + } + + @Override + public ItemStack getItemInHand() { + // TODO Auto-generated method stub + return null; + } + + @Override + public ItemStack getItemOnCursor() { + // TODO Auto-generated method stub + return null; + } + + @Override + public MainHand getMainHand() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getName() { + // TODO Auto-generated method stub + return null; + } + + @Override + public InventoryView getOpenInventory() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Entity getShoulderEntityLeft() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Entity getShoulderEntityRight() { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getSleepTicks() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public boolean hasCooldown(Material arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isBlocking() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isHandRaised() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isSleeping() { + // TODO Auto-generated method stub + return false; + } + + @Override + public InventoryView openEnchanting(Location arg0, boolean arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public InventoryView openInventory(Inventory arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void openInventory(InventoryView arg0) { + // TODO Auto-generated method stub + + } + + @Override + public InventoryView openMerchant(Villager arg0, boolean arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public InventoryView openMerchant(Merchant arg0, boolean arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public InventoryView openWorkbench(Location arg0, boolean arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setCooldown(Material arg0, int arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void setGameMode(GameMode arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setItemInHand(ItemStack arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setItemOnCursor(ItemStack arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setShoulderEntityLeft(Entity arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setShoulderEntityRight(Entity arg0) { + // TODO Auto-generated method stub + + } + + @Override + public boolean setWindowProperty(Property arg0, int arg1) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean addPotionEffect(PotionEffect arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean addPotionEffect(PotionEffect arg0, boolean arg1) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean addPotionEffects(Collection arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public Collection getActivePotionEffects() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean getCanPickupItems() { + // TODO Auto-generated method stub + return false; + } + + @Override + public EntityEquipment getEquipment() { + // TODO Auto-generated method stub + return null; + } + + @Override + public double getEyeHeight() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public double getEyeHeight(boolean arg0) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public Location getEyeLocation() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Player getKiller() { + // TODO Auto-generated method stub + return null; + } + + @Override + public double getLastDamage() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public List getLastTwoTargetBlocks(HashSet arg0, int arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List getLastTwoTargetBlocks(Set arg0, int arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Entity getLeashHolder() throws IllegalStateException { + // TODO Auto-generated method stub + return null; + } + + @Override + public List getLineOfSight(Set arg0, int arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getMaximumAir() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getMaximumNoDamageTicks() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getNoDamageTicks() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public PotionEffect getPotionEffect(PotionEffectType arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getRemainingAir() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public boolean getRemoveWhenFarAway() { + // TODO Auto-generated method stub + return false; + } + + @Override + public Block getTargetBlock(HashSet arg0, int arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Block getTargetBlock(Set arg0, int arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean hasAI() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean hasLineOfSight(Entity arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean hasPotionEffect(PotionEffectType arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isCollidable() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isGliding() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isLeashed() { + // TODO Auto-generated method stub + return false; + } + + @Override + public void removePotionEffect(PotionEffectType arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setAI(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setCanPickupItems(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setCollidable(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setGliding(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setLastDamage(double arg0) { + // TODO Auto-generated method stub + + } + + @Override + public boolean setLeashHolder(Entity arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void setMaximumAir(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setMaximumNoDamageTicks(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setNoDamageTicks(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setRemainingAir(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setRemoveWhenFarAway(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public AttributeInstance getAttribute(Attribute arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean addPassenger(Entity arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean addScoreboardTag(String arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean eject() { + // TODO Auto-generated method stub + return false; + } + + @Override + public int getEntityId() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public float getFallDistance() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getFireTicks() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public double getHeight() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public EntityDamageEvent getLastDamageCause() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Location getLocation() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Location getLocation(Location arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getMaxFireTicks() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public List getNearbyEntities(double arg0, double arg1, double arg2) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Entity getPassenger() { + // TODO Auto-generated method stub + return null; + } + + @Override + public List getPassengers() { + // TODO Auto-generated method stub + return null; + } + + @Override + public PistonMoveReaction getPistonMoveReaction() { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getPortalCooldown() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public Set getScoreboardTags() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Server getServer() { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getTicksLived() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public EntityType getType() { + // TODO Auto-generated method stub + return null; + } + + @Override + public UUID getUniqueId() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Entity getVehicle() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Vector getVelocity() { + // TODO Auto-generated method stub + return null; + } + + @Override + public double getWidth() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public World getWorld() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean hasGravity() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isCustomNameVisible() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isDead() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isEmpty() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isGlowing() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isInsideVehicle() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isInvulnerable() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isOnGround() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isSilent() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isValid() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean leaveVehicle() { + // TODO Auto-generated method stub + return false; + } + + @Override + public void playEffect(EntityEffect arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void remove() { + // TODO Auto-generated method stub + + } + + @Override + public boolean removePassenger(Entity arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean removeScoreboardTag(String arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void setCustomNameVisible(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setFallDistance(float arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setFireTicks(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setGlowing(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setGravity(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setInvulnerable(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setLastDamageCause(EntityDamageEvent arg0) { + // TODO Auto-generated method stub + + } + + @Override + public boolean setPassenger(Entity arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void setPortalCooldown(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setSilent(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setTicksLived(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setVelocity(Vector arg0) { + // TODO Auto-generated method stub + + } + + @Override + public boolean teleport(Location arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean teleport(Entity arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean teleport(Location arg0, TeleportCause arg1) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean teleport(Entity arg0, TeleportCause arg1) { + // TODO Auto-generated method stub + return false; + } + + @Override + public List getMetadata(String arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean hasMetadata(String arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void removeMetadata(String arg0, Plugin arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void setMetadata(String arg0, MetadataValue arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void sendMessage(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void sendMessage(String[] arg0) { + // TODO Auto-generated method stub + + } + + @Override + public PermissionAttachment addAttachment(Plugin arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public PermissionAttachment addAttachment(Plugin arg0, int arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public PermissionAttachment addAttachment(Plugin arg0, String arg1, boolean arg2) { + // TODO Auto-generated method stub + return null; + } + + @Override + public PermissionAttachment addAttachment(Plugin arg0, String arg1, boolean arg2, int arg3) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Set getEffectivePermissions() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean hasPermission(String arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean hasPermission(Permission arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isPermissionSet(String arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isPermissionSet(Permission arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void recalculatePermissions() { + // TODO Auto-generated method stub + + } + + @Override + public void removeAttachment(PermissionAttachment arg0) { + // TODO Auto-generated method stub + + } + + @Override + public boolean isOp() { + // TODO Auto-generated method stub + return false; + } + + @Override + public void setOp(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public String getCustomName() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setCustomName(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void damage(double arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void damage(double arg0, Entity arg1) { + // TODO Auto-generated method stub + + } + + @Override + public double getHealth() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public double getMaxHealth() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public void resetMaxHealth() { + // TODO Auto-generated method stub + + } + + @Override + public void setHealth(double arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setMaxHealth(double arg0) { + // TODO Auto-generated method stub + + } + + @Override + public T launchProjectile(Class arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public T launchProjectile(Class arg0, Vector arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void abandonConversation(Conversation arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void abandonConversation(Conversation arg0, ConversationAbandonedEvent arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void acceptConversationInput(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public boolean beginConversation(Conversation arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isConversing() { + // TODO Auto-generated method stub + return false; + } + + @Override + public long getFirstPlayed() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public long getLastPlayed() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public Player getPlayer() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean hasPlayedBefore() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isBanned() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isOnline() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isWhitelisted() { + // TODO Auto-generated method stub + return false; + } + + @Override + public void setWhitelisted(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public Map serialize() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Set getListeningPluginChannels() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void sendPluginMessage(Plugin arg0, String arg1, byte[] arg2) { + // TODO Auto-generated method stub + + } + + @Override + public void awardAchievement(Achievement arg0) { + // TODO Auto-generated method stub + + } + + @Override + public boolean canSee(Player arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void chat(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void decrementStatistic(Statistic arg0) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void decrementStatistic(Statistic arg0, int arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void decrementStatistic(Statistic arg0, Material arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void decrementStatistic(Statistic arg0, EntityType arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void decrementStatistic(Statistic arg0, Material arg1, int arg2) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void decrementStatistic(Statistic arg0, EntityType arg1, int arg2) { + // TODO Auto-generated method stub + + } + + @Override + public InetSocketAddress getAddress() { + // TODO Auto-generated method stub + return null; + } + + @Override + public AdvancementProgress getAdvancementProgress(Advancement arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean getAllowFlight() { + // TODO Auto-generated method stub + return false; + } + + @Override + public Location getBedSpawnLocation() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Location getCompassTarget() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getDisplayName() { + // TODO Auto-generated method stub + return null; + } + + @Override + public float getExhaustion() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public float getExp() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public float getFlySpeed() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getFoodLevel() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public double getHealthScale() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getLevel() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public String getLocale() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getPlayerListName() { + // TODO Auto-generated method stub + return null; + } + + @Override + public long getPlayerTime() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public long getPlayerTimeOffset() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public WeatherType getPlayerWeather() { + // TODO Auto-generated method stub + return null; + } + + @Override + public float getSaturation() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public Scoreboard getScoreboard() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Entity getSpectatorTarget() { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getStatistic(Statistic arg0) throws IllegalArgumentException { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getStatistic(Statistic arg0, Material arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getStatistic(Statistic arg0, EntityType arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getTotalExperience() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public float getWalkSpeed() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public void giveExp(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void giveExpLevels(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public boolean hasAchievement(Achievement arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void hidePlayer(Player arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void incrementStatistic(Statistic arg0) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void incrementStatistic(Statistic arg0, int arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void incrementStatistic(Statistic arg0, Material arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void incrementStatistic(Statistic arg0, EntityType arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void incrementStatistic(Statistic arg0, Material arg1, int arg2) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void incrementStatistic(Statistic arg0, EntityType arg1, int arg2) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public boolean isFlying() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isHealthScaled() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isPlayerTimeRelative() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isSleepingIgnored() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isSneaking() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isSprinting() { + // TODO Auto-generated method stub + return false; + } + + @Override + public void kickPlayer(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void loadData() { + // TODO Auto-generated method stub + + } + + @Override + public boolean performCommand(String arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void playEffect(Location arg0, Effect arg1, int arg2) { + // TODO Auto-generated method stub + + } + + @Override + public void playEffect(Location arg0, Effect arg1, T arg2) { + // TODO Auto-generated method stub + + } + + @Override + public void playNote(Location arg0, byte arg1, byte arg2) { + // TODO Auto-generated method stub + + } + + @Override + public void playNote(Location arg0, Instrument arg1, Note arg2) { + // TODO Auto-generated method stub + + } + + @Override + public void playSound(Location arg0, Sound arg1, float arg2, float arg3) { + // TODO Auto-generated method stub + + } + + @Override + public void playSound(Location arg0, String arg1, float arg2, float arg3) { + // TODO Auto-generated method stub + + } + + @Override + public void playSound(Location arg0, Sound arg1, SoundCategory arg2, float arg3, float arg4) { + // TODO Auto-generated method stub + + } + + @Override + public void playSound(Location arg0, String arg1, SoundCategory arg2, float arg3, float arg4) { + // TODO Auto-generated method stub + + } + + @Override + public void removeAchievement(Achievement arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void resetPlayerTime() { + // TODO Auto-generated method stub + + } + + @Override + public void resetPlayerWeather() { + // TODO Auto-generated method stub + + } + + @Override + public void resetTitle() { + // TODO Auto-generated method stub + + } + + @Override + public void saveData() { + // TODO Auto-generated method stub + + } + + @Override + public void sendBlockChange(Location arg0, Material arg1, byte arg2) { + // TODO Auto-generated method stub + + } + + @Override + public void sendBlockChange(Location arg0, int arg1, byte arg2) { + // TODO Auto-generated method stub + + } + + @Override + public boolean sendChunkChange(Location arg0, int arg1, int arg2, int arg3, byte[] arg4) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void sendMap(MapView arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void sendRawMessage(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void sendSignChange(Location arg0, String[] arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void sendTitle(String arg0, String arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void sendTitle(String arg0, String arg1, int arg2, int arg3, int arg4) { + // TODO Auto-generated method stub + + } + + @Override + public void setAllowFlight(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setBedSpawnLocation(Location arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setBedSpawnLocation(Location arg0, boolean arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void setCompassTarget(Location arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setDisplayName(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setExhaustion(float arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setExp(float arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setFlySpeed(float arg0) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void setFlying(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setFoodLevel(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setHealthScale(double arg0) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void setHealthScaled(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setLevel(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setPlayerListName(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setPlayerTime(long arg0, boolean arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void setPlayerWeather(WeatherType arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setResourcePack(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setResourcePack(String arg0, byte[] arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void setSaturation(float arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setScoreboard(Scoreboard arg0) throws IllegalArgumentException, IllegalStateException { + // TODO Auto-generated method stub + + } + + @Override + public void setSleepingIgnored(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setSneaking(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setSpectatorTarget(Entity arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setSprinting(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setStatistic(Statistic arg0, int arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void setStatistic(Statistic arg0, Material arg1, int arg2) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void setStatistic(Statistic arg0, EntityType arg1, int arg2) { + // TODO Auto-generated method stub + + } + + @Override + public void setTexturePack(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setTotalExperience(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setWalkSpeed(float arg0) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void showPlayer(Player arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, Location arg1, int arg2) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, Location arg1, int arg2, T arg3) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, double arg1, double arg2, double arg3, int arg4) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, double arg1, double arg2, double arg3, int arg4, T arg5) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, Location arg1, int arg2, double arg3, double arg4, double arg5) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, Location arg1, int arg2, double arg3, double arg4, double arg5, + T arg6) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, Location arg1, int arg2, double arg3, double arg4, double arg5, + double arg6) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, double arg1, double arg2, double arg3, int arg4, double arg5, double arg6, + double arg7) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, Location arg1, int arg2, double arg3, double arg4, double arg5, + double arg6, T arg7) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, double arg1, double arg2, double arg3, int arg4, double arg5, + double arg6, double arg7, T arg8) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, double arg1, double arg2, double arg3, int arg4, double arg5, double arg6, + double arg7, double arg8) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, double arg1, double arg2, double arg3, int arg4, double arg5, + double arg6, double arg7, double arg8, T arg9) { + // TODO Auto-generated method stub + + } + + @Override + public void stopSound(Sound arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void stopSound(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void stopSound(Sound arg0, SoundCategory arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void stopSound(String arg0, SoundCategory arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void updateInventory() { + // TODO Auto-generated method stub + + } + + @Override + public Spigot spigot() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlayer.java b/src/main/java/buttondevteam/discordplugin/DiscordPlayer.java index 5389a42..48d957a 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlayer.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlayer.java @@ -1,6 +1,7 @@ package buttondevteam.discordplugin; import buttondevteam.lib.player.ChromaGamerBase; +import buttondevteam.lib.player.PlayerData; import buttondevteam.lib.player.UserClass; @UserClass(foldername = "discord") @@ -15,4 +16,8 @@ public class DiscordPlayer extends ChromaGamerBase { did = plugindata.getString(getFolder() + "_id"); return did; } + + public PlayerData minecraftChat() { + return data(false); + } } diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java b/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java index de9caea..3edf995 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java @@ -1,11 +1,20 @@ package buttondevteam.discordplugin; import java.net.InetSocketAddress; -import java.util.*; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; + import org.bukkit.*; +import org.bukkit.advancement.Advancement; +import org.bukkit.advancement.AdvancementProgress; import org.bukkit.attribute.Attribute; import org.bukkit.attribute.AttributeInstance; import org.bukkit.block.Block; +import org.bukkit.block.PistonMoveReaction; import org.bukkit.conversations.Conversation; import org.bukkit.conversations.ConversationAbandonedEvent; import org.bukkit.entity.*; @@ -27,7 +36,11 @@ import sx.blah.discord.handle.obj.IUser; @SuppressWarnings("deprecation") public class DiscordPlayerSender extends DiscordSenderBase implements Player { - private Player player; + + protected Player player; + // protected @Delegate(excludes = ProjectileSource.class) Player player; + // protected @Delegate(excludes = { ProjectileSource.class, Permissible.class }) Player player; + // protected @Delegate(excludes = { ProjectileSource.class, CommandSender.class }) Player player; public DiscordPlayerSender(IUser user, IChannel channel, Player player) { super(user, channel); @@ -35,1482 +48,1197 @@ public class DiscordPlayerSender extends DiscordSenderBase implements Player { } @Override - public boolean isPermissionSet(String name) { - return player.isPermissionSet(name); + public T launchProjectile(Class arg0) { + return player.launchProjectile(arg0); } @Override - public boolean isPermissionSet(Permission perm) { - return this.player.isPermissionSet(perm); + public T launchProjectile(Class arg0, Vector arg1) { + return player.launchProjectile(arg0, arg1); } - @Override - public boolean hasPermission(String name) { - return player.hasPermission(name); + public String getCustomName() { + return player.getCustomName(); } - @Override - public boolean hasPermission(Permission perm) { - return this.player.hasPermission(perm); + public AttributeInstance getAttribute(Attribute attribute) { + return player.getAttribute(attribute); } - @Override - public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value) { - return player.addAttachment(plugin, name, value); + public void damage(double amount) { + player.damage(amount); } - @Override - public PermissionAttachment addAttachment(Plugin plugin) { - return player.addAttachment(plugin); - } - - @Override - public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value, int ticks) { - return player.addAttachment(plugin, name, value, ticks); - } - - @Override - public PermissionAttachment addAttachment(Plugin plugin, int ticks) { - return player.addAttachment(plugin, ticks); - } - - @Override - public void removeAttachment(PermissionAttachment attachment) { - player.removeAttachment(attachment); - } - - @Override - public void recalculatePermissions() { - player.recalculatePermissions(); - } - - @Override - public Set getEffectivePermissions() { - return player.getEffectivePermissions(); - } - - @Override public boolean isOp() { return player.isOp(); } - @Override + public void sendPluginMessage(Plugin source, String channel, byte[] message) { + player.sendPluginMessage(source, channel, message); + } + + public boolean isConversing() { + return player.isConversing(); + } + + public boolean isPermissionSet(String name) { + return player.isPermissionSet(name); + } + + public void setMetadata(String metadataKey, MetadataValue newMetadataValue) { + player.setMetadata(metadataKey, newMetadataValue); + } + + public void damage(double amount, Entity source) { + player.damage(amount, source); + } + + public boolean isOnline() { + return player.isOnline(); + } + + public void setCustomName(String name) { + player.setCustomName(name); + } + public void setOp(boolean value) { player.setOp(value); } - @Override - public Server getServer() { - return Bukkit.getServer(); + public void acceptConversationInput(String input) { + player.acceptConversationInput(input); + } + + public boolean isPermissionSet(Permission perm) { + return player.isPermissionSet(perm); + } + + public double getEyeHeight() { + return player.getEyeHeight(); } - @Override public String getName() { return player.getName(); } - // Find: " (\w+)\(\) \{\s+\/\/ TO\DO Auto-generated method stub\s+return null;" - Replace: " $1() { return player.$1();" - @Override + public double getHealth() { + return player.getHealth(); + } + + public List getMetadata(String metadataKey) { + return player.getMetadata(metadataKey); + } + + public Location getLocation() { + return player.getLocation(); + } + + public boolean beginConversation(Conversation conversation) { + return player.beginConversation(conversation); + } + + public PlayerInventory getInventory() { + return player.getInventory(); + } + + public boolean hasPermission(String name) { + return player.hasPermission(name); + } + + public double getEyeHeight(boolean ignoreSneaking) { + return player.getEyeHeight(ignoreSneaking); + } + + public void setHealth(double health) { + player.setHealth(health); + } + + public Location getLocation(Location loc) { + return player.getLocation(loc); + } + + public Map serialize() { + return player.serialize(); + } + + public Inventory getEnderChest() { + return player.getEnderChest(); + } + + public boolean isBanned() { + return player.isBanned(); + } + + public void abandonConversation(Conversation conversation) { + player.abandonConversation(conversation); + } + + public boolean hasMetadata(String metadataKey) { + return player.hasMetadata(metadataKey); + } + public String getDisplayName() { return player.getDisplayName(); } - // Find: " (\w+)\((\w+) (\w+)\) \{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3) { player.$1($3);" - @Override + public MainHand getMainHand() { + return player.getMainHand(); + } + + public Location getEyeLocation() { + return player.getEyeLocation(); + } + + public boolean isWhitelisted() { + return player.isWhitelisted(); + } + + public boolean hasPermission(Permission perm) { + return player.hasPermission(perm); + } + + public Set getListeningPluginChannels() { + return player.getListeningPluginChannels(); + } + + public double getMaxHealth() { + return player.getMaxHealth(); + } + + public void abandonConversation(Conversation conversation, ConversationAbandonedEvent details) { + player.abandonConversation(conversation, details); + } + + public void setVelocity(Vector velocity) { + player.setVelocity(velocity); + } + + public boolean setWindowProperty(Property prop, int value) { + return player.setWindowProperty(prop, value); + } + + public void setWhitelisted(boolean value) { + player.setWhitelisted(value); + } + + public void removeMetadata(String metadataKey, Plugin owningPlugin) { + player.removeMetadata(metadataKey, owningPlugin); + } + + public List getLineOfSight(Set transparent, int maxDistance) { + return player.getLineOfSight(transparent, maxDistance); + } + public void setDisplayName(String name) { player.setDisplayName(name); } - @Override + public Vector getVelocity() { + return player.getVelocity(); + } + + public void setMaxHealth(double health) { + player.setMaxHealth(health); + } + + public Player getPlayer() { + return player.getPlayer(); + } + + public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value) { + return player.addAttachment(plugin, name, value); + } + + public double getHeight() { + return player.getHeight(); + } + + public double getWidth() { + return player.getWidth(); + } + + public InventoryView getOpenInventory() { + return player.getOpenInventory(); + } + public String getPlayerListName() { return player.getPlayerListName(); } - @Override + public long getFirstPlayed() { + return player.getFirstPlayed(); + } + + public boolean isOnGround() { + return player.isOnGround(); + } + public void setPlayerListName(String name) { player.setPlayerListName(name); } - @Override + public void resetMaxHealth() { + player.resetMaxHealth(); + } + + public InventoryView openInventory(Inventory inventory) { + return player.openInventory(inventory); + } + + public PermissionAttachment addAttachment(Plugin plugin) { + return player.addAttachment(plugin); + } + + public Block getTargetBlock(HashSet transparent, int maxDistance) { + return player.getTargetBlock(transparent, maxDistance); + } + + public World getWorld() { + return player.getWorld(); + } + + public long getLastPlayed() { + return player.getLastPlayed(); + } + + public boolean teleport(Location location) { + return player.teleport(location); + } + + public InventoryView openWorkbench(Location location, boolean force) { + return player.openWorkbench(location, force); + } + + public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value, int ticks) { + return player.addAttachment(plugin, name, value, ticks); + } + + public boolean teleport(Location location, TeleportCause cause) { + return player.teleport(location, cause); + } + + public Block getTargetBlock(Set transparent, int maxDistance) { + return player.getTargetBlock(transparent, maxDistance); + } + + public boolean hasPlayedBefore() { + return player.hasPlayedBefore(); + } + + public InventoryView openEnchanting(Location location, boolean force) { + return player.openEnchanting(location, force); + } + + public PermissionAttachment addAttachment(Plugin plugin, int ticks) { + return player.addAttachment(plugin, ticks); + } + + public boolean teleport(Entity destination) { + return player.teleport(destination); + } + public void setCompassTarget(Location loc) { player.setCompassTarget(loc); } - @Override + public List getLastTwoTargetBlocks(HashSet transparent, int maxDistance) { + return player.getLastTwoTargetBlocks(transparent, maxDistance); + } + public Location getCompassTarget() { return player.getCompassTarget(); } - @Override public InetSocketAddress getAddress() { return player.getAddress(); } - @Override + public boolean teleport(Entity destination, TeleportCause cause) { + return player.teleport(destination, cause); + } + + public void openInventory(InventoryView inventory) { + player.openInventory(inventory); + } + + public void removeAttachment(PermissionAttachment attachment) { + player.removeAttachment(attachment); + } + public void sendRawMessage(String message) { player.sendRawMessage(message); } - @Override + public InventoryView openMerchant(Villager trader, boolean force) { + return player.openMerchant(trader, force); + } + public void kickPlayer(String message) { player.kickPlayer(message); } - @Override + public List getLastTwoTargetBlocks(Set transparent, int maxDistance) { + return player.getLastTwoTargetBlocks(transparent, maxDistance); + } + + public void recalculatePermissions() { + player.recalculatePermissions(); + } + + public List getNearbyEntities(double x, double y, double z) { + return player.getNearbyEntities(x, y, z); + } + public void chat(String msg) { player.chat(msg); } - @Override public boolean performCommand(String command) { return player.performCommand(command); } - // Find: " (\w+)\(\) \{\s+\/\/ TO\DO Auto-generated method stub\s+return false;" - Replace: " $1() { return player.$1();" - @Override + public Set getEffectivePermissions() { + return player.getEffectivePermissions(); + } + + public InventoryView openMerchant(Merchant merchant, boolean force) { + return player.openMerchant(merchant, force); + } + public boolean isSneaking() { return player.isSneaking(); } - @Override + public int getEntityId() { + return player.getEntityId(); + } + public void setSneaking(boolean sneak) { player.setSneaking(sneak); } - @Override + public int getFireTicks() { + return player.getFireTicks(); + } + + public int getRemainingAir() { + return player.getRemainingAir(); + } + public boolean isSprinting() { return player.isSprinting(); } - @Override + public int getMaxFireTicks() { + return player.getMaxFireTicks(); + } + + public void setRemainingAir(int ticks) { + player.setRemainingAir(ticks); + } + public void setSprinting(boolean sprinting) { player.setSprinting(sprinting); } - @Override + public void setFireTicks(int ticks) { + player.setFireTicks(ticks); + } + + public void closeInventory() { + player.closeInventory(); + } + + public int getMaximumAir() { + return player.getMaximumAir(); + } + + public ItemStack getItemInHand() { + return player.getItemInHand(); + } + public void saveData() { player.saveData(); } - @Override + public void remove() { + player.remove(); + } + + public void setMaximumAir(int ticks) { + player.setMaximumAir(ticks); + } + + public boolean isDead() { + return player.isDead(); + } + public void loadData() { player.loadData(); } - @Override + public boolean isValid() { + return player.isValid(); + } + + public int getMaximumNoDamageTicks() { + return player.getMaximumNoDamageTicks(); + } + + public void setItemInHand(ItemStack item) { + player.setItemInHand(item); + } + + public Server getServer() { + return player.getServer(); + } + + public void setMaximumNoDamageTicks(int ticks) { + player.setMaximumNoDamageTicks(ticks); + } + public void setSleepingIgnored(boolean isSleeping) { player.setSleepingIgnored(isSleeping); } - @Override + public Entity getPassenger() { + return player.getPassenger(); + } + + public ItemStack getItemOnCursor() { + return player.getItemOnCursor(); + } + + public double getLastDamage() { + return player.getLastDamage(); + } + + public boolean setPassenger(Entity passenger) { + return player.setPassenger(passenger); + } + + public void setItemOnCursor(ItemStack item) { + player.setItemOnCursor(item); + } + public boolean isSleepingIgnored() { return player.isSleepingIgnored(); } - // Find: " (\w+)\((\w+) (\w+), (\w+) (\w+), (\w+) (\w+)\) \{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3, $4 $5, $6 $7) { player.$1($3, $5, $7);" - @Override + public void setLastDamage(double damage) { + player.setLastDamage(damage); + } + public void playNote(Location loc, byte instrument, byte note) { player.playNote(loc, instrument, note); } - @Override + public boolean hasCooldown(Material material) { + return player.hasCooldown(material); + } + + public int getNoDamageTicks() { + return player.getNoDamageTicks(); + } + + public List getPassengers() { + return player.getPassengers(); + } + + public void setNoDamageTicks(int ticks) { + player.setNoDamageTicks(ticks); + } + + public int getCooldown(Material material) { + return player.getCooldown(material); + } + public void playNote(Location loc, Instrument instrument, Note note) { player.playNote(loc, instrument, note); } - // Find: " (\w+)\((\w+) (\w+), (\w+) (\w+), (\w+) (\w+), (\w+) (\w+)\) \{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3, $4 $5, $6 $7, $8 $9) { player.$1($3, $5, $7, $9);" - @Override + public Player getKiller() { + return player.getKiller(); + } + + public boolean addPassenger(Entity passenger) { + return player.addPassenger(passenger); + } + + public void setCooldown(Material material, int ticks) { + player.setCooldown(material, ticks); + } + + public boolean addPotionEffect(PotionEffect effect) { + return player.addPotionEffect(effect); + } + + public boolean removePassenger(Entity passenger) { + return player.removePassenger(passenger); + } + public void playSound(Location location, Sound sound, float volume, float pitch) { player.playSound(location, sound, volume, pitch); } - @Override + public boolean isEmpty() { + return player.isEmpty(); + } + + public boolean addPotionEffect(PotionEffect effect, boolean force) { + return player.addPotionEffect(effect, force); + } + + public boolean eject() { + return player.eject(); + } + + public boolean isSleeping() { + return player.isSleeping(); + } + + public float getFallDistance() { + return player.getFallDistance(); + } + public void playSound(Location location, String sound, float volume, float pitch) { player.playSound(location, sound, volume, pitch); } - // Find: " (\w+)\((\w+) (\w+), (\w+) (\w+), (\w+) (\w+), (\w+) (\w+), (\w+) (\w+)\) \{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3, $4 $5, $6 $7, $8 $9, $10 $11) { - // player.$1($3, $5, $7, $9, $11);" - @Override + public int getSleepTicks() { + return player.getSleepTicks(); + } + + public void setFallDistance(float distance) { + player.setFallDistance(distance); + } + + public boolean addPotionEffects(Collection effects) { + return player.addPotionEffects(effects); + } + + public GameMode getGameMode() { + return player.getGameMode(); + } + + public void setLastDamageCause(EntityDamageEvent event) { + player.setLastDamageCause(event); + } + + public void setGameMode(GameMode mode) { + player.setGameMode(mode); + } + + public EntityDamageEvent getLastDamageCause() { + return player.getLastDamageCause(); + } + + public boolean hasPotionEffect(PotionEffectType type) { + return player.hasPotionEffect(type); + } + + public boolean isBlocking() { + return player.isBlocking(); + } + public void playSound(Location location, Sound sound, SoundCategory category, float volume, float pitch) { player.playSound(location, sound, category, volume, pitch); } - @Override + public boolean isHandRaised() { + return player.isHandRaised(); + } + + public UUID getUniqueId() { + return player.getUniqueId(); + } + + public PotionEffect getPotionEffect(PotionEffectType type) { + return player.getPotionEffect(type); + } + + public int getTicksLived() { + return player.getTicksLived(); + } + + public int getExpToLevel() { + return player.getExpToLevel(); + } + + public Entity getShoulderEntityLeft() { + return player.getShoulderEntityLeft(); + } + + public void setTicksLived(int value) { + player.setTicksLived(value); + } + public void playSound(Location location, String sound, SoundCategory category, float volume, float pitch) { player.playSound(location, sound, category, volume, pitch); } - @Override + public void removePotionEffect(PotionEffectType type) { + player.removePotionEffect(type); + } + + public void playEffect(EntityEffect type) { + player.playEffect(type); + } + + public Collection getActivePotionEffects() { + return player.getActivePotionEffects(); + } + + public void setShoulderEntityLeft(Entity entity) { + player.setShoulderEntityLeft(entity); + } + + public boolean hasLineOfSight(Entity other) { + return player.hasLineOfSight(other); + } + + public EntityType getType() { + return player.getType(); + } + + public boolean isInsideVehicle() { + return player.isInsideVehicle(); + } + public void stopSound(Sound sound) { player.stopSound(sound); } - @Override + public boolean leaveVehicle() { + return player.leaveVehicle(); + } + public void stopSound(String sound) { player.stopSound(sound); } - @Override + public boolean getRemoveWhenFarAway() { + return player.getRemoveWhenFarAway(); + } + public void stopSound(Sound sound, SoundCategory category) { player.stopSound(sound, category); } - @Override + public Entity getVehicle() { + return player.getVehicle(); + } + + public Entity getShoulderEntityRight() { + return player.getShoulderEntityRight(); + } + + public void setRemoveWhenFarAway(boolean remove) { + player.setRemoveWhenFarAway(remove); + } + public void stopSound(String sound, SoundCategory category) { player.stopSound(sound, category); } - @Override + public void setCustomNameVisible(boolean flag) { + player.setCustomNameVisible(flag); + } + + public EntityEquipment getEquipment() { + return player.getEquipment(); + } + public void playEffect(Location loc, Effect effect, int data) { player.playEffect(loc, effect, data); } - @Override + public void setCanPickupItems(boolean pickup) { + player.setCanPickupItems(pickup); + } + + public void setShoulderEntityRight(Entity entity) { + player.setShoulderEntityRight(entity); + } + + public boolean isCustomNameVisible() { + return player.isCustomNameVisible(); + } + public void playEffect(Location loc, Effect effect, T data) { player.playEffect(loc, effect, data); } - @Override + public boolean getCanPickupItems() { + return player.getCanPickupItems(); + } + + public void setGlowing(boolean flag) { + player.setGlowing(flag); + } + + public boolean isLeashed() { + return player.isLeashed(); + } + public void sendBlockChange(Location loc, Material material, byte data) { player.sendBlockChange(loc, material, data); } - // Find: " (\w+)\((\w+) (\w+), (\w+) (\w+), (\w+) (\w+), (\w+) (\w+), (\w+) (\w+), (\w+) (\w+)\) \{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3, $4 $5, $6 $7, $8 $9, $10 $11, - // $12 $13) { player.$1($3, $5, $7, $9, $11, $13);" + public boolean isGlowing() { + return player.isGlowing(); + } + + public Entity getLeashHolder() throws IllegalStateException { + return player.getLeashHolder(); + } + + public void setInvulnerable(boolean flag) { + player.setInvulnerable(flag); + } + + public boolean setLeashHolder(Entity holder) { + return player.setLeashHolder(holder); + } - @Override public boolean sendChunkChange(Location loc, int sx, int sy, int sz, byte[] data) { return player.sendChunkChange(loc, sx, sy, sz, data); } - @Override + public boolean isInvulnerable() { + return player.isInvulnerable(); + } + + public boolean isSilent() { + return player.isSilent(); + } + + public void setSilent(boolean flag) { + player.setSilent(flag); + } + + public boolean isGliding() { + return player.isGliding(); + } + + public void setGliding(boolean gliding) { + player.setGliding(gliding); + } + + public boolean hasGravity() { + return player.hasGravity(); + } + + public void setGravity(boolean gravity) { + player.setGravity(gravity); + } + public void sendBlockChange(Location loc, int material, byte data) { player.sendBlockChange(loc, material, data); } - @Override + public void setAI(boolean ai) { + player.setAI(ai); + } + + public int getPortalCooldown() { + return player.getPortalCooldown(); + } + + public boolean hasAI() { + return player.hasAI(); + } + + public void setPortalCooldown(int cooldown) { + player.setPortalCooldown(cooldown); + } + + public void setCollidable(boolean collidable) { + player.setCollidable(collidable); + } + + public Set getScoreboardTags() { + return player.getScoreboardTags(); + } + public void sendSignChange(Location loc, String[] lines) throws IllegalArgumentException { player.sendSignChange(loc, lines); } - @Override + public boolean addScoreboardTag(String tag) { + return player.addScoreboardTag(tag); + } + + public boolean isCollidable() { + return player.isCollidable(); + } + + public boolean removeScoreboardTag(String tag) { + return player.removeScoreboardTag(tag); + } + + public PistonMoveReaction getPistonMoveReaction() { + return player.getPistonMoveReaction(); + } + public void sendMap(MapView map) { player.sendMap(map); } - // Find: " (\w+)\(\) \{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1() { player.$1();" - @Override public void updateInventory() { player.updateInventory(); } - @Override public void awardAchievement(Achievement achievement) { player.awardAchievement(achievement); } - @Override public void removeAchievement(Achievement achievement) { player.removeAchievement(achievement); } - @Override public boolean hasAchievement(Achievement achievement) { return player.hasAchievement(achievement); } - @Override public void incrementStatistic(Statistic statistic) throws IllegalArgumentException { player.incrementStatistic(statistic); } - @Override public void decrementStatistic(Statistic statistic) throws IllegalArgumentException { player.decrementStatistic(statistic); } - // Find: " (\w+)\((\w+) (\w+), (\w+) (\w+)\)(.+)\{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3, $4 $5) $6 { player.$1($3, $5);" - @Override public void incrementStatistic(Statistic statistic, int amount) throws IllegalArgumentException { player.incrementStatistic(statistic, amount); } - @Override public void decrementStatistic(Statistic statistic, int amount) throws IllegalArgumentException { player.decrementStatistic(statistic, amount); } - @Override public void setStatistic(Statistic statistic, int newValue) throws IllegalArgumentException { player.setStatistic(statistic, newValue); } - @Override public int getStatistic(Statistic statistic) throws IllegalArgumentException { return player.getStatistic(statistic); } - @Override public void incrementStatistic(Statistic statistic, Material material) throws IllegalArgumentException { player.incrementStatistic(statistic, material); } - @Override public void decrementStatistic(Statistic statistic, Material material) throws IllegalArgumentException { player.decrementStatistic(statistic, material); } - @Override public int getStatistic(Statistic statistic, Material material) throws IllegalArgumentException { return player.getStatistic(statistic, material); } - // Find: " (\w+)\((\w+) (\w+), (\w+) (\w+), (\w+) (\w+)\)(.+)\{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3, $4 $5, $6 $7) $8 { player.$1($3, $5, $7);" - @Override public void incrementStatistic(Statistic statistic, Material material, int amount) throws IllegalArgumentException { player.incrementStatistic(statistic, material, amount); } - @Override public void decrementStatistic(Statistic statistic, Material material, int amount) throws IllegalArgumentException { player.decrementStatistic(statistic, material, amount); } - @Override public void setStatistic(Statistic statistic, Material material, int newValue) throws IllegalArgumentException { player.setStatistic(statistic, material, newValue); } - @Override public void incrementStatistic(Statistic statistic, EntityType entityType) throws IllegalArgumentException { player.incrementStatistic(statistic, entityType); } - @Override public void decrementStatistic(Statistic statistic, EntityType entityType) throws IllegalArgumentException { player.decrementStatistic(statistic, entityType); } - @Override public int getStatistic(Statistic statistic, EntityType entityType) throws IllegalArgumentException { return player.getStatistic(statistic, entityType); } - @Override public void incrementStatistic(Statistic statistic, EntityType entityType, int amount) throws IllegalArgumentException { player.incrementStatistic(statistic, entityType, amount); } - @Override public void decrementStatistic(Statistic statistic, EntityType entityType, int amount) { player.decrementStatistic(statistic, entityType, amount); } - @Override public void setStatistic(Statistic statistic, EntityType entityType, int newValue) { player.setStatistic(statistic, entityType, newValue); } - /** - * Find: " (\w+)\((\w+) (\w+), (\w+) (\w+)\) \{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3, $4 $5) { player.$1($3, $5);" - */ - @Override public void setPlayerTime(long time, boolean relative) { player.setPlayerTime(time, relative); } - @Override public long getPlayerTime() { return player.getPlayerTime(); } - @Override public long getPlayerTimeOffset() { return player.getPlayerTimeOffset(); } - @Override public boolean isPlayerTimeRelative() { return player.isPlayerTimeRelative(); } - @Override public void resetPlayerTime() { player.resetPlayerTime(); } - @Override public void setPlayerWeather(WeatherType type) { player.setPlayerWeather(type); } - @Override public WeatherType getPlayerWeather() { return player.getPlayerWeather(); } - @Override public void resetPlayerWeather() { player.resetPlayerWeather(); } - @Override public void giveExp(int amount) { player.giveExp(amount); } - @Override public void giveExpLevels(int amount) { player.giveExpLevels(amount); } - @Override public float getExp() { return player.getExp(); } - @Override public void setExp(float exp) { player.setExp(exp); } - @Override public int getLevel() { return player.getLevel(); } - @Override public void setLevel(int level) { player.setLevel(level); } - @Override public int getTotalExperience() { return player.getTotalExperience(); } - @Override public void setTotalExperience(int exp) { player.setTotalExperience(exp); } - @Override public float getExhaustion() { return player.getExhaustion(); } - @Override public void setExhaustion(float value) { player.setExhaustion(value); } - @Override public float getSaturation() { return player.getSaturation(); } - @Override public void setSaturation(float value) { player.setSaturation(value); } - @Override public int getFoodLevel() { return player.getFoodLevel(); } - @Override public void setFoodLevel(int value) { player.setFoodLevel(value); } - @Override public Location getBedSpawnLocation() { return player.getBedSpawnLocation(); } - @Override public void setBedSpawnLocation(Location location) { player.setBedSpawnLocation(location); } - @Override public void setBedSpawnLocation(Location location, boolean force) { player.setBedSpawnLocation(location, force); } - @Override public boolean getAllowFlight() { return player.getAllowFlight(); } - @Override public void setAllowFlight(boolean flight) { player.setAllowFlight(flight); } - @Override public void hidePlayer(Player player) { player.hidePlayer(player); } - @Override public void showPlayer(Player player) { player.showPlayer(player); } - @Override public boolean canSee(Player player) { return player.canSee(player); } - @Override - public boolean isOnGround() { - return player.isOnGround(); - } - - @Override public boolean isFlying() { return player.isFlying(); } - @Override public void setFlying(boolean value) { player.setFlying(value); } - @Override public void setFlySpeed(float value) throws IllegalArgumentException { player.setFlySpeed(value); } - @Override public void setWalkSpeed(float value) throws IllegalArgumentException { player.setWalkSpeed(value); } - // Find: "\{\s+(.+)\s+return (?:(?:0)|(?:null)|(?:false));" - Replace: "{ return $1" - @Override public float getFlySpeed() { return player.getFlySpeed(); } - @Override public float getWalkSpeed() { return player.getWalkSpeed(); } - @Override public void setTexturePack(String url) { player.setTexturePack(url); } - @Override public void setResourcePack(String url) { player.setResourcePack(url); } - @Override + public void setResourcePack(String url, byte[] hash) { + player.setResourcePack(url, hash); + } + public Scoreboard getScoreboard() { return player.getScoreboard(); } - @Override public void setScoreboard(Scoreboard scoreboard) throws IllegalArgumentException, IllegalStateException { player.setScoreboard(scoreboard); } - @Override public boolean isHealthScaled() { return player.isHealthScaled(); } - @Override public void setHealthScaled(boolean scale) { player.setHealthScaled(scale); } - // Find: " (\w+)\((\w+) (\w+)\)(.+)\{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3) $4 { player.$1($3);" - @Override public void setHealthScale(double scale) throws IllegalArgumentException { player.setHealthScale(scale); } - @Override public double getHealthScale() { return player.getHealthScale(); } - @Override public Entity getSpectatorTarget() { return player.getSpectatorTarget(); } - @Override public void setSpectatorTarget(Entity entity) { player.setSpectatorTarget(entity); } - @Override public void sendTitle(String title, String subtitle) { player.sendTitle(title, subtitle); } - @Override + public void sendTitle(String title, String subtitle, int fadeIn, int stay, int fadeOut) { + player.sendTitle(title, subtitle, fadeIn, stay, fadeOut); + } + public void resetTitle() { player.resetTitle(); } - @Override public void spawnParticle(Particle particle, Location location, int count) { player.spawnParticle(particle, location, count); } - @Override public void spawnParticle(Particle particle, double x, double y, double z, int count) { player.spawnParticle(particle, x, y, z, count); } - @Override public void spawnParticle(Particle particle, Location location, int count, T data) { player.spawnParticle(particle, location, count, data); } - // Find: " (\w+)\((\w+) (\w+), (\w+) (\w+), (\w+) (\w+), (\w+) (\w+), (\w+) (\w+), (\w+) (\w+)\) \{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3, $4 $5, $6 $7, $8 $9, $10 $11, - // $12 $13) { player.$1($3, $5, $7, $9, $11, $13);" - @Override public void spawnParticle(Particle particle, double x, double y, double z, int count, T data) { player.spawnParticle(particle, x, y, z, count, data); } - @Override public void spawnParticle(Particle particle, Location location, int count, double offsetX, double offsetY, double offsetZ) { player.spawnParticle(particle, location, count, offsetX, offsetY, offsetZ); } - @Override public void spawnParticle(Particle particle, double x, double y, double z, int count, double offsetX, double offsetY, double offsetZ) { - player.spawnParticle(particle, offsetX, y, z, count, offsetX, offsetY, offsetZ); + player.spawnParticle(particle, x, y, z, count, offsetX, offsetY, offsetZ); } - @Override public void spawnParticle(Particle particle, Location location, int count, double offsetX, double offsetY, double offsetZ, T data) { - player.spawnParticle(particle, location, count, data); + player.spawnParticle(particle, location, count, offsetX, offsetY, offsetZ, data); } - @Override public void spawnParticle(Particle particle, double x, double y, double z, int count, double offsetX, double offsetY, double offsetZ, T data) { player.spawnParticle(particle, x, y, z, count, offsetX, offsetY, offsetZ, data); } - @Override public void spawnParticle(Particle particle, Location location, int count, double offsetX, double offsetY, double offsetZ, double extra) { player.spawnParticle(particle, location, count, offsetX, offsetY, offsetZ, extra); } - @Override public void spawnParticle(Particle particle, double x, double y, double z, int count, double offsetX, double offsetY, double offsetZ, double extra) { player.spawnParticle(particle, x, y, z, count, offsetX, offsetY, offsetZ, extra); } - @Override public void spawnParticle(Particle particle, Location location, int count, double offsetX, double offsetY, double offsetZ, double extra, T data) { player.spawnParticle(particle, location, count, offsetX, offsetY, offsetZ, extra, data); } - @Override public void spawnParticle(Particle particle, double x, double y, double z, int count, double offsetX, double offsetY, double offsetZ, double extra, T data) { player.spawnParticle(particle, x, y, z, count, offsetX, offsetY, offsetZ, extra, data); } - @Override - public Spigot spigot() { + public AdvancementProgress getAdvancementProgress(Advancement advancement) { + return player.getAdvancementProgress(advancement); + } + + public String getLocale() { + return player.getLocale(); + } + + public org.bukkit.entity.Player.Spigot spigot() { return player.spigot(); } - - @Override - public PlayerInventory getInventory() { - return player.getInventory(); - } - - @Override - public Inventory getEnderChest() { - return player.getEnderChest(); - } - - @Override - public MainHand getMainHand() { - return player.getMainHand(); - } - - @Override - public boolean setWindowProperty(Property prop, int value) { - return player.setWindowProperty(prop, value); - } - - @Override - public InventoryView getOpenInventory() { - return player.getOpenInventory(); - } - - @Override - public InventoryView openInventory(Inventory inventory) { - return player.openInventory(inventory); - } - - @Override - public InventoryView openWorkbench(Location location, boolean force) { - return player.openWorkbench(location, force); - } - - @Override - public InventoryView openEnchanting(Location location, boolean force) { - return player.openEnchanting(location, force); - } - - @Override - public void openInventory(InventoryView inventory) { - player.openInventory(inventory); - } - - @Override - public InventoryView openMerchant(Villager trader, boolean force) { - return player.openMerchant(trader, force); - } - - @Override - public InventoryView openMerchant(Merchant merchant, boolean force) { - return player.openMerchant(merchant, force); - } - - @Override - public void closeInventory() { - player.closeInventory(); - } - - @Override - public ItemStack getItemInHand() { - return player.getItemInHand(); - } - - @Override - public void setItemInHand(ItemStack item) { - player.setItemInHand(item); - } - - @Override - public ItemStack getItemOnCursor() { - return player.getItemOnCursor(); - } - - @Override - public void setItemOnCursor(ItemStack item) { - player.setItemOnCursor(item); - } - - @Override - public boolean isSleeping() { - return player.isSleeping(); - } - - @Override - public int getSleepTicks() { - return player.getSleepTicks(); - } - - @Override - public GameMode getGameMode() { - return player.getGameMode(); - } - - @Override - public void setGameMode(GameMode mode) { - player.setGameMode(mode); - } - - @Override - public boolean isBlocking() { - return player.isBlocking(); - } - - @Override - public boolean isHandRaised() { - return player.isHandRaised(); - } - - @Override - public int getExpToLevel() { - return player.getExpToLevel(); - } - - @Override - public double getEyeHeight() { - return player.getEyeHeight(); - } - - @Override - public double getEyeHeight(boolean ignoreSneaking) { - return player.getEyeHeight(ignoreSneaking); - } - - @Override - public Location getEyeLocation() { - return player.getEyeLocation(); - } - - @Override - public List getLineOfSight(HashSet transparent, int maxDistance) { - return player.getLineOfSight(transparent, maxDistance); - } - - @Override - public List getLineOfSight(Set transparent, int maxDistance) { - return player.getLineOfSight(transparent, maxDistance); - } - - @Override - public Block getTargetBlock(HashSet transparent, int maxDistance) { - return player.getTargetBlock(transparent, maxDistance); - } - - @Override - public Block getTargetBlock(Set transparent, int maxDistance) { - return player.getTargetBlock(transparent, maxDistance); - } - - @Override - public List getLastTwoTargetBlocks(HashSet transparent, int maxDistance) { - return player.getLastTwoTargetBlocks(transparent, maxDistance); - } - - @Override - public List getLastTwoTargetBlocks(Set transparent, int maxDistance) { - return player.getLastTwoTargetBlocks(transparent, maxDistance); - } - - @Override - public int getRemainingAir() { - return player.getRemainingAir(); - } - - @Override - public void setRemainingAir(int ticks) { - player.setRemainingAir(ticks); - } - - @Override - public int getMaximumAir() { - return player.getMaximumAir(); - } - - @Override - public void setMaximumAir(int ticks) { - player.setMaximumAir(ticks); - } - - @Override - public int getMaximumNoDamageTicks() { - return player.getMaximumNoDamageTicks(); - } - - @Override - public void setMaximumNoDamageTicks(int ticks) { - player.setMaximumNoDamageTicks(ticks); - } - - @Override - public double getLastDamage() { - return player.getLastDamage(); - } - - @Override - public int _INVALID_getLastDamage() { - return player._INVALID_getLastDamage(); - } - - @Override - public void setLastDamage(double damage) { - player.setLastDamage(damage); - } - - @Override - public void _INVALID_setLastDamage(int damage) { - player._INVALID_setLastDamage(damage); - } - - @Override - public int getNoDamageTicks() { - return player.getNoDamageTicks(); - } - - @Override - public void setNoDamageTicks(int ticks) { - player.setNoDamageTicks(ticks); - } - - @Override - public Player getKiller() { - return player.getKiller(); - } - - @Override - public boolean addPotionEffect(PotionEffect effect) { - return player.addPotionEffect(effect); - } - - @Override - public boolean addPotionEffect(PotionEffect effect, boolean force) { - return player.addPotionEffect(effect, force); - } - - @Override - public boolean addPotionEffects(Collection effects) { - return player.addPotionEffects(effects); - } - - @Override - public boolean hasPotionEffect(PotionEffectType type) { - return player.hasPotionEffect(type); - } - - @Override - public PotionEffect getPotionEffect(PotionEffectType type) { - return player.getPotionEffect(type); - } - - @Override - public void removePotionEffect(PotionEffectType type) { - player.removePotionEffect(type); - } - - @Override - public Collection getActivePotionEffects() { - return player.getActivePotionEffects(); - } - - @Override - public boolean hasLineOfSight(Entity other) { - return player.hasLineOfSight(other); - } - - @Override - public boolean getRemoveWhenFarAway() { - return player.getRemoveWhenFarAway(); - } - - @Override - public void setRemoveWhenFarAway(boolean remove) { - player.setRemoveWhenFarAway(remove); - } - - @Override - public EntityEquipment getEquipment() { - return player.getEquipment(); - } - - @Override - public void setCanPickupItems(boolean pickup) { - player.setCanPickupItems(pickup); - } - - @Override - public boolean getCanPickupItems() { - return player.getCanPickupItems(); - } - - @Override - public boolean isLeashed() { - return player.isLeashed(); - } - - @Override - public Entity getLeashHolder() throws IllegalStateException { - return player.getLeashHolder(); - } - - @Override - public boolean setLeashHolder(Entity holder) { - return player.setLeashHolder(holder); - } - - @Override - public boolean isGliding() { - return player.isGliding(); - } - - @Override - public void setGliding(boolean gliding) { - player.setGliding(gliding); - } - - @Override - public void setAI(boolean ai) { - player.setAI(ai); - } - - @Override - public boolean hasAI() { - return player.hasAI(); - } - - @Override - public void setCollidable(boolean collidable) { - player.setCollidable(collidable); - } - - @Override - public boolean isCollidable() { - return player.isCollidable(); - } - - @Override - public AttributeInstance getAttribute(Attribute attribute) { - return player.getAttribute(attribute); - } - - @Override - public Location getLocation() { - return player.getLocation(); - } - - @Override - public Location getLocation(Location loc) { - return player.getLocation(loc); - } - - @Override - public void setVelocity(Vector velocity) { - player.setVelocity(velocity); - } - - @Override - public Vector getVelocity() { - return player.getVelocity(); - } - - @Override - public World getWorld() { - return player.getWorld(); - } - - @Override - public boolean teleport(Location location) { - return player.teleport(location); - } - - @Override - public boolean teleport(Location location, TeleportCause cause) { - return player.teleport(location, cause); - } - - @Override - public boolean teleport(Entity destination) { - return player.teleport(destination); - } - - @Override - public boolean teleport(Entity destination, TeleportCause cause) { - return player.teleport(destination, cause); - } - - @Override - public List getNearbyEntities(double x, double y, double z) { - return player.getNearbyEntities(x, y, z); - } - - @Override - public int getEntityId() { - return player.getEntityId(); - } - - @Override - public int getFireTicks() { - return player.getFireTicks(); - } - - @Override - public int getMaxFireTicks() { - return player.getMaxFireTicks(); - } - - @Override - public void setFireTicks(int ticks) { - player.setFireTicks(ticks); - } - - @Override - public void remove() { - player.remove(); - } - - @Override - public boolean isDead() { - return player.isDead(); - } - - @Override - public boolean isValid() { - return player.isValid(); - } - - @Override - public Entity getPassenger() { - return player.getPassenger(); - } - - @Override - public boolean setPassenger(Entity passenger) { - return player.setPassenger(passenger); - } - - @Override - public boolean isEmpty() { - return player.isEmpty(); - } - - @Override - public boolean eject() { - return player.eject(); - } - - @Override - public float getFallDistance() { - return player.getFallDistance(); - } - - @Override - public void setFallDistance(float distance) { - player.setFallDistance(distance); - } - - @Override - public void setLastDamageCause(EntityDamageEvent event) { - player.setLastDamageCause(event); - } - - @Override - public EntityDamageEvent getLastDamageCause() { - return player.getLastDamageCause(); - } - - @Override - public UUID getUniqueId() { - return player.getUniqueId(); - } - - @Override - public int getTicksLived() { - return player.getTicksLived(); - } - - @Override - public void setTicksLived(int value) { - player.setTicksLived(value); - } - - @Override - public void playEffect(EntityEffect type) { - player.playEffect(type); - } - - @Override - public EntityType getType() { - return player.getType(); - } - - @Override - public boolean isInsideVehicle() { - return player.isInsideVehicle(); - } - - @Override - public boolean leaveVehicle() { - return player.leaveVehicle(); - } - - @Override - public Entity getVehicle() { - return player.getVehicle(); - } - - @Override - public void setCustomNameVisible(boolean flag) { - player.setCustomNameVisible(flag); - } - - @Override - public boolean isCustomNameVisible() { - return player.isCustomNameVisible(); - } - - @Override - public void setGlowing(boolean flag) { - player.setGlowing(flag); - } - - @Override - public boolean isGlowing() { - return player.isGlowing(); - } - - @Override - public void setInvulnerable(boolean flag) { - player.setInvulnerable(flag); - } - - @Override - public boolean isInvulnerable() { - return player.isInvulnerable(); - } - - @Override - public boolean isSilent() { - return player.isSilent(); - } - - @Override - public void setSilent(boolean flag) { - player.setSilent(flag); - } - - @Override - public boolean hasGravity() { - return player.hasGravity(); - } - - @Override - public void setGravity(boolean gravity) { - player.setGravity(gravity); - } - - @Override - public int getPortalCooldown() { - return player.getPortalCooldown(); - } - - @Override - public void setPortalCooldown(int cooldown) { - player.setPortalCooldown(cooldown); - } - - @Override - public Set getScoreboardTags() { - return player.getScoreboardTags(); - } - - @Override - public boolean addScoreboardTag(String tag) { - return player.addScoreboardTag(tag); - } - - @Override - public boolean removeScoreboardTag(String tag) { - return player.removeScoreboardTag(tag); - } - - @Override - public void setMetadata(String metadataKey, MetadataValue newMetadataValue) { - player.setMetadata(metadataKey, newMetadataValue); - } - - @Override - public List getMetadata(String metadataKey) { - return player.getMetadata(metadataKey); - } - - @Override - public boolean hasMetadata(String metadataKey) { - return player.hasMetadata(metadataKey); - } - - @Override - public void removeMetadata(String metadataKey, Plugin owningPlugin) { - player.removeMetadata(metadataKey, owningPlugin); - } - - @Override - public String getCustomName() { - return player.getCustomName(); - } - - @Override - public void setCustomName(String name) { - player.setCustomName(name); - } - - @Override - public void damage(double amount) { - player.damage(amount); - } - - @Override - public void _INVALID_damage(int amount) { - player._INVALID_damage(amount); - } - - @Override - public void damage(double amount, Entity source) { - player.damage(amount, source); - } - - @Override - public void _INVALID_damage(int amount, Entity source) { - player._INVALID_damage(amount, source); - } - - @Override - public double getHealth() { - return player.getHealth(); - } - - @Override - public int _INVALID_getHealth() { - return player._INVALID_getHealth(); - } - - @Override - public void setHealth(double health) { - player.setHealth(health); - } - - @Override - public void _INVALID_setHealth(int health) { - player._INVALID_setHealth(health); - } - - @Override - public double getMaxHealth() { - return player.getMaxHealth(); - } - - @Override - public int _INVALID_getMaxHealth() { - return player._INVALID_getMaxHealth(); - } - - @Override - public void setMaxHealth(double health) { - player.setMaxHealth(health); - } - - @Override - public void _INVALID_setMaxHealth(int health) { - player._INVALID_setMaxHealth(health); - } - - @Override - public void resetMaxHealth() { - player.resetMaxHealth(); - } - - @Override - public T launchProjectile(Class projectile) { - return player.launchProjectile(projectile); - } - - @Override - public T launchProjectile(Class projectile, Vector velocity) { - return player.launchProjectile(projectile, velocity); - } - - @Override - public boolean isConversing() { - return player.isConversing(); - } - - @Override - public void acceptConversationInput(String input) { - player.acceptConversationInput(input); - } - - @Override - public boolean beginConversation(Conversation conversation) { - return player.beginConversation(conversation); - } - - @Override - public void abandonConversation(Conversation conversation) { - player.abandonConversation(conversation); - } - - @Override - public void abandonConversation(Conversation conversation, ConversationAbandonedEvent details) { - player.abandonConversation(conversation, details); - } - - @Override - public boolean isOnline() { - return player.isOnline(); - } - - @Override - public boolean isBanned() { - return player.isBanned(); - } - - @Override - public void setBanned(boolean banned) { - player.setBanned(banned); - } - - @Override - public boolean isWhitelisted() { - return player.isWhitelisted(); - } - - @Override - public void setWhitelisted(boolean value) { - player.setWhitelisted(value); - } - - @Override - public Player getPlayer() { - return player.getPlayer(); - } - - @Override - public long getFirstPlayed() { - return player.getFirstPlayed(); - } - - @Override - public long getLastPlayed() { - return player.getLastPlayed(); - } - - @Override - public boolean hasPlayedBefore() { - return player.hasPlayedBefore(); - } - - @Override - public Map serialize() { - return player.serialize(); - } - - @Override - public void sendPluginMessage(Plugin source, String channel, byte[] message) { - player.sendPluginMessage(source, channel, message); - } - - @Override - public Set getListeningPluginChannels() { - return player.getListeningPluginChannels(); - } - - @Override - public void sendTitle(String arg0, String arg1, int arg2, int arg3, int arg4) { - player.sendTitle(arg0, arg1, arg2, arg3, arg4); - - } } diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java index 0478c4b..2517692 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java @@ -4,7 +4,10 @@ import java.awt.Color; import java.io.File; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Calendar; import java.util.List; +import java.util.Random; + import org.bukkit.Bukkit; import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.java.JavaPlugin; @@ -23,10 +26,9 @@ import sx.blah.discord.api.events.IListener; import sx.blah.discord.api.internal.json.objects.EmbedObject; import sx.blah.discord.handle.impl.events.ReadyEvent; import sx.blah.discord.handle.obj.*; -import sx.blah.discord.util.DiscordException; -import sx.blah.discord.util.EmbedBuilder; -import sx.blah.discord.util.MissingPermissionsException; -import sx.blah.discord.util.RateLimitException; +import sx.blah.discord.util.*; +import sx.blah.discord.util.RequestBuffer.IRequest; +import sx.blah.discord.util.RequestBuffer.IVoidRequest; public class DiscordPlugin extends JavaPlugin implements IListener { private static final String SubredditURL = "https://www.reddit.com/r/ChromaGamers"; @@ -126,15 +128,34 @@ public class DiscordPlugin extends JavaPlugin implements IListener { MCChatListener mcchat = new MCChatListener(); dc.getDispatcher().registerListener(mcchat); TBMCCoreAPI.RegisterEventsForExceptions(mcchat, this); - dc.getDispatcher().registerListener(new AutoUpdaterListener()); + TBMCCoreAPI.RegisterEventsForExceptions(new AutoUpdaterListener(), this); Bukkit.getPluginManager().registerEvents(new ExceptionListener(), this); TBMCCoreAPI.RegisterEventsForExceptions(new MCListener(), this); TBMCChatAPI.AddCommands(this, DiscordMCCommandBase.class); TBMCCoreAPI.RegisterUserClass(DiscordPlayer.class); - new Thread(() -> AnnouncementGetterThreadMethod()).start(); + new Thread(this::AnnouncementGetterThreadMethod).start(); setupProviders(); TBMCCoreAPI.SendUnsentExceptions(); TBMCCoreAPI.SendUnsentDebugMessages(); + if (!TBMCCoreAPI.IsTestServer()) { + final Calendar currentCal = Calendar.getInstance(); + final Calendar newCal = Calendar.getInstance(); + currentCal.set(currentCal.get(Calendar.YEAR), currentCal.get(Calendar.MONTH), + currentCal.get(Calendar.DAY_OF_MONTH), 4, 10); + if (currentCal.get(Calendar.DAY_OF_MONTH) % 9 == 0 && currentCal.before(newCal)) { + Random rand = new Random(); + sendMessageToChannel(dc.getChannels().get(rand.nextInt(dc.getChannels().size())), + "You could make a religion out of this"); + } + } + /* + * IDiscordOAuth doa = new DiscordOAuthBuilder(dc).withClientID("226443037893591041") .withClientSecret(getConfig().getString("appsecret")) .withRedirectUrl("https://" + + * (TBMCCoreAPI.IsTestServer() ? "localhost" : "server.figytuna.com") + ":8081/callback") .withScopes(Scope.IDENTIFY).withHttpServerOptions(new HttpServerOptions().setPort(8081)) + * .withSuccessHandler((rc, user) -> { rc.response().headers().add("Location", "https://" + (TBMCCoreAPI.IsTestServer() ? "localhost" : "server.figytuna.com") + ":8080/login?type=discord&" + * + rc.request().query()); rc.response().setStatusCode(303); rc.response().end("Redirecting"); rc.response().close(); }).withFailureHandler(rc -> { rc.response().headers().add("Location", + * "https://" + (TBMCCoreAPI.IsTestServer() ? "localhost" : "server.figytuna.com") + ":8080/login?type=discord&" + rc.request().query()); rc.response().setStatusCode(303); + * rc.response().end("Redirecting"); rc.response().close(); }).build(); getLogger().info("Auth URL: " + doa.buildAuthUrl()); + */ } catch (Exception e) { TBMCCoreAPI.SendException("An error occured while enabling DiscordPlugin!", e); } @@ -234,7 +255,7 @@ public class DiscordPlugin extends JavaPlugin implements IListener { try { if (channel == chatchannel) MCChatListener.resetLastMessage(); // If this is a chat message, it'll be set again - final String content = TBMCCoreAPI.IsTestServer() && channel != chatchannel + final String content = TBMCCoreAPI.IsTestServer() && channel != chatchannel || channel == botroomchannel // Both are the same for testing ? "*The following message is from a test server*\n" + message : message; return perform( () -> embed == null ? channel.sendMessage(content) : channel.sendMessage(content, embed, false)); @@ -283,39 +304,23 @@ public class DiscordPlugin extends JavaPlugin implements IListener { /** * Performs Discord actions, retrying when ratelimited. May return null if action fails too many times or in safe mode. */ - public static > T perform(DiscordSupplier action) - throws DiscordException, MissingPermissionsException { - for (int i = 0; i < 20; i++) - try { - if (SafeMode) - return null; - return action.get(); - } catch (RateLimitException e) { - try { - Thread.sleep(e.getRetryDelay() > 0 ? e.getRetryDelay() : 10); - } catch (InterruptedException e1) { - e1.printStackTrace(); - } - } - return null; + public static T perform(IRequest action) { + if (SafeMode) + return null; + return RequestBuffer.request(action).get(); // Let the pros handle this } /** * Performs Discord actions, retrying when ratelimited. */ - public static void perform(DiscordRunnable action) throws DiscordException, MissingPermissionsException { - for (int i = 0; i < 20; i++) - try { - if (SafeMode) - return; - action.run(); - return; // Gotta escape that loop - } catch (RateLimitException e) { - try { - Thread.sleep(e.getRetryDelay() > 0 ? e.getRetryDelay() : 10); - } catch (InterruptedException e1) { - e1.printStackTrace(); - } - } + public static Void perform(IVoidRequest action) { + if (SafeMode) + return null; + return RequestBuffer.request(action).get(); // Let the pros handle this + } + + public static boolean checkIfSomeoneIsTestingWhileWeArent() { + return !TBMCCoreAPI.IsTestServer() + && dc.getOurUser().getPresence().getPlayingText().orElse("").equals("testing"); } } diff --git a/src/main/java/buttondevteam/discordplugin/DiscordSender.java b/src/main/java/buttondevteam/discordplugin/DiscordSender.java index 9942973..81a414b 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordSender.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordSender.java @@ -97,9 +97,12 @@ public class DiscordSender extends DiscordSenderBase implements CommandSender { @Override public String getName() { - if (user == null) - return "Discord user"; - return name == null ? user.getDisplayName(DiscordPlugin.mainServer) : name; + return name == null ? user == null ? "Discord user" : user.getDisplayName(DiscordPlugin.mainServer) : name; + } + + @Override + public Spigot spigot() { + return new CommandSender.Spigot(); } } diff --git a/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java b/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java index be80fbf..2cfe732 100644 --- a/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java +++ b/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java @@ -20,13 +20,16 @@ public abstract class DiscordCommandBase { commands.put("userinfo", new UserinfoCommand()); commands.put("help", new HelpCommand()); commands.put("role", new RoleCommand()); + commands.put("mcchat", new MCChatCommand()); } public static void runCommand(String cmd, String args, IMessage message) { DiscordCommandBase command = commands.get(cmd); if (command == null) { DiscordPlugin.sendMessageToChannel(message.getChannel(), - "Unknown command: " + cmd + " with args: " + args + "\nDo @ChromaBot help for help"); + "Unknown command: " + cmd + " with args: " + args + "\nDo '" + + (message.getChannel().isPrivate() ? "" : message.getClient().getOurUser().mention() + " ") + + "help' for help"); return; } try { diff --git a/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java b/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java new file mode 100644 index 0000000..e25092c --- /dev/null +++ b/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java @@ -0,0 +1,43 @@ +package buttondevteam.discordplugin.commands; + +import buttondevteam.discordplugin.DiscordPlayer; +import buttondevteam.discordplugin.listeners.MCChatListener; +import buttondevteam.lib.TBMCCoreAPI; +import buttondevteam.lib.player.PlayerData; +import sx.blah.discord.handle.obj.IMessage; + +public class MCChatCommand extends DiscordCommandBase { + + @Override + public String getCommandName() { + return "mcchat"; + } + + @Override + public void run(IMessage message, String args) { + if (!message.getChannel().isPrivate()) { + message.reply("This command can only be issued while DMing the bot."); + return; + } + try (final DiscordPlayer user = DiscordPlayer.getUser(message.getAuthor().getStringID(), DiscordPlayer.class)) { + PlayerData mcchat = user.minecraftChat(); + mcchat.set(!mcchat.get()); + MCChatListener.privateMCChat(message.getChannel(), mcchat.get()); + message.reply("Minecraft chat " + (mcchat.get() // + ? "enabled. Use '" + message.getClient().getOurUser().mention() + + " mcchat' (with the mention) to disable." // + : "disabled.")); + } catch (Exception e) { + TBMCCoreAPI.SendException("Error while setting mcchat for user" + message.getAuthor().getName(), e); + } + } + + @Override + public String[] getHelpText() { + return new String[] { // + "mcchat enables or disables the Minecraft chat in private messages.", // + "It can be useful if you don't want your messages to be visible, for example when talking a private channel." // + }; // TODO: Pin channel switching to indicate the current channel + } + +} diff --git a/src/main/java/buttondevteam/discordplugin/listeners/AutoUpdaterListener.java b/src/main/java/buttondevteam/discordplugin/listeners/AutoUpdaterListener.java index 276797b..e302e8d 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/AutoUpdaterListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/AutoUpdaterListener.java @@ -1,65 +1,24 @@ package buttondevteam.discordplugin.listeners; -import java.awt.Color; -import java.util.function.Supplier; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; import buttondevteam.discordplugin.DiscordPlugin; -import buttondevteam.discordplugin.DiscordSender; +import buttondevteam.lib.PluginUpdater; import buttondevteam.lib.TBMCCoreAPI; -import sx.blah.discord.api.events.IListener; -import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent; -import sx.blah.discord.handle.obj.IEmbed; -import sx.blah.discord.util.EmbedBuilder; -public class AutoUpdaterListener implements IListener { - @Override - public void handle(MessageReceivedEvent event) { +public class AutoUpdaterListener implements Listener { + @EventHandler + public void handle(PluginUpdater.UpdatedEvent event) { if (DiscordPlugin.SafeMode) return; - if (!event.getMessage().getChannel().getStringID().equals(DiscordPlugin.officechannel.getStringID())) - return; - if (239123781401051138L != event.getMessage().getWebhookLongID()) - return; - if (event.getMessage().getEmbeds().size() == 0) - return; - final IEmbed embed = event.getMessage().getEmbeds().get(0); - final String title = embed.getTitle(); - if (!title.contains("new commit")) - return; - String branch = title.substring(title.indexOf(':') + 1, title.indexOf(']')); - String project = title.substring(title.indexOf('[') + 1, title.indexOf(':')); - if ((branch.equals("master") || (TBMCCoreAPI.IsTestServer() && branch.equals("dev"))) - && TBMCCoreAPI.UpdatePlugin(project, - new DiscordSender(null, - TBMCCoreAPI.IsTestServer() // - ? DiscordPlugin.chatchannel // - : DiscordPlugin.botroomchannel), - branch) - && ((Supplier) () -> { // Best looking code I've ever written - try { - int hi, ei, prnum; - if ((hi = embed.getDescription().indexOf('#')) > -1 - && ((ei = embed.getDescription().indexOf(' ', hi + 1)) > -1 - || (ei = embed.getDescription().indexOf(".", hi + 1)) > -1 - || (ei = embed.getDescription().length()) > -1) - && (prnum = Integer.parseInt(embed.getDescription().substring(hi + 1, ei))) > -1) - DiscordPlugin.sendMessageToChannel(DiscordPlugin.updatechannel, "", - new EmbedBuilder().withColor(Color.WHITE).withTitle("Update details") - .withUrl("https://github.com/TBMCPlugins/" + project + "/pull/" + prnum) - .build()); - else - throw new Exception("No PR found"); - } catch (Exception e) { - DiscordPlugin.sendMessageToChannel(DiscordPlugin.updatechannel, "", - new EmbedBuilder().withColor(Color.WHITE).withTitle("Update details:") - .withDescription(embed.getDescription() + " (" + e.getMessage() + ")").build()); - } - return true; - }).get() && (!TBMCCoreAPI.IsTestServer() || !branch.equals("master"))) - try { - DiscordPlugin.perform(() -> event.getMessage().addReaction(DiscordPlugin.DELIVERED_REACTION)); - } catch (Exception e) { - TBMCCoreAPI.SendException("An error occured while reacting to plugin update!", e); - } + try { + DiscordPlugin.perform(() -> DiscordPlugin.officechannel.getMessageHistory(10).stream() + .filter(m -> m.getWebhookLongID() == 239123781401051138L && m.getEmbeds().get(0).getTitle() + .contains(event.getData().get("repository").getAsJsonObject().get("name").getAsString())) + .findFirst().get().addReaction(DiscordPlugin.DELIVERED_REACTION)); + } catch (Exception e) { + TBMCCoreAPI.SendException("An error occured while reacting to plugin update!", e); + } } } diff --git a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java index bc08243..8313ffa 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java @@ -1,10 +1,13 @@ package buttondevteam.discordplugin.listeners; import java.util.ArrayList; +import java.util.Arrays; import java.util.Random; +import buttondevteam.discordplugin.DiscordPlayer; import buttondevteam.discordplugin.DiscordPlugin; import buttondevteam.discordplugin.commands.DiscordCommandBase; +import buttondevteam.lib.TBMCCoreAPI; import sx.blah.discord.api.events.IListener; import sx.blah.discord.handle.impl.events.guild.channel.message.MentionEvent; import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent; @@ -17,15 +20,23 @@ public class CommandListener { "Between now and the heat-death of the universe.", // Ghostise "Soon™", "Ask again this time next month", // Ghostise "In about 3 seconds", // Nicolai - "Right after we finish coding 7 plugins",//Ali - "It'll be done tomorrow.",//Ali - "We just need to complete one tiiiny feature",//Ali - "In 18 commits",//Ali - "After we finish strangling Towny",//Ali - "When we kill every bug in the system",//Ali - "Once the server stops screaming error messages.",//Ali + "After we finish 8 plugins", // Ali + "Tomorrow.", // Ali + "After one tiiiny feature", // Ali + "Next commit", // Ali + "After we finish strangling Towny", // Ali + "When we kill every *fucking* bug", // Ali + "Once the server stops screaming.", // Ali + "After HL3 comes out", // Ali + "Next time you ask", // Ali + "When will *you* be open?" // Ali }; + private static final String[] serverReadyQuestions = new String[] { "when will the server be open", + "when will the server be ready", "when will the server be done", "when will the server be complete", + "when will the server be finished", "when's the server ready", "when's the server open", + "Vhen vill ze server be open?" }; + private static final Random serverReadyRandom = new Random(); private static final ArrayList usableServerReadyStrings = new ArrayList(serverReadyStrings.length) { private static final long serialVersionUID = 2213771460909848770L; @@ -48,10 +59,14 @@ public class CommandListener { if (event.getMessage().getAuthor().isBot()) return; final IChannel channel = event.getMessage().getChannel(); - if (!channel.getStringID().equals(DiscordPlugin.botchannel.getStringID()) && !channel.isPrivate()) + if (!channel.getStringID().equals(DiscordPlugin.botchannel.getStringID()) + && (!channel.isPrivate() || DiscordPlugin.checkIfSomeoneIsTestingWhileWeArent())) return; if (channel.getStringID().equals(DiscordPlugin.chatchannel.getStringID())) return; // The chat code already handles this - Right now while testing botchannel is the same as chatchannel + if (DiscordPlayer.getUser(event.getAuthor().getStringID(), DiscordPlayer.class).minecraftChat().get()) // Let the MCChatListener handle it + return; + event.getMessage().getChannel().setTypingStatus(true); // Fun runCommand(event.getMessage(), true); } }, new IListener() { @@ -59,19 +74,19 @@ public class CommandListener { public void handle(MessageReceivedEvent event) { if (DiscordPlugin.SafeMode) return; - if (event.getMessage().getContent().toLowerCase().contains("when will the server be open?")) { + final String msglowercase = event.getMessage().getContent().toLowerCase(); + if (!TBMCCoreAPI.IsTestServer() + && Arrays.stream(serverReadyQuestions).anyMatch(s -> msglowercase.contains(s))) { int next; - /* - * if (serverReadyStrings.length <= lastServerReadyStrings.size()) { next = lastServerReadyStrings.get(0); lastServerReadyStrings.clear(); } else { next = (short) serverReadyRandom - * .nextInt(serverReadyStrings.length - lastServerReadyStrings.size()); for (short i = 0; i < lastServerReadyStrings.size(); i++) { short j = lastServerReadyStrings.get(i); if - * (next == j) next++; if (next >= serverReadyStrings.length) next = 0; } lastServerReadyStrings.add(next); } - */ if (usableServerReadyStrings.size() == 0) createUsableServerReadyStrings(usableServerReadyStrings); next = usableServerReadyStrings.remove(serverReadyRandom.nextInt(usableServerReadyStrings.size())); DiscordPlugin.sendMessageToChannel(event.getMessage().getChannel(), serverReadyStrings[next]); } - if (!event.getMessage().getChannel().isPrivate()) + if (!event.getMessage().getChannel().isPrivate() // + || DiscordPlayer.getUser(event.getAuthor().getStringID(), DiscordPlayer.class).minecraftChat() + .get() + || DiscordPlugin.checkIfSomeoneIsTestingWhileWeArent()) return; if (event.getMessage().getAuthor().isBot()) return; @@ -92,7 +107,6 @@ public class CommandListener { public static boolean runCommand(IMessage message, boolean mentionedonly) { if (DiscordPlugin.SafeMode) return true; - message.getChannel().setTypingStatus(true); final StringBuilder cmdwithargs = new StringBuilder(message.getContent()); final String mention = DiscordPlugin.dc.getOurUser().mention(false); final String mentionNick = DiscordPlugin.dc.getOurUser().mention(true); @@ -104,6 +118,7 @@ public class CommandListener { message.getChannel().setTypingStatus(false); return false; } + message.getChannel().setTypingStatus(true); int index = cmdwithargs.indexOf(" "); String cmd; String args; diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java index 119bad1..fceef50 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java @@ -1,8 +1,11 @@ package buttondevteam.discordplugin.listeners; +import java.awt.Color; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.UUID; +import java.util.function.Consumer; import java.util.stream.Collectors; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -13,8 +16,8 @@ import buttondevteam.discordplugin.*; import buttondevteam.lib.*; import buttondevteam.lib.chat.Channel; import buttondevteam.lib.chat.TBMCChatAPI; -import buttondevteam.lib.player.ChromaGamerBase; import buttondevteam.lib.player.TBMCPlayer; +import lombok.val; import sx.blah.discord.api.events.IListener; import sx.blah.discord.api.internal.json.objects.EmbedObject; import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent; @@ -28,52 +31,75 @@ public class MCChatListener implements Listener, IListener return; if (e.getSender() instanceof DiscordSender || e.getSender() instanceof DiscordPlayerSender) return; - if (!e.getChannel().equals(Channel.GlobalChat)) - return; synchronized (this) { final String authorPlayer = DiscordPlugin.sanitizeString(e.getSender() instanceof Player // ? ((Player) e.getSender()).getDisplayName() // : e.getSender().getName()); - final EmbedBuilder embed = new EmbedBuilder().withAuthorName(authorPlayer).withDescription(e.getMessage()); - final EmbedObject embedObject = e.getSender() instanceof Player - ? embed.withAuthorIcon( - "https://minotar.net/avatar/" + ((Player) e.getSender()).getName() + "/32.png").build() - : embed.build(); + final EmbedBuilder embed = new EmbedBuilder().withAuthorName(authorPlayer).withDescription(e.getMessage()) + .withColor(new Color(e.getChannel().color.getRed(), e.getChannel().color.getGreen(), + e.getChannel().color.getBlue())); + if (e.getSender() instanceof Player) + embed.withAuthorIcon("https://minotar.net/avatar/" + ((Player) e.getSender()).getName() + "/32.png"); final long nanoTime = System.nanoTime(); - if (lastmessage == null || lastmessage.isDeleted() - || !authorPlayer.equals(lastmessage.getEmbeds().get(0).getAuthor().getName()) - || lastmsgtime / 1000000000f < nanoTime / 1000000000f - 120) { - lastmessage = DiscordPlugin.sendMessageToChannel(DiscordPlugin.chatchannel, "", embedObject); - lastmsgtime = nanoTime; - lastmsg = e.getMessage(); - } else - try { - lastmsg = embedObject.description = lastmsg + "\n" + embedObject.description; - DiscordPlugin.perform(() -> lastmessage.edit("", embedObject)); - } catch (MissingPermissionsException | DiscordException e1) { - TBMCCoreAPI.SendException("An error occured while editing chat message!", e1); - } + Consumer doit = lastmsgdata -> { + final EmbedObject embedObject = embed.build(); + String msg = lastmsgdata.channel.isPrivate() ? DiscordPlugin.sanitizeString(e.getChannel().DisplayName) + : ""; + if (lastmsgdata.message == null || lastmsgdata.message.isDeleted() + || !authorPlayer.equals(lastmsgdata.message.getEmbeds().get(0).getAuthor().getName()) + || lastmsgdata.time / 1000000000f < nanoTime / 1000000000f - 120 + || !lastmsgdata.mcchannel.ID.equals(e.getChannel().ID)) { + lastmsgdata.message = DiscordPlugin.sendMessageToChannel(lastmsgdata.channel, msg, embedObject); + lastmsgdata.time = nanoTime; + lastmsgdata.mcchannel = e.getChannel(); + } else + try { + lastmsgdata.content = embedObject.description = lastmsgdata.content + "\n" + + embedObject.description;// The message object doesn't get updated + final LastMsgData _lastmsgdata = lastmsgdata; + DiscordPlugin.perform(() -> _lastmsgdata.message.edit(msg, embedObject)); + } catch (MissingPermissionsException | DiscordException e1) { + TBMCCoreAPI.SendException("An error occured while editing chat message!", e1); + } + }; + if (e.getChannel().equals(Channel.GlobalChat)) + doit.accept( + lastmsgdata == null ? lastmsgdata = new LastMsgData(DiscordPlugin.chatchannel) : lastmsgdata); + + for (LastMsgData data : lastmsgPerUser) { + final IUser iUser = data.channel.getUsersHere().stream() + .filter(u -> u.getLongID() != u.getClient().getOurUser().getLongID()).findFirst().get(); // Doesn't support group DMs + final DiscordPlayer user = DiscordPlayer.getUser(iUser.getStringID(), DiscordPlayer.class); + if (user.minecraftChat().get() && e.shouldSendTo(getSender(data.channel, iUser, user))) + doit.accept(data); + } } // TODO: Author URL } + private static class LastMsgData { + public IMessage message; + public long time; + public String content; + public IChannel channel; + public Channel mcchannel; + + public LastMsgData(IChannel channel) { + this.channel = channel; + } + } + @EventHandler public void onChatPreprocess(TBMCChatPreprocessEvent event) { int start = -1; - // System.out.println("A"); while ((start = event.getMessage().indexOf('@', start + 1)) != -1) { - // System.out.println("Start: " + start); int mid = event.getMessage().indexOf('#', start + 1); - // System.out.println("Mid: " + mid); if (mid == -1) return; int end_ = event.getMessage().indexOf(' ', mid + 1); - // System.out.println("End: " + end_); if (end_ == -1) end_ = event.getMessage().length(); final int end = end_; final int startF = start; - // System.out.println("Name: " + event.getMessage().substring(start, mid)); - // System.out.println("Disc: " + event.getMessage().substring(mid, end)); DiscordPlugin.dc.getUsersByName(event.getMessage().substring(start + 1, mid)).stream() .filter(u -> u.getDiscriminator().equals(event.getMessage().substring(mid + 1, end))).findAny() .ifPresent(user -> event.setMessage(event.getMessage().substring(0, startF) + "@" + user.getName() @@ -86,27 +112,36 @@ public class MCChatListener implements Listener, IListener private static final String[] UnconnectedCmds = new String[] { "list", "u", "shrug", "tableflip", "unflip", "mwiki", "yeehaw" }; - private static IMessage lastmessage = null; - private static long lastmsgtime = 0; - private static String lastmsg; + private static LastMsgData lastmsgdata; private static short lastlist = 0; private static short lastlistp = 0; + /** + * Used for messages in PMs (mcchat). + */ + private static ArrayList lastmsgPerUser = new ArrayList(); + + public static boolean privateMCChat(IChannel channel, boolean start) { + return start ? lastmsgPerUser.add(new LastMsgData(channel)) + : lastmsgPerUser.removeIf(lmd -> lmd.channel.getLongID() == channel.getLongID()); + } public static final HashMap UnconnectedSenders = new HashMap<>(); public static final HashMap ConnectedSenders = new HashMap<>(); public static short ListC = 0; public static void resetLastMessage() { - lastmessage = null; - } + (lastmsgdata == null ? lastmsgdata = new LastMsgData(DiscordPlugin.chatchannel) : lastmsgdata).message = null; // Don't set the whole object to null, the player and channel information should + } // be preserved @Override // Discord - public void handle(sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent event) { - final IUser author = event.getMessage().getAuthor(); + public void handle(MessageReceivedEvent event) { + val author = event.getMessage().getAuthor(); + val user = DiscordPlayer.getUser(author.getStringID(), DiscordPlayer.class); if (!event.getMessage().getChannel().getStringID().equals(DiscordPlugin.chatchannel.getStringID()) - /* && !(event.getMessage().getChannel().isPrivate() && privatechat) */) + && !(event.getMessage().getChannel().isPrivate() && user.minecraftChat().get() + && !DiscordPlugin.checkIfSomeoneIsTestingWhileWeArent())) return; - lastmessage = null; + resetLastMessage(); lastlist++; if (author.isBot()) return; @@ -115,23 +150,7 @@ public class MCChatListener implements Listener, IListener String dmessage = event.getMessage().getContent(); synchronized (this) { try { - DiscordPlayer dp = ChromaGamerBase.getUser(author.getStringID(), DiscordPlayer.class); - final DiscordSenderBase dsender; - Player mcp = null; // Offline players can't really run commands, or can they? - final String cid; - if ((cid = dp.getConnectedID(TBMCPlayer.class)) != null // Connected? - && (mcp = Bukkit.getPlayer(UUID.fromString(cid))) != null) { // Execute as ingame player - if (!ConnectedSenders.containsKey(author.getStringID())) - ConnectedSenders.put(author.getStringID(), - new DiscordPlayerSender(author, event.getMessage().getChannel(), mcp)); - dsender = ConnectedSenders.get(author.getStringID()); - } else { - TBMCPlayer p = dp.getAs(TBMCPlayer.class); - if (!UnconnectedSenders.containsKey(author.getStringID())) - UnconnectedSenders.put(author.getStringID(), new DiscordSender(author, - event.getMessage().getChannel(), p == null ? null : p.PlayerName().get())); // Display the playername, if found - dsender = UnconnectedSenders.get(author.getStringID()); - } + final DiscordSenderBase dsender = getSender(event.getMessage().getChannel(), author, user); for (IUser u : event.getMessage().getMentions()) { dmessage = dmessage.replace(u.mention(false), "@" + u.getName()); // TODO: IG Formatting @@ -140,11 +159,15 @@ public class MCChatListener implements Listener, IListener } if (dmessage.startsWith("/")) { + DiscordPlugin.perform(() -> { + if (!event.getMessage().isDeleted() && !event.getChannel().isPrivate()) + event.getMessage().delete(); + }); final String cmd = dmessage.substring(1).toLowerCase(); - if (mcp == null && !Arrays.stream(UnconnectedCmds) + if (dsender instanceof DiscordSender && !Arrays.stream(UnconnectedCmds) .anyMatch(s -> cmd.equals(s) || cmd.startsWith(s + " "))) { // Command not whitelisted - DiscordPlugin.sendMessageToChannel(event.getMessage().getChannel(), // TODO + dsender.sendMessage( // TODO "Sorry, you need to be online on the server and have your accounts connected, you can only access these commands:\n" + Arrays.stream(UnconnectedCmds).map(uc -> "/" + uc) .collect(Collectors.joining(", ")) @@ -163,13 +186,17 @@ public class MCChatListener implements Listener, IListener } else Bukkit.dispatchCommand(dsender, cmd); lastlistp = (short) Bukkit.getOnlinePlayers().size(); - if (!event.getMessage().isDeleted()) - event.getMessage().delete(); } else { - TBMCChatAPI.SendChatMessage(Channel.GlobalChat, dsender, - dmessage + (event.getMessage().getAttachments().size() > 0 ? "\n" + event.getMessage() - .getAttachments().stream().map(a -> a.getUrl()).collect(Collectors.joining("\n")) - : "")); + if (dmessage.length() == 0 && event.getMessage().getAttachments().size() == 0) + TBMCChatAPI.SendChatMessage(Channel.GlobalChat, dsender, "pinned a message on Discord."); // TODO: Not chat message + else + TBMCChatAPI + .SendChatMessage(Channel.GlobalChat, + dsender, dmessage + + (event.getMessage().getAttachments().size() > 0 + ? "\n" + event.getMessage().getAttachments().stream() + .map(a -> a.getUrl()).collect(Collectors.joining("\n")) + : "")); event.getMessage().getChannel().getMessageHistory().stream().forEach(m -> { try { final IReaction reaction = m.getReactionByUnicode(DiscordPlugin.DELIVERED_REACTION); @@ -187,4 +214,23 @@ public class MCChatListener implements Listener, IListener } } } + + private DiscordSenderBase getSender(IChannel channel, final IUser author, DiscordPlayer dp) { + final DiscordSenderBase dsender; + Player mcp = null; // Offline players can't really run commands, or can they? No, they can't, really. + final String cid; + if ((cid = dp.getConnectedID(TBMCPlayer.class)) != null // Connected? + && (mcp = Bukkit.getPlayer(UUID.fromString(cid))) != null) { // Execute as ingame player + if (!ConnectedSenders.containsKey(author.getStringID())) + ConnectedSenders.put(author.getStringID(), new DiscordPlayerSender(author, channel, mcp)); + dsender = ConnectedSenders.get(author.getStringID()); + } else { + TBMCPlayer p = dp.getAs(TBMCPlayer.class); + if (!UnconnectedSenders.containsKey(author.getStringID())) + UnconnectedSenders.put(author.getStringID(), + new DiscordSender(author, channel, p == null ? null : p.PlayerName().get())); // Display the playername, if found + dsender = UnconnectedSenders.get(author.getStringID()); + } + return dsender; + } } diff --git a/src/main/java/buttondevteam/discordplugin/playerfaker/DiscordEntity.java b/src/main/java/buttondevteam/discordplugin/playerfaker/DiscordEntity.java new file mode 100644 index 0000000..b17048a --- /dev/null +++ b/src/main/java/buttondevteam/discordplugin/playerfaker/DiscordEntity.java @@ -0,0 +1,317 @@ +package buttondevteam.discordplugin.playerfaker; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.EntityEffect; +import org.bukkit.Location; +import org.bukkit.Server; +import org.bukkit.World; +import org.bukkit.block.PistonMoveReaction; +import org.bukkit.entity.Entity; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; +import org.bukkit.metadata.MetadataValue; +import org.bukkit.permissions.PermissibleBase; +import org.bukkit.permissions.ServerOperator; +import org.bukkit.plugin.Plugin; +import org.bukkit.util.Vector; + +import buttondevteam.discordplugin.DiscordSenderBase; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Delegate; +import sx.blah.discord.handle.obj.IChannel; +import sx.blah.discord.handle.obj.IUser; + +@Getter +@Setter +public abstract class DiscordEntity extends DiscordSenderBase implements Entity { + protected DiscordEntity(IUser user, IChannel channel, int entityId, UUID uuid) { + super(user, channel); + this.entityId = entityId; + uniqueId = uuid; + } + + private HashMap metadata = new HashMap(); + + @Delegate + private PermissibleBase perm = new PermissibleBase(new ServerOperator() { + private @Getter @Setter boolean op; + }); + + private Location location; + private Vector velocity; + private final int entityId; + private EntityDamageEvent lastDamageCause; + private final Set scoreboardTags = new HashSet(); + private final UUID uniqueId; + + @Override + public void setMetadata(String metadataKey, MetadataValue newMetadataValue) { + metadata.put(metadataKey, newMetadataValue); + } + + @Override + public List getMetadata(String metadataKey) { + return Arrays.asList(metadata.get(metadataKey)); // Who needs multiple data anyways + } + + @Override + public boolean hasMetadata(String metadataKey) { + return metadata.containsKey(metadataKey); + } + + @Override + public void removeMetadata(String metadataKey, Plugin owningPlugin) { + metadata.remove(metadataKey); + } + + @Override + public Location getLocation(Location loc) { + if (loc != null) { + loc.setWorld(getWorld()); + loc.setX(location.getX()); + loc.setY(location.getY()); + loc.setZ(location.getZ()); + loc.setYaw(location.getYaw()); + loc.setPitch(location.getPitch()); + } + + return loc; + } + + @Override + public double getHeight() { + return 0; + } + + @Override + public double getWidth() { + return 0; + } + + @Override + public boolean isOnGround() { + return false; + } + + @Override + public World getWorld() { + return location.getWorld(); + } + + @Override + public boolean teleport(Location location) { + this.location = location; + return true; + } + + @Override + public boolean teleport(Location location, TeleportCause cause) { + this.location = location; + return true; + } + + @Override + public boolean teleport(Entity destination) { + this.location = destination.getLocation(); + return true; + } + + @Override + public boolean teleport(Entity destination, TeleportCause cause) { + this.location = destination.getLocation(); + return true; + } + + @Override + public List getNearbyEntities(double x, double y, double z) { + return Arrays.asList(); + } + + @Override + public int getFireTicks() { + return 0; + } + + @Override + public int getMaxFireTicks() { + return 0; + } + + @Override + public void setFireTicks(int ticks) { + } + + @Override + public void remove() { + } + + @Override + public boolean isDead() { // Impossible to kill + return false; + } + + @Override + public boolean isValid() { + return true; + } + + @Override + public Server getServer() { + return Bukkit.getServer(); + } + + @Override + public Entity getPassenger() { + return null; + } + + @Override + public boolean setPassenger(Entity passenger) { + return false; + } + + @Override + public List getPassengers() { + return Arrays.asList(); + } + + @Override + public boolean addPassenger(Entity passenger) { + return false; + } + + @Override + public boolean removePassenger(Entity passenger) { // Don't support passengers + return false; + } + + @Override + public boolean isEmpty() { + return true; + } + + @Override + public boolean eject() { + return false; + } + + @Override + public float getFallDistance() { + return 0; + } + + @Override + public void setFallDistance(float distance) { + } + + @Override + public int getTicksLived() { + return 1; + } + + @Override + public void setTicksLived(int value) { + } + + @Override + public void playEffect(EntityEffect type) { + } + + @Override + public boolean isInsideVehicle() { + return false; + } + + @Override + public boolean leaveVehicle() { + return false; + } + + @Override + public Entity getVehicle() { // Don't support vehicles + return null; + } + + @Override + public void setCustomNameVisible(boolean flag) { + } + + @Override + public boolean isCustomNameVisible() { + return true; + } + + @Override + public void setGlowing(boolean flag) { + } + + @Override + public boolean isGlowing() { + return false; + } + + @Override + public void setInvulnerable(boolean flag) { + } + + @Override + public boolean isInvulnerable() { + return true; + } + + @Override + public boolean isSilent() { + return true; + } + + @Override + public void setSilent(boolean flag) { + } + + @Override + public boolean hasGravity() { + return false; + } + + @Override + public void setGravity(boolean gravity) { + } + + @Override + public int getPortalCooldown() { + return 0; + } + + @Override + public void setPortalCooldown(int cooldown) { + } + + @Override + public boolean addScoreboardTag(String tag) { + return scoreboardTags.add(tag); + } + + @Override + public boolean removeScoreboardTag(String tag) { + return scoreboardTags.remove(tag); + } + + @Override + public PistonMoveReaction getPistonMoveReaction() { + return PistonMoveReaction.IGNORE; + } + + @Override + public Entity.Spigot spigot() { + return new Entity.Spigot(); + } + +} diff --git a/src/main/java/buttondevteam/discordplugin/playerfaker/DiscordHumanEntity.java b/src/main/java/buttondevteam/discordplugin/playerfaker/DiscordHumanEntity.java new file mode 100644 index 0000000..eab863b --- /dev/null +++ b/src/main/java/buttondevteam/discordplugin/playerfaker/DiscordHumanEntity.java @@ -0,0 +1,205 @@ +package buttondevteam.discordplugin.playerfaker; + +import java.util.UUID; + +import org.bukkit.GameMode; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Villager; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.bukkit.inventory.InventoryView.Property; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.MainHand; +import org.bukkit.inventory.Merchant; +import org.bukkit.inventory.PlayerInventory; + +import sx.blah.discord.handle.obj.IChannel; +import sx.blah.discord.handle.obj.IUser; + +public abstract class DiscordHumanEntity extends DiscordLivingEntity implements HumanEntity { + protected DiscordHumanEntity(IUser user, IChannel channel, int entityId, UUID uuid) { + super(user, channel, entityId, uuid); + } + + @Override + public PlayerInventory getInventory() { // TODO + return null; + } + + @Override + public Inventory getEnderChest() { + // TODO Auto-generated method stub + return null; + } + + @Override + public MainHand getMainHand() { + return MainHand.RIGHT; + } + + @Override + public boolean setWindowProperty(Property prop, int value) { + return false; + } + + @Override + public InventoryView getOpenInventory() { + // TODO Auto-generated method stub + return null; + } + + @Override + public InventoryView openInventory(Inventory inventory) { + // TODO Auto-generated method stub + return null; + } + + @Override + public InventoryView openWorkbench(Location location, boolean force) { + // TODO Auto-generated method stub + return null; + } + + @Override + public InventoryView openEnchanting(Location location, boolean force) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void openInventory(InventoryView inventory) { + // TODO Auto-generated method stub + + } + + @Override + public InventoryView openMerchant(Villager trader, boolean force) { + // TODO Auto-generated method stub + return null; + } + + @Override + public InventoryView openMerchant(Merchant merchant, boolean force) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void closeInventory() { + // TODO Auto-generated method stub + + } + + @Override + public ItemStack getItemInHand() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setItemInHand(ItemStack item) { + // TODO Auto-generated method stub + + } + + @Override + public ItemStack getItemOnCursor() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setItemOnCursor(ItemStack item) { + // TODO Auto-generated method stub + + } + + @Override + public boolean hasCooldown(Material material) { + // TODO Auto-generated method stub + return false; + } + + @Override + public int getCooldown(Material material) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public void setCooldown(Material material, int ticks) { + // TODO Auto-generated method stub + + } + + @Override + public boolean isSleeping() { + // TODO Auto-generated method stub + return false; + } + + @Override + public int getSleepTicks() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public GameMode getGameMode() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setGameMode(GameMode mode) { + // TODO Auto-generated method stub + + } + + @Override + public boolean isBlocking() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isHandRaised() { + // TODO Auto-generated method stub + return false; + } + + @Override + public int getExpToLevel() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public Entity getShoulderEntityLeft() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setShoulderEntityLeft(Entity entity) { + // TODO Auto-generated method stub + + } + + @Override + public Entity getShoulderEntityRight() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setShoulderEntityRight(Entity entity) { + // TODO Auto-generated method stub + + } + +} diff --git a/src/main/java/buttondevteam/discordplugin/playerfaker/DiscordLivingEntity.java b/src/main/java/buttondevteam/discordplugin/playerfaker/DiscordLivingEntity.java new file mode 100644 index 0000000..23f2601 --- /dev/null +++ b/src/main/java/buttondevteam/discordplugin/playerfaker/DiscordLivingEntity.java @@ -0,0 +1,303 @@ +package buttondevteam.discordplugin.playerfaker; + +import java.util.Arrays; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.attribute.Attribute; +import org.bukkit.attribute.AttributeInstance; +import org.bukkit.block.Block; +import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; +import org.bukkit.inventory.EntityEquipment; +import org.bukkit.inventory.ItemStack; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import org.bukkit.util.Vector; + +import lombok.Getter; +import lombok.Setter; +import sx.blah.discord.handle.obj.IChannel; +import sx.blah.discord.handle.obj.IUser; + +public abstract class DiscordLivingEntity extends DiscordEntity implements LivingEntity { + + protected DiscordLivingEntity(IUser user, IChannel channel, int entityId, UUID uuid) { + super(user, channel, entityId, uuid); + } + + private @Getter EntityEquipment equipment = new DiscordEntityEquipment(this); + + @Getter + @Setter + private static class DiscordEntityEquipment implements EntityEquipment { + + private float leggingsDropChance; + private ItemStack leggings; + private float itemInOffHandDropChance; + private ItemStack itemInOffHand; + private float itemInMainHandDropChance; + private ItemStack itemInMainHand; + private float itemInHandDropChance; + private ItemStack itemInHand; + private float helmetDropChance; + private ItemStack helmet; + private float chestplateDropChance; + private ItemStack chestplate; + private float bootsDropChance; + private ItemStack boots; + private ItemStack[] armorContents = new ItemStack[0]; // TODO + private final Entity holder; + + public DiscordEntityEquipment(Entity holder) { + this.holder = holder; + } + + @Override + public void clear() { + armorContents = new ItemStack[0]; + } + } + + @Override + public AttributeInstance getAttribute(Attribute attribute) { // We don't support any attribute + return null; + } + + @Override + public void damage(double amount) { + } + + @Override + public void damage(double amount, Entity source) { + } + + @Override + public double getHealth() { + return getMaxHealth(); + } + + @Override + public void setHealth(double health) { + } + + @Override + public double getMaxHealth() { + return 100; + } + + @Override + public void setMaxHealth(double health) { + } + + @Override + public void resetMaxHealth() { + } + + @Override + public T launchProjectile(Class projectile) { + return null; + } + + @Override + public T launchProjectile(Class projectile, Vector velocity) { + return null; + } + + @Override + public double getEyeHeight() { + return 0; + } + + @Override + public double getEyeHeight(boolean ignoreSneaking) { + return 0; + } + + @Override + public Location getEyeLocation() { + return getLocation(); + } + + @Override + public List getLineOfSight(Set transparent, int maxDistance) { + return Arrays.asList(); + } + + @Override + public Block getTargetBlock(HashSet transparent, int maxDistance) { + return null; + } + + @Override + public Block getTargetBlock(Set transparent, int maxDistance) { + return null; + } + + @Override + public List getLastTwoTargetBlocks(HashSet transparent, int maxDistance) { + return Arrays.asList(); + } + + @Override + public List getLastTwoTargetBlocks(Set transparent, int maxDistance) { + return Arrays.asList(); + } + + @Override + public int getRemainingAir() { + return 100; + } + + @Override + public void setRemainingAir(int ticks) { + } + + @Override + public int getMaximumAir() { + return 100; + } + + @Override + public void setMaximumAir(int ticks) { + } + + @Override + public int getMaximumNoDamageTicks() { + return 100; + } + + @Override + public void setMaximumNoDamageTicks(int ticks) { + } + + @Override + public double getLastDamage() { + return 0; + } + + @Override + public void setLastDamage(double damage) { + } + + @Override + public int getNoDamageTicks() { + return 100; + } + + @Override + public void setNoDamageTicks(int ticks) { + } + + @Override + public Player getKiller() { + return null; + } + + @Override + public boolean addPotionEffect(PotionEffect effect) { + return false; + } + + @Override + public boolean addPotionEffect(PotionEffect effect, boolean force) { + return false; + } + + @Override + public boolean addPotionEffects(Collection effects) { + return false; + } + + @Override + public boolean hasPotionEffect(PotionEffectType type) { + return false; + } + + @Override + public PotionEffect getPotionEffect(PotionEffectType type) { + return null; + } + + @Override + public void removePotionEffect(PotionEffectType type) { + } + + @Override + public Collection getActivePotionEffects() { + return Arrays.asList(); + } + + @Override + public boolean hasLineOfSight(Entity other) { + return false; + } + + @Override + public boolean getRemoveWhenFarAway() { + return false; + } + + @Override + public void setRemoveWhenFarAway(boolean remove) { + } + + @Override + public void setCanPickupItems(boolean pickup) { + } + + @Override + public boolean getCanPickupItems() { + return false; + } + + @Override + public boolean isLeashed() { + return false; + } + + @Override + public Entity getLeashHolder() throws IllegalStateException { + throw new IllegalStateException(); + } + + @Override + public boolean setLeashHolder(Entity holder) { + return false; + } + + @Override + public boolean isGliding() { + return false; + } + + @Override + public void setGliding(boolean gliding) { + } + + @Override + public void setAI(boolean ai) { + } + + @Override + public boolean hasAI() { + return false; + } + + @Override + public void setCollidable(boolean collidable) { + } + + @Override + public boolean isCollidable() { + return false; + } + +} diff --git a/src/test/java/buttondevteam/DiscordPlugin/AppTest.java b/src/test/java/buttondevteam/DiscordPlugin/AppTest.java index c560777..46ad699 100644 --- a/src/test/java/buttondevteam/DiscordPlugin/AppTest.java +++ b/src/test/java/buttondevteam/DiscordPlugin/AppTest.java @@ -1,11 +1,5 @@ package buttondevteam.DiscordPlugin; -import java.util.Arrays; -import java.util.stream.Collectors; - -import org.apache.commons.lang.exception.ExceptionUtils; - -import buttondevteam.lib.TBMCCoreAPI; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; @@ -35,26 +29,6 @@ public class AppTest extends TestCase { * Rigourous Test :-) */ public void testApp() { - /*String sourcemessage = "Test message"; - Exception e = new Exception("Test exception"); - StringBuilder sb = TBMCCoreAPI.IsTestServer() ? new StringBuilder() - : new StringBuilder("Coder role").append("\n"); - sb.append(sourcemessage).append("\n"); - sb.append("```").append("\n"); - String stackTrace = Arrays.stream(ExceptionUtils.getStackTrace(e).split("\\n")) - .filter(s -> !(s.contains("\tat ") && ( // - s.contains("java.util") // - || s.contains("java.lang") // - || s.contains("net.minecraft.server") // - || s.contains("sun.reflect") // - || s.contains("org.bukkit") // - ))).collect(Collectors.joining("\n")); - if (stackTrace.length() > 1800) - stackTrace = stackTrace.substring(0, 1800); - sb.append(stackTrace).append("\n"); - sb.append("```"); - System.out.println(sb.toString()); - assertTrue(sb.toString().contains("Coder role"));*/ assertTrue(true); } }