Merge Pull Request #102 from Carbogen

This commit is contained in:
MistPhizzle 2015-04-05 20:14:01 -04:00
parent 30aa3a8606
commit 9f58aeda01
12 changed files with 455 additions and 261 deletions

View file

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="C:/Users/Chris/Desktop/Plugins/Files/KorraDependables/bukkit-1.8-R0.1.jar"/>
<classpathentry kind="lib" path="C:/Users/Chris/Desktop/Plugins/Files/KorraDependables/Factions.jar"/>
<classpathentry kind="lib" path="C:/Users/Chris/Desktop/Plugins/Files/KorraDependables/GriefPrevention.jar"/>
<classpathentry kind="lib" path="C:/Users/Chris/Desktop/Plugins/Files/KorraDependables/KorraRPG.jar"/>
<classpathentry kind="lib" path="C:/Users/Chris/Desktop/Plugins/Files/KorraDependables/LWC.jar"/>
<classpathentry kind="lib" path="C:/Users/Chris/Desktop/Plugins/Files/KorraDependables/MassiveCore.jar"/>
<classpathentry kind="lib" path="C:/Users/Chris/Desktop/Plugins/Files/KorraDependables/PreciousStones.jar"/>
<classpathentry kind="lib" path="C:/Users/Chris/Desktop/Plugins/Files/KorraDependables/spigot1.8.jar"/>
<classpathentry kind="lib" path="C:/Users/Chris/Desktop/Plugins/Files/KorraDependables/Towny.jar"/>
<classpathentry kind="lib" path="C:/Users/Chris/Desktop/Plugins/Files/KorraDependables/WorldEdit.jar"/>
<classpathentry kind="lib" path="C:/Users/Chris/Desktop/Plugins/Files/KorraDependables/worldguard-6.0.0-SNAPSHOT.jar"/>
<classpathentry kind="lib" path="C:/Users/Chris/Desktop/Plugins/Files/KorraDependables/NoCheatPlus.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

22
.gitattributes vendored
View file

@ -1,22 +0,0 @@
# Auto detect text files and perform LF normalization
* text=auto
# Custom for Visual Studio
*.cs diff=csharp
*.sln merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain

232
.gitignore vendored
View file

@ -1,3 +1,175 @@
#################
## Eclipse
#################
*.pydevproject
.project
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/
.loadpath
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# CDT-specific
.cproject
# PDT-specific
.buildpath
#################
## Visual Studio
#################
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.sln.docstates
# Build results
[Dd]ebug/
[Rr]elease/
x64/
build/
[Bb]in/
[Oo]bj/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.log
*.scc
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
*.ncrunch*
.*crunch*.local.xml
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.Publish.xml
*.pubxml
*.publishproj
# NuGet Packages Directory
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
#packages/
# Windows Azure Build Output
csx
*.build.csdef
# Windows Store app package directory
AppPackages/
# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.[Pp]ublish.xml
*.pfx
*.publishsettings
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
App_Data/*.mdf
App_Data/*.ldf
#############
## Windows detritus
#############
# Windows image file caches # Windows image file caches
Thumbs.db Thumbs.db
ehthumbs.db ehthumbs.db
@ -8,39 +180,37 @@ Desktop.ini
# Recycle Bin used on file shares # Recycle Bin used on file shares
$RECYCLE.BIN/ $RECYCLE.BIN/
# Windows Installer files # Mac crap
*.cab .DS_Store
*.msi
*.msm
*.msp
.classpath
# ========================= #############
# Operating System Files ## Python
# ========================= #############
# OSX *.py[cod]
# =========================
.DS_Store # Packages
.AppleDouble *.egg
.LSOverride *.egg-info
dist/
# Icon must ends with two \r. build/
Icon eggs/
parts/
# Thumbnails var/
._* sdist/
develop-eggs/
# Files that might appear on external disk .installed.cfg
.Spotlight-V100
.Trashes
bin/ # Installer logs
*.classpath pip-log.txt
.idea/.name
*.xml # Unit test / coverage reports
*.class .coverage
*.class .tox
ProjectKorra.iml
#Translations
*.mo
#Mr Developer
.mr.developer.cfg

View file

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>ProjectKorra</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View file

@ -1,11 +0,0 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.7

View file

@ -1,156 +0,0 @@
name: ProjectKorra
author: ProjectKorra
version: 1.6.0 BETA 14
main: com.projectkorra.ProjectKorra.ProjectKorra
softdepend: [PreciousStones, WorldGuard, WorldEdit, Factions, MassiveCore, GriefPrevention, Towny, NoCheatPlus, LWC]
commands:
projectkorra:
aliases: [b,bending,mtla,tla,korra,pk,bend]
usage: /<command>
permissions:
bending.admin:
default: op
description: Grants access to all commands and abilities.
children:
bending.player: true
bending.command.reload: true
bending.admin.permaremove: true
bending.command.avatar: true
bending.command.add.others: true
bending.command.add: true
bending.command.rechoose: true
bending.admin.choose: true
bending.ability.AvatarState: true
bending.ability.Bloodbending: true
bending.ability.Flight: true
bending.command.import: true
bending.command.toggle.all: true
bending.command.give: true
bending.command.invincible: true
bending.admin.debug: true
bending.admin.remove: true
bending.player:
default: true
description: Grants access to most abilities and basic commands.
children:
bending.command.bind: true
bending.command.display: true
bending.command.toggle: true
bending.command.choose: true
bending.command.version: true
bending.command.help: true
bending.command.clear: true
bending.command.who: true
bending.command.preset.list: true
bending.command.preset.create.2: true
bending.command.preset.create: true
bending.command.preset.bind: true
bending.command.preset.delete: true
bending.air: true
bending.water: true
bending.earth: true
bending.fire: true
bending.chi: true
bending.air:
default: true
description: Grants access to all airbending abilities.
children:
bending.ability.AirBlast: true
bending.ability.AirBubble: true
bending.ability.AirBurst: true
bending.ability.AirScooter: true
bending.ability.AirShield: true
bending.ability.AirSpout: true
bending.ability.AirSuction: true
bending.ability.AirSwipe: true
bending.ability.Suffocate: true
bending.ability.Tornado: true
bending.ability.AirCombo: true
bending.air.passive: true
bending.air.flight: true
bending.water:
default: true
description: Grants access to most waterbending abilities.
children:
bending.ability.HealingWaters: true
bending.ability.IceBlast: true
bending.ability.IceSpike: true
bending.ability.OctopusForm: true
bending.ability.PhaseChange: true
bending.ability.Surge: true
bending.ability.Torrent: true
bending.ability.WaterBubble: true
bending.ability.WaterManipulation: true
bending.ability.WaterSpout: true
bending.ability.WaterSpout.Wave: true
bending.ability.WaterCombo: true
bending.water.plantbending: true
bending.message.nightmessage: true
bending.water.passive: true
bending.water.icebending: true
bending.water.healing: true
bending.earth:
default: true
description: Grants access to all Earthbending abilities.
children:
bending.ability.Catapult: true
bending.ability.Collapse: true
bending.ability.EarthArmor: true
bending.ability.EarthBlast: true
bending.ability.EarthGrab: true
bending.ability.EarthTunnel: true
bending.ability.RaiseEarth: true
bending.ability.Shockwave: true
bending.ability.Tremorsense: true
bending.ability.Extraction: true
bending.ability.MetalClips: true
bending.ability.MetalClips.loot: false
bending.ability.MetalClips.4clips: false
bending.earth.passive: true
bending.earth.metalbending: true
bending.earth.lavabending: true
bending.earth.sandbending: true
bending.earth.grapplinghook: true
bending.ability.LavaSurge: true
bending.ability.LavaFlow: true
bending.ability.EarthSmash: true
bending.fire:
default: true
description: Grants access to all firebending abilities.
children:
bending.ability.Blaze: true
bending.ability.FireBlast: true
bending.ability.FireBurst: true
bending.ability.FireJet: true
bending.ability.FireShield: true
bending.ability.HeatControl: true
bending.ability.Illumination: true
bending.ability.Lightning: true
bending.ability.WallOfFire: true
bending.ability.Combustion: true
bending.ability.FireCombo: true
bending.message.daymessage: true
bending.fire.passive: true
bending.fire.lightningbending: true
bending.fire.combustionbending: true
bending.chi:
default: true
description: Grants access to all ChiBlocking abilities.
children:
bending.ability.HighJump: true
bending.ability.Paralyze: true
bending.ability.RapidPunch: true
bending.ability.Smokescreen: true
bending.ability.WarriorStance: true
bending.ability.AcrobatStance: true
bending.ability.QuickStrike: true
bending.ability.SwiftKick: true
bending.ability.ChiCombo: true
bending.chi.passive: true
bending.chi.grapplinghook: true
bending.avatar:
default: false
description: Grants the Avatar Color.
bending.ability.MetalClips.loot:
default: false
description: Lets a Metalbender loot a player's inventory of its iron.

View file

@ -645,6 +645,9 @@ public class ConfigManager {
+ " will instead melt blocks in that area. Finally, sneaking with this ability will cook any food in your hand."); + " will instead melt blocks in that area. Finally, sneaking with this ability will cook any food in your hand.");
config.addDefault("Abilities.Fire.HeatControl.Extinguish.Range", 20); config.addDefault("Abilities.Fire.HeatControl.Extinguish.Range", 20);
config.addDefault("Abilities.Fire.HeatControl.Extinguish.Radius", 7); config.addDefault("Abilities.Fire.HeatControl.Extinguish.Radius", 7);
config.addDefault("Abilities.Fire.HeatControl.Solidify.Range", 10);
config.addDefault("Abilities.Fire.HeatControl.Solidify.Radius", 5);
config.addDefault("Abilities.Fire.HeatControl.Solidify.RevertTime", 20000);
config.addDefault("Abilities.Fire.HeatControl.Melt.Range", 15); config.addDefault("Abilities.Fire.HeatControl.Melt.Range", 15);
config.addDefault("Abilities.Fire.HeatControl.Melt.Radius", 5); config.addDefault("Abilities.Fire.HeatControl.Melt.Radius", 5);

View file

@ -87,7 +87,7 @@ public class Methods {
public static Integer[] transparentToEarthbending = {0, 6, 8, 9, 10, 11, 30, 31, 32, 37, 38, 39, 40, 50, 51, 59, 78, 83, 106, 175}; public static Integer[] transparentToEarthbending = {0, 6, 8, 9, 10, 11, 30, 31, 32, 37, 38, 39, 40, 50, 51, 59, 78, 83, 106, 175};
public static Integer[] nonOpaque = {0, 6, 8, 9, 10, 11, 27, 28, 30, 31, 32, 37, 38, 39, 40, 50, 51, 55, 59, 66, 68, 69, 70, 72, public static Integer[] nonOpaque = {0, 6, 8, 9, 10, 11, 27, 28, 30, 31, 32, 37, 38, 39, 40, 50, 51, 55, 59, 66, 68, 69, 70, 72,
75, 76, 77, 78, 83, 90, 93, 94, 104, 105, 106, 111, 115, 119, 127, 131, 132}; 75, 76, 77, 78, 83, 90, 93, 94, 104, 105, 106, 111, 115, 119, 127, 131, 132, 175};
/** /**
* Checks to see if an AbilityExists. Uses method {@link #getAbility(String)} to check if it exists. * Checks to see if an AbilityExists. Uses method {@link #getAbility(String)} to check if it exists.
@ -2275,6 +2275,12 @@ public class Methods {
for (AbilityModule ab: abilities) { for (AbilityModule ab: abilities) {
ab.stop(); ab.stop();
} }
ArrayList<ComboManager.ComboAbility> combos = ComboManager.comboAbilityList;
for(ComboManager.ComboAbility c : combos)
if(c.getComboType() instanceof ComboAbilityModule)
((ComboAbilityModule) c.getComboType()).stop();
AirBlast.removeAll(); AirBlast.removeAll();
AirBubble.removeAll(); AirBubble.removeAll();
AirShield.instances.clear(); AirShield.instances.clear();

View file

@ -458,7 +458,7 @@ public class PKListener implements Listener {
new Fireball(player); new Fireball(player);
} }
if (abil.equalsIgnoreCase("HeatControl")) { if (abil.equalsIgnoreCase("HeatControl")) {
new Cook(player); new HeatControl(player);
} }
if (abil.equalsIgnoreCase("FireBurst")) { if (abil.equalsIgnoreCase("FireBurst")) {
new FireBurst(player); new FireBurst(player);

View file

@ -35,8 +35,8 @@ public class Extinguish {
Material mat = block.getType(); Material mat = block.getType();
if(mat != Material.FIRE if(mat != Material.FIRE
&& mat != Material.STATIONARY_LAVA /*&& mat != Material.STATIONARY_LAVA
&& mat != Material.LAVA) && mat != Material.LAVA*/)
continue; continue;
if (Methods.isRegionProtectedFromBuild(player, "Blaze", if (Methods.isRegionProtectedFromBuild(player, "Blaze",
block.getLocation())) block.getLocation()))
@ -44,7 +44,7 @@ public class Extinguish {
if (block.getType() == Material.FIRE) { if (block.getType() == Material.FIRE) {
block.setType(Material.AIR); block.setType(Material.AIR);
block.getWorld().playEffect(block.getLocation(), Effect.EXTINGUISH, 0); block.getWorld().playEffect(block.getLocation(), Effect.EXTINGUISH, 0);
} else if (block.getType() == Material.STATIONARY_LAVA) { } /*else if (block.getType() == Material.STATIONARY_LAVA) {
block.setType(Material.OBSIDIAN); block.setType(Material.OBSIDIAN);
block.getWorld().playEffect(block.getLocation(), Effect.EXTINGUISH, 0); block.getWorld().playEffect(block.getLocation(), Effect.EXTINGUISH, 0);
} else if (block.getType() == Material.LAVA) { } else if (block.getType() == Material.LAVA) {
@ -54,7 +54,7 @@ public class Extinguish {
block.setType(Material.COBBLESTONE); block.setType(Material.COBBLESTONE);
} }
block.getWorld().playEffect(block.getLocation(), Effect.EXTINGUISH, 0); block.getWorld().playEffect(block.getLocation(), Effect.EXTINGUISH, 0);
} }*/
} }
bPlayer.addCooldown("HeatControl", Methods.getGlobalCooldown()); bPlayer.addCooldown("HeatControl", Methods.getGlobalCooldown());

