1.12: Release commit. Backported right-click stats for Solar Panel, Block Breaker, Tree Cutter.
This commit is contained in:
parent
adc0df9d47
commit
cb9932ca1b
31 changed files with 842 additions and 110 deletions
|
@ -4,4 +4,4 @@ org.gradle.jvmargs=-Xmx8G
|
|||
version_minecraft=1.12.2
|
||||
version_forge=14.23.5.2768
|
||||
version_jei=4.10.0.198
|
||||
version_engineersdecor=1.0.19-b4
|
||||
version_engineersdecor=1.0.19
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/",
|
||||
"1.12.2": {
|
||||
"1.0.19": "[R] Release based on v1.0.19-b4. Release-to-release changes: * Transfer fixes for Tree Cutter / Block Braker, and Factory hopper. * Cleanups, feature backports * Visual fixes and improvements\n[A] Backport of status display for Tree Cutter, Block Breaker and Solar Panel.",
|
||||
"1.0.19-b4": "[A] Creative tab opt-out visibility handling added (issue #90, thx pimalel233).",
|
||||
"1.0.19-b3": "[A] Factory Hopper: Added bottom item handler (CR#227).",
|
||||
"1.0.19-b2": "[F] Fixed Floor Grating item pass-through jitters (thx Cid).\n[M] Removed obsolete recipe collision testing recipes.",
|
||||
|
@ -80,7 +81,7 @@
|
|||
"1.0.0-b1": "[A] Initial structure.\n[A] Added clinker bricks and clinker brick stairs.\n[A] Added slag bricks and slag brick stairs.\n[A] Added metal rung ladder.\n[A] Added staggered metal steps ladder.\n[A] Added treated wood ladder.\n[A] Added treated wood pole.\n[A] Added treated wood table."
|
||||
},
|
||||
"promos": {
|
||||
"1.12.2-recommended": "1.0.18",
|
||||
"1.12.2-latest": "1.0.19-b4"
|
||||
"1.12.2-recommended": "1.0.19",
|
||||
"1.12.2-latest": "1.0.19"
|
||||
}
|
||||
}
|
|
@ -10,6 +10,14 @@ Mod sources for Minecraft version 1.12.2.
|
|||
----
|
||||
## Version history
|
||||
|
||||
-------------------------------------------------------------------
|
||||
- v1.0.19 [R] Release based on v1.0.19-b4. Release-to-release changes:
|
||||
* Transfer fixes for Tree Cutter / Block Braker, and Factory hopper.
|
||||
* Cleanups, feature backports
|
||||
* Visual fixes and improvements
|
||||
-------------------------------------------------------------------
|
||||
[A] Backport of status display for Tree Cutter, Block Breaker and Solar Panel.
|
||||
|
||||
- v1.0.19-b4 [A] Creative tab opt-out visibility handling added (issue #90, thx pimalel233).
|
||||
|
||||
- v1.0.19-b3 [A] Factory Hopper: Added bottom item handler (CR#227).
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
package wile.engineersdecor.blocks;
|
||||
|
||||
import wile.engineersdecor.ModEngineersDecor;
|
||||
import wile.engineersdecor.detail.ModAuxiliaries;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.properties.PropertyBool;
|
||||
|
@ -17,7 +18,9 @@ import net.minecraft.block.SoundType;
|
|||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.SoundEvents;
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
|
@ -96,6 +99,16 @@ public class BlockDecorBreaker extends BlockDecorDirectedHorizontal
|
|||
((BTileEntity)te).block_updated();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
|
||||
{
|
||||
if(world.isRemote) return true;
|
||||
TileEntity te = world.getTileEntity(pos);
|
||||
if(!(te instanceof BTileEntity)) return true;
|
||||
((BTileEntity)te).state_message(player);
|
||||
return true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
// Tile entity
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
|
@ -110,17 +123,20 @@ public class BlockDecorBreaker extends BlockDecorDirectedHorizontal
|
|||
public static final int DEFAULT_MIN_BREAKING_TIME = 15;
|
||||
public static final int MAX_BREAKING_TIME = 800;
|
||||
private static int boost_energy_consumption = DEFAULT_BOOST_ENERGY;
|
||||
private static int energy_max = 10000;
|
||||
private static int breaking_reluctance = DEFAULT_BREAKING_RELUCTANCE;
|
||||
private static int min_breaking_time = DEFAULT_MIN_BREAKING_TIME;
|
||||
private static boolean requires_power = false;
|
||||
private int tick_timer_;
|
||||
private int active_timer_;
|
||||
private int proc_time_elapsed_;
|
||||
private int time_needed_;
|
||||
private int energy_;
|
||||
|
||||
public static void on_config(int boost_energy_per_tick, int breaking_time_per_hardness, int min_breaking_time_ticks, boolean power_required)
|
||||
{
|
||||
boost_energy_consumption = TICK_INTERVAL * MathHelper.clamp(boost_energy_per_tick, 16, 512);
|
||||
energy_max = Math.max(boost_energy_consumption * 10, 10000);
|
||||
breaking_reluctance = MathHelper.clamp(breaking_time_per_hardness, 5, 50);
|
||||
min_breaking_time = MathHelper.clamp(min_breaking_time_ticks, 10, 100);
|
||||
requires_power = power_required;
|
||||
|
@ -133,12 +149,36 @@ public class BlockDecorBreaker extends BlockDecorDirectedHorizontal
|
|||
public void block_updated()
|
||||
{ if(tick_timer_ > 2) tick_timer_ = 2; }
|
||||
|
||||
public void state_message(EntityPlayer player)
|
||||
{
|
||||
String soc = Integer.toString(MathHelper.clamp((energy_*100/energy_max),0,100));
|
||||
String progress = "";
|
||||
if((proc_time_elapsed_ > 0) && (time_needed_ > 0) && (active_timer_ > 0)) {
|
||||
progress = " | " + Integer.toString((int)MathHelper.clamp((((double)proc_time_elapsed_) / ((double)time_needed_) * 100), 0, 100)) + "%%";
|
||||
}
|
||||
ModAuxiliaries.playerChatMessage(player, soc + "%%/" + energy_max + "RF" + progress);
|
||||
}
|
||||
|
||||
public void readnbt(NBTTagCompound nbt)
|
||||
{ energy_ = nbt.getInteger("energy"); }
|
||||
|
||||
private void writenbt(NBTTagCompound nbt)
|
||||
{ nbt.setInteger("energy", energy_); }
|
||||
|
||||
// TileEntity ------------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public boolean shouldRefresh(World world, BlockPos pos, IBlockState os, IBlockState ns)
|
||||
{ return (os.getBlock() != ns.getBlock()) || (!(ns.getBlock() instanceof BlockDecorBreaker)); }
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt)
|
||||
{ super.readFromNBT(nbt); readnbt(nbt); }
|
||||
|
||||
@Override
|
||||
public NBTTagCompound writeToNBT(NBTTagCompound nbt)
|
||||
{ super.writeToNBT(nbt); writenbt(nbt); return nbt; }
|
||||
|
||||
// IEnergyStorage ----------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
|
@ -164,7 +204,7 @@ public class BlockDecorBreaker extends BlockDecorDirectedHorizontal
|
|||
@Override
|
||||
public int receiveEnergy(int maxReceive, boolean simulate)
|
||||
{
|
||||
maxReceive = MathHelper.clamp(maxReceive, 0, Math.max((boost_energy_consumption*2) - energy_, 0));
|
||||
maxReceive = MathHelper.clamp(maxReceive, 0, Math.max(energy_max-energy_, 0));
|
||||
if(!simulate) energy_ += maxReceive;
|
||||
return maxReceive;
|
||||
}
|
||||
|
@ -253,11 +293,11 @@ public class BlockDecorBreaker extends BlockDecorDirectedHorizontal
|
|||
tick_timer_ = IDLE_TICK_INTERVAL;
|
||||
return;
|
||||
}
|
||||
int time_needed = MathHelper.clamp((int)(target_state.getBlockHardness(world, pos) * breaking_reluctance) + min_breaking_time, min_breaking_time, MAX_BREAKING_TIME);
|
||||
time_needed_ = MathHelper.clamp((int)(target_state.getBlockHardness(world, pos) * breaking_reluctance) + min_breaking_time, min_breaking_time, MAX_BREAKING_TIME);
|
||||
if(energy_ >= boost_energy_consumption) {
|
||||
energy_ -= boost_energy_consumption;
|
||||
proc_time_elapsed_ += TICK_INTERVAL * (1+BOOST_FACTOR);
|
||||
time_needed += min_breaking_time * (3*BOOST_FACTOR/5);
|
||||
time_needed_ += min_breaking_time * (3*BOOST_FACTOR/5);
|
||||
active_timer_ = 2;
|
||||
} else if(!requires_power) {
|
||||
proc_time_elapsed_ += TICK_INTERVAL;
|
||||
|
@ -269,7 +309,7 @@ public class BlockDecorBreaker extends BlockDecorDirectedHorizontal
|
|||
if(requires_power && !active) {
|
||||
proc_time_elapsed_ = Math.max(0, proc_time_elapsed_ - 2*TICK_INTERVAL);
|
||||
}
|
||||
if(proc_time_elapsed_ >= time_needed) {
|
||||
if(proc_time_elapsed_ >= time_needed_) {
|
||||
proc_time_elapsed_ = 0;
|
||||
breakBlock(target_state, target_pos, world);
|
||||
active = false;
|
||||
|
|
|
@ -8,10 +8,8 @@
|
|||
*/
|
||||
package wile.engineersdecor.blocks;
|
||||
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraftforge.energy.CapabilityEnergy;
|
||||
import net.minecraftforge.energy.IEnergyStorage;
|
||||
import wile.engineersdecor.ModEngineersDecor;
|
||||
import wile.engineersdecor.detail.ModAuxiliaries;
|
||||
import net.minecraft.block.properties.PropertyInteger;
|
||||
import net.minecraft.block.state.BlockStateContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
|
@ -19,6 +17,7 @@ import net.minecraft.block.state.BlockFaceShape;
|
|||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.block.SoundType;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ITickable;
|
||||
|
@ -28,6 +27,10 @@ import net.minecraft.util.EnumHand;
|
|||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraftforge.energy.CapabilityEnergy;
|
||||
import net.minecraftforge.energy.IEnergyStorage;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
@ -93,6 +96,16 @@ public class BlockDecorSolarPanel extends BlockDecor
|
|||
public TileEntity createTileEntity(World world, IBlockState state)
|
||||
{ return new BlockDecorSolarPanel.BTileEntity(); }
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
|
||||
{
|
||||
if(world.isRemote) return true;
|
||||
TileEntity te = world.getTileEntity(pos);
|
||||
if(!(te instanceof BTileEntity)) return true;
|
||||
((BTileEntity)te).state_message(player);
|
||||
return true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
// Tile entity
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
|
@ -105,9 +118,12 @@ public class BlockDecorSolarPanel extends BlockDecor
|
|||
private static final EnumFacing transfer_directions_[] = {EnumFacing.DOWN, EnumFacing.EAST, EnumFacing.SOUTH, EnumFacing.WEST, EnumFacing.NORTH };
|
||||
private static int peak_power_per_tick_ = DEFAULT_PEAK_POWER;
|
||||
private static int max_power_storage_ = 10000;
|
||||
private static int max_feed_power = 128;
|
||||
private int current_production_ = 0;
|
||||
private int tick_timer_ = 0;
|
||||
private int recalc_timer_ = 0;
|
||||
private int accumulated_power_ = 0;
|
||||
private int current_feedin_ = 0;
|
||||
|
||||
public static void on_config(int peak_power_per_tick)
|
||||
{
|
||||
|
@ -126,6 +142,12 @@ public class BlockDecorSolarPanel extends BlockDecor
|
|||
protected void writenbt(NBTTagCompound nbt, boolean update_packet)
|
||||
{ nbt.setInteger("energy", accumulated_power_); }
|
||||
|
||||
public void state_message(EntityPlayer player)
|
||||
{
|
||||
String soc = Integer.toString(MathHelper.clamp((accumulated_power_*100/max_power_storage_),0,100));
|
||||
ModAuxiliaries.playerChatMessage(player, soc + "%%/" + max_power_storage_ + "RF | +" + + current_production_ + "RF/t | -" + current_feedin_ + "RF/t");
|
||||
}
|
||||
|
||||
// TileEntity ------------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
|
@ -145,7 +167,7 @@ public class BlockDecorSolarPanel extends BlockDecor
|
|||
{
|
||||
if((world.isRemote) || (--tick_timer_ > 0)) return;
|
||||
tick_timer_ = TICK_INTERVAL;
|
||||
if(!world.canSeeSky(pos)) { tick_timer_ = TICK_INTERVAL * 5; return; }
|
||||
current_feedin_ = 0;
|
||||
if(accumulated_power_ > 0) {
|
||||
for(int i=0; (i<transfer_directions_.length) && (accumulated_power_>0); ++i) {
|
||||
final EnumFacing f = transfer_directions_[i];
|
||||
|
@ -153,9 +175,19 @@ public class BlockDecorSolarPanel extends BlockDecor
|
|||
if((te==null) || (!(te.hasCapability(CapabilityEnergy.ENERGY, f.getOpposite())))) continue;
|
||||
IEnergyStorage es = te.getCapability(CapabilityEnergy.ENERGY, f.getOpposite());
|
||||
if(!es.canReceive()) continue;
|
||||
accumulated_power_ = MathHelper.clamp(accumulated_power_-es.receiveEnergy(accumulated_power_, false),0, accumulated_power_);
|
||||
int fed = es.receiveEnergy(max_feed_power * TICK_INTERVAL, false);
|
||||
accumulated_power_ = MathHelper.clamp(accumulated_power_-fed,0, accumulated_power_);
|
||||
current_feedin_ += fed;
|
||||
}
|
||||
}
|
||||
current_feedin_ /= TICK_INTERVAL;
|
||||
if(!world.canSeeSky(pos)) {
|
||||
tick_timer_ = TICK_INTERVAL * 5;
|
||||
current_production_ = 0;
|
||||
IBlockState state = world.getBlockState(pos);
|
||||
if(state.getValue((EXPOSITION))!=2) world.setBlockState(pos, state.withProperty(EXPOSITION, 2));
|
||||
return;
|
||||
}
|
||||
if(--recalc_timer_ > 0) return;
|
||||
recalc_timer_ = ACCUMULATION_INTERVAL + ((int)(Math.random()+.5));
|
||||
IBlockState state = world.getBlockState(pos);
|
||||
|
@ -169,9 +201,10 @@ public class BlockDecorSolarPanel extends BlockDecor
|
|||
else if(theta < 190) e = 4;
|
||||
IBlockState nstate = state.withProperty(EXPOSITION, e);
|
||||
if(nstate != state) world.setBlockState(pos, nstate, 1|2);
|
||||
double rf = Math.abs(1.0-(((double)Math.abs(MathHelper.clamp(theta, 0, 180)-90))/90));
|
||||
rf = Math.sqrt(rf) * world.getSunBrightnessFactor(1f) * ((TICK_INTERVAL*ACCUMULATION_INTERVAL)+2) * peak_power_per_tick_;
|
||||
accumulated_power_ = Math.min(accumulated_power_+(int)rf, max_power_storage_);
|
||||
final double eff = (1.0-((world.getRainStrength(1f)*0.6)+(world.getThunderStrength(1f)*0.3)));
|
||||
final double rf = Math.sin((Math.PI/2) * Math.sqrt(((double)(((theta<0)||(theta>180))?(0):((theta>90)?(180-theta):(theta))))/90));
|
||||
current_production_ = ((int)(Math.min(rf*rf*eff, 1) * peak_power_per_tick_));
|
||||
accumulated_power_ = Math.min(accumulated_power_ + (current_production_*(TICK_INTERVAL*ACCUMULATION_INTERVAL)), max_power_storage_);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
package wile.engineersdecor.blocks;
|
||||
|
||||
import wile.engineersdecor.ModEngineersDecor;
|
||||
import wile.engineersdecor.detail.ModAuxiliaries;
|
||||
import wile.engineersdecor.detail.TreeCutting;
|
||||
import net.minecraft.block.properties.PropertyBool;
|
||||
import net.minecraft.block.state.BlockStateContainer;
|
||||
|
@ -17,18 +18,19 @@ import net.minecraft.block.material.Material;
|
|||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.init.SoundEvents;
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.*;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.energy.CapabilityEnergy;
|
||||
import net.minecraftforge.energy.IEnergyStorage;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Random;
|
||||
|
@ -86,6 +88,16 @@ public class BlockDecorTreeCutter extends BlockDecorDirectedHorizontal
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
|
||||
{
|
||||
if(world.isRemote) return true;
|
||||
TileEntity te = world.getTileEntity(pos);
|
||||
if(!(te instanceof BTileEntity)) return true;
|
||||
((BTileEntity)te).state_message(player);
|
||||
return true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
// Tile entity
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
|
@ -97,6 +109,7 @@ public class BlockDecorTreeCutter extends BlockDecorDirectedHorizontal
|
|||
public static final int BOOST_FACTOR = 6;
|
||||
public static final int DEFAULT_BOOST_ENERGY = 64;
|
||||
public static final int DEFAULT_CUTTING_TIME_NEEDED = 60; // 60 secs, so that people don't come to the bright idea to carry one with them.
|
||||
private static int energy_max = DEFAULT_BOOST_ENERGY * 20;
|
||||
private static int boost_energy_consumption = DEFAULT_BOOST_ENERGY;
|
||||
private static int cutting_time_needed = 20 * DEFAULT_CUTTING_TIME_NEEDED;
|
||||
private static boolean requires_power = false;
|
||||
|
@ -109,6 +122,7 @@ public class BlockDecorTreeCutter extends BlockDecorDirectedHorizontal
|
|||
public static void on_config(int boost_energy_per_tick, int cutting_time_seconds, boolean power_required)
|
||||
{
|
||||
boost_energy_consumption = TICK_INTERVAL * MathHelper.clamp(boost_energy_per_tick, 16, 512);
|
||||
energy_max = Math.max(boost_energy_consumption * 10, 10000);
|
||||
cutting_time_needed = 20 * MathHelper.clamp(cutting_time_seconds, 10, 240);
|
||||
requires_power = power_required;
|
||||
ModEngineersDecor.logger.info("Config tree cutter: Boost energy consumption:" + boost_energy_consumption + "rf/t" + (requires_power?" (power required for operation) ":"") + ", cutting time " + cutting_time_needed + "t." );
|
||||
|
@ -117,12 +131,36 @@ public class BlockDecorTreeCutter extends BlockDecorDirectedHorizontal
|
|||
public BTileEntity()
|
||||
{}
|
||||
|
||||
public void state_message(EntityPlayer player)
|
||||
{
|
||||
String soc = Integer.toString(MathHelper.clamp((energy_*100/energy_max),0,100));
|
||||
String progress = "";
|
||||
if((active_timer_ > 0) && (cutting_time_needed > 0)) {
|
||||
progress = " | " + Integer.toString((int)MathHelper.clamp((((double)proc_time_elapsed_) / ((double)cutting_time_needed) * 100), 0, 100)) + "%%";
|
||||
}
|
||||
ModAuxiliaries.playerChatMessage(player, soc + "%%/" + energy_max + "RF" + progress);
|
||||
}
|
||||
|
||||
public void readnbt(NBTTagCompound nbt)
|
||||
{ energy_ = nbt.getInteger("energy"); }
|
||||
|
||||
private void writenbt(NBTTagCompound nbt)
|
||||
{ nbt.setInteger("energy", energy_); }
|
||||
|
||||
// TileEntity ------------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public boolean shouldRefresh(World world, BlockPos pos, IBlockState os, IBlockState ns)
|
||||
{ return (os.getBlock() != ns.getBlock()) || (!(ns.getBlock() instanceof BlockDecorTreeCutter)); }
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt)
|
||||
{ super.readFromNBT(nbt); readnbt(nbt); }
|
||||
|
||||
@Override
|
||||
public NBTTagCompound writeToNBT(NBTTagCompound nbt)
|
||||
{ super.writeToNBT(nbt); writenbt(nbt); return nbt; }
|
||||
|
||||
// IEnergyStorage ----------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
|
@ -148,7 +186,7 @@ public class BlockDecorTreeCutter extends BlockDecorDirectedHorizontal
|
|||
@Override
|
||||
public int receiveEnergy(int maxReceive, boolean simulate)
|
||||
{
|
||||
maxReceive = MathHelper.clamp(maxReceive, 0, Math.max((boost_energy_consumption*2) - energy_, 0));
|
||||
maxReceive = MathHelper.clamp(maxReceive, 0, Math.max((energy_max) - energy_, 0));
|
||||
if(!simulate) energy_ += maxReceive;
|
||||
return maxReceive;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue