From 0dcce63a29be0d8455037704cc5237bcac871534 Mon Sep 17 00:00:00 2001 From: Lildirt Date: Fri, 6 Feb 2015 00:54:26 -0800 Subject: [PATCH 1/2] Added get_temperature() Fetch the current temperature of the location given. --- .../abstraction/blocks/MCBlock.java | 2 + .../bukkit/blocks/BukkitMCBlock.java | 5 ++ .../com/laytonsmith/core/functions/World.java | 50 +++++++++++++++++++ 3 files changed, 57 insertions(+) diff --git a/src/main/java/com/laytonsmith/abstraction/blocks/MCBlock.java b/src/main/java/com/laytonsmith/abstraction/blocks/MCBlock.java index fc5d3e1d2..29cd9d340 100644 --- a/src/main/java/com/laytonsmith/abstraction/blocks/MCBlock.java +++ b/src/main/java/com/laytonsmith/abstraction/blocks/MCBlock.java @@ -24,6 +24,8 @@ public interface MCBlock extends MCMetadatable { public void setTypeAndData(int type, byte data, boolean physics); + public double getTemperature(); + public MCBlockState getState(); public MCMaterial getType(); diff --git a/src/main/java/com/laytonsmith/abstraction/bukkit/blocks/BukkitMCBlock.java b/src/main/java/com/laytonsmith/abstraction/bukkit/blocks/BukkitMCBlock.java index d13757f94..9281aa775 100644 --- a/src/main/java/com/laytonsmith/abstraction/bukkit/blocks/BukkitMCBlock.java +++ b/src/main/java/com/laytonsmith/abstraction/bukkit/blocks/BukkitMCBlock.java @@ -67,6 +67,11 @@ public void setTypeAndData(int type, byte data, boolean physics) { b.setTypeIdAndData(type, data, physics); } + @Override + public double getTemperature() { + return b.getTemperature(); + } + @Override public MCBlockState getState() { if(b.getState() == null){ diff --git a/src/main/java/com/laytonsmith/core/functions/World.java b/src/main/java/com/laytonsmith/core/functions/World.java index ceae59926..1930a2680 100644 --- a/src/main/java/com/laytonsmith/core/functions/World.java +++ b/src/main/java/com/laytonsmith/core/functions/World.java @@ -1801,4 +1801,54 @@ public Version since() { } } + + @api + public static class get_temperature extends AbstractFunction { + + @Override + public ExceptionType[] thrown() { + return new Exceptions.ExceptionType[]{Exceptions.ExceptionType.FormatException}; + } + + @Override + public boolean isRestricted() { + return false; + } + + @Override + public Boolean runAsync() { + return false; + } + + @Override + public Construct exec(Target target, Environment environment, Construct... args) throws ConfigRuntimeException { + MCPlayer player = environment.getEnv(CommandHelperEnvironment.class).GetPlayer(); + MCWorld world = null; + if(player != null) { world = player.getWorld(); } + MCLocation loc = ObjectGenerator.GetGenerator().location(args[0], world, target); + double temp; + temp = loc.getBlock().getTemperature(); + return new CDouble(temp, target); + } + + @Override + public String getName() { + return "get_temperature"; + } + + @Override + public Integer[] numArgs() { + return new Integer[]{1}; + } + + @Override + public String docs() { + return "double {locationArray} Returns the current temperature of the location given."; + } + + @Override + public Version since() { + return CHVersion.V3_3_1; + } + } } From c29c94e113ea0b2e008f06744766f1c632cefa85 Mon Sep 17 00:00:00 2001 From: Lildirt Date: Fri, 6 Feb 2015 12:29:13 -0500 Subject: [PATCH 2/2] Update World.java --- src/main/java/com/laytonsmith/core/functions/World.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/laytonsmith/core/functions/World.java b/src/main/java/com/laytonsmith/core/functions/World.java index 1930a2680..f91ff20e7 100644 --- a/src/main/java/com/laytonsmith/core/functions/World.java +++ b/src/main/java/com/laytonsmith/core/functions/World.java @@ -1824,11 +1824,11 @@ public Boolean runAsync() { public Construct exec(Target target, Environment environment, Construct... args) throws ConfigRuntimeException { MCPlayer player = environment.getEnv(CommandHelperEnvironment.class).GetPlayer(); MCWorld world = null; - if(player != null) { world = player.getWorld(); } + if(player != null) { + world = player.getWorld(); + } MCLocation loc = ObjectGenerator.GetGenerator().location(args[0], world, target); - double temp; - temp = loc.getBlock().getTemperature(); - return new CDouble(temp, target); + return new CDouble(loc.getBlock().getTemperature(), target); } @Override