fix inifite power

This commit is contained in:
khj xiaogu 2021-12-28 22:11:30 +08:00
parent c10e3a34e6
commit 720c6f22e6
No known key found for this signature in database
GPG key ID: DEA172814EAFF426
2 changed files with 38 additions and 17 deletions

View file

@ -48,6 +48,7 @@ import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction;
import net.minecraftforge.fluids.capability.templates.FluidTank; import net.minecraftforge.fluids.capability.templates.FluidTank;
public abstract class SteamEngineTileEntity extends EngineTileEntity implements IHaveGoggleInformation { public abstract class SteamEngineTileEntity extends EngineTileEntity implements IHaveGoggleInformation {
@ -70,22 +71,26 @@ public abstract class SteamEngineTileEntity extends EngineTileEntity implements
super.tick(); super.tick();
if (level != null && !level.isClientSide) { if (level != null && !level.isClientSide) {
BlockState state = this.level.getBlockState(this.worldPosition); BlockState state = this.level.getBlockState(this.worldPosition);
if (!tank.isEmpty()&&tank.drain(this.getSteamConsumptionPerTick(), IFluidHandler.FluidAction.EXECUTE).getAmount() >= this.getSteamConsumptionPerTick()) { if(this.poweredWheel==null||this.poweredWheel.isRemoved()) {
this.level.setBlockAndUpdate(this.worldPosition, state.setValue(SteamEngineBlock.LIT, true)); heatup=0;
if(heatup>=60) { } else {
this.appliedCapacity = this.getGeneratingCapacity(); if (!tank.isEmpty()&&tank.drain(this.getSteamConsumptionPerTick(), IFluidHandler.FluidAction.EXECUTE).getAmount() >= this.getSteamConsumptionPerTick()) {
this.appliedSpeed = this.getGeneratingSpeed(); this.level.setBlockAndUpdate(this.worldPosition, state.setValue(SteamEngineBlock.LIT, true));
this.refreshWheelSpeed(); if(heatup>=60) {
}else this.appliedCapacity = this.getGeneratingCapacity();
heatup++; this.appliedSpeed = this.getGeneratingSpeed();
}else { this.refreshWheelSpeed();
if(heatup>0) }else
heatup--; heatup++;
this.level.setBlockAndUpdate(this.worldPosition, state.setValue(SteamEngineBlock.LIT, false)); }else {
this.appliedCapacity = 0; if(heatup>0)
this.appliedSpeed = 0; heatup--;
this.refreshWheelSpeed(); this.level.setBlockAndUpdate(this.worldPosition, state.setValue(SteamEngineBlock.LIT, false));
} this.appliedCapacity = 0;
this.appliedSpeed = 0;
this.refreshWheelSpeed();
}
}
this.level.sendBlockUpdated(this.getBlockPos(), this.getBlockState(), this.getBlockState(), 3); this.level.sendBlockUpdated(this.getBlockPos(), this.getBlockState(), this.getBlockState(), 3);
} }
} }

View file

@ -11,9 +11,14 @@ import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity
import com.simibubi.create.content.contraptions.components.flywheel.FlywheelBlock; import com.simibubi.create.content.contraptions.components.flywheel.FlywheelBlock;
import com.simibubi.create.content.contraptions.components.flywheel.FlywheelTileEntity; import com.simibubi.create.content.contraptions.components.flywheel.FlywheelTileEntity;
import com.simibubi.create.content.contraptions.components.flywheel.engine.EngineBlock; import com.simibubi.create.content.contraptions.components.flywheel.engine.EngineBlock;
import com.simibubi.create.content.contraptions.components.flywheel.engine.EngineTileEntity;
import com.teammoeg.steampowered.content.engine.SteamEngineTileEntity;
import net.minecraft.block.Block;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityType; import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
@Mixin(FlywheelTileEntity.class) @Mixin(FlywheelTileEntity.class)
public abstract class MixinFlywheel extends GeneratingKineticTileEntity{ public abstract class MixinFlywheel extends GeneratingKineticTileEntity{
@ -26,9 +31,20 @@ public abstract class MixinFlywheel extends GeneratingKineticTileEntity{
public void sp$tick(CallbackInfo cbi) { public void sp$tick(CallbackInfo cbi) {
Direction at=FlywheelBlock.getConnection(getBlockState()); Direction at=FlywheelBlock.getConnection(getBlockState());
if(at!=null) { if(at!=null) {
if(!(this.getWorld().getBlockState(this.getBlockPos().relative(at,2)).getBlock() instanceof EngineBlock)) { BlockPos eng=this.getBlockPos().relative(at,2);
Block b=this.getWorld().getBlockState(eng).getBlock();
if(!(b instanceof EngineBlock)) {
FlywheelBlock.setConnection(getWorld(),getBlockPos(),getBlockState(),null); FlywheelBlock.setConnection(getWorld(),getBlockPos(),getBlockState(),null);
this.setRotation(0,0); this.setRotation(0,0);
}else {
TileEntity te=this.getWorld().getBlockEntity(eng);
if(te instanceof EngineTileEntity) {
if(te instanceof SteamEngineTileEntity) {
SteamEngineTileEntity ete=(SteamEngineTileEntity) te;
if(ete.getFlywheel()!=this.getBlockState().getBlock())
this.setRotation(0,0);
}
}else this.setRotation(0,0);
} }
}else this.setRotation(0,0); }else this.setRotation(0,0);
} }