View file

@ -31,6 +31,7 @@ public class FirebendingManager implements Runnable {
FireStream.ignitedblocks.remove(block); FireStream.ignitedblocks.remove(block);
} }
} }
HeatControl.progressAll();
FireStream.dissipateAll(); FireStream.dissipateAll();
FireStream.progressAll(); FireStream.progressAll();
FireCombo.progressAll(); FireCombo.progressAll();

View file

@ -0,0 +1,238 @@
package com.projectkorra.ProjectKorra.firebending;
import com.projectkorra.ProjectKorra.Methods;
import com.projectkorra.ProjectKorra.ProjectKorra;
import com.projectkorra.ProjectKorra.TempBlock;
import com.projectkorra.ProjectKorra.Utilities.ParticleEffect;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
/**
* Created by Carbogen on 11/02/15.
*/
public class HeatControl
{
public static ConcurrentHashMap<Integer, HeatControl> instances = new ConcurrentHashMap<Integer, HeatControl>();
public final double RANGE = ProjectKorra.plugin.getConfig().getDouble("Abilities.Fire.HeatControl.Solidify.Range");
public final int RADIUS = ProjectKorra.plugin.getConfig().getInt("Abilities.Fire.HeatControl.Solidify.Radius");
public final int REVERT_TIME = ProjectKorra.plugin.getConfig().getInt("Abilities.Fire.HeatControl.Solidify.RevertTime");
public static int ID = 1;
private Player player;
private int id;
private int currentRadius = 1;
private long delay = 50;
private long lastBlockTime = 0;
private long lastParticleTime = 0;
private Location center;
private List<TempBlock> tblocks = new ArrayList<TempBlock>();
public double range = RANGE;
public int radius = RADIUS;
public long revertTime = REVERT_TIME;
public HeatControl(Player player)
{
if (!isEligible(player))
return;
if(Methods.getLavaSourceBlock(player, getRange()) == null)
{
new Cook(player);
return;
}
this.player = player;
if(ID == Integer.MAX_VALUE - 1)
ID = 0;
this.id = ID;
ID++;
lastBlockTime = System.currentTimeMillis();
instances.put(id, this);
}
public boolean isEligible(Player player)
{
if (!Methods.canBend(player.getName(), "HeatControl"))
return false;
if (Methods.getBoundAbility(player) == null)
return false;
if (!Methods.getBoundAbility(player).equalsIgnoreCase("HeatControl"))
return false;
return true;
}
public void freeze(List<Location> area)
{
if(System.currentTimeMillis() < lastBlockTime + delay)
return;
List<Block> lava = new ArrayList<Block>();
for(Location l : area)
if(Methods.isLava(l.getBlock()))
lava.add(l.getBlock());
lastBlockTime = System.currentTimeMillis();
if(lava.size() == 0)
{
currentRadius ++;
return;
}
Block b = lava.get(Methods.rand.nextInt(lava.size()));
TempBlock tb;
if(TempBlock.isTempBlock(b))
{
tb = TempBlock.get(b);
tb.setType(Material.STONE);
}
else tb = new TempBlock(b, Material.STONE, b.getData());
if(!tblocks.contains(tb))
tblocks.add(tb);
}
public void particles(List<Location> area)
{
if(System.currentTimeMillis() < lastParticleTime + 300)
return;
lastParticleTime = System.currentTimeMillis();
for(Location l : area)
{
if(Methods.isLava(l.getBlock()))
ParticleEffect.SMOKE.display(l, 0, 0, 0, 0.1f, 2);
}
}
public void resetLocation(Location loc)
{
if(center == null)
{
center = loc;
return;
}
if(!loc.equals(center))
{
currentRadius = 1;
center = loc;
}
}
public void progress()
{
if(!player.isOnline() || player.isDead() || !isEligible(player) || !player.isSneaking())
{
stop();
return;
}
if(currentRadius >= getRadius())
{
stop();
return;
}
Location targetlocation = Methods.getTargetedLocation(player, range);
resetLocation(targetlocation);
List<Location> area = Methods.getCircle(center, currentRadius, 3, true, true, 0);
particles(area);
freeze(area);
}
public static void progressAll()
{
for(Integer id : instances.keySet())
{
instances.get(id).progress();
}
}
public void stop()
{
ProjectKorra.plugin.getServer().getScheduler().scheduleSyncDelayedTask(ProjectKorra.plugin, new Runnable()
{
public void run()
{
revertAll();
if(instances.containsKey(id))
instances.remove(id);
}
}, getRevertTime());
}
public void revertAll()
{
for(TempBlock tb : tblocks)
{
tb.revertBlock();
}
tblocks.clear();
}
public Player getPlayer()
{
return player;
}
public double getRange()
{
return range;
}
public int getRadius()
{
return radius;
}
public long getRevertTime()
{
return revertTime;
}
public void setRange(double value)
{
range = value;
}
public void setRadius(int value)
{
radius = value;
}
public void setRevertTime(long value)
{
revertTime = value;
}
}