Bug Fixes

- Fix typos
- Swapped terminology in stress information shown by goggles
- Added an overall block movement limit to contraptions
- Wrench no longer shows bulk range of chassis above a certain amount
- Chassis no longer use up slime when all sides are made sticky with the convenience shortcut
- fan now requires less su
This commit is contained in:
simibubi 2020-03-19 12:27:44 +01:00
parent 078033059a
commit a12aed71d2
8 changed files with 25 additions and 18 deletions

View file

@ -21,8 +21,7 @@ public class CKinetics extends ConfigBase {
public ConfigInt inWorldProcessingTime = i(150, 0, "inWorldProcessingTime", Comments.inWorldProcessingTime); public ConfigInt inWorldProcessingTime = i(150, 0, "inWorldProcessingTime", Comments.inWorldProcessingTime);
public ConfigGroup contraptions = group(0, "contraptions", "Moving Contraptions"); public ConfigGroup contraptions = group(0, "contraptions", "Moving Contraptions");
public ConfigInt maxChassisForTranslation = i(16, 1, "maxChassisForTranslation", Comments.maxChassisForTranslation); public ConfigInt maxBlocksMoved = i(2048, 1, "maxBlocksMoved", Comments.maxBlocksMoved);
public ConfigInt maxChassisForRotation = i(16, 1, "maxChassisForRotation", Comments.maxChassisForRotation);
public ConfigInt maxChassisRange = i(16, 1, "maxChassisRange", Comments.maxChassisRange); public ConfigInt maxChassisRange = i(16, 1, "maxChassisRange", Comments.maxChassisRange);
public ConfigInt maxPistonPoles = i(64, 1, "maxPistonPoles", Comments.maxPistonPoles); public ConfigInt maxPistonPoles = i(64, 1, "maxPistonPoles", Comments.maxPistonPoles);
public ConfigInt maxRopeLength = i(128, 1, "maxRopeLength", Comments.maxRopeLength); public ConfigInt maxRopeLength = i(128, 1, "maxRopeLength", Comments.maxRopeLength);
@ -54,8 +53,7 @@ public class CKinetics extends ConfigBase {
static String fanRotationArgmax = "Rotation speed at which the maximum stats of fans are reached."; static String fanRotationArgmax = "Rotation speed at which the maximum stats of fans are reached.";
static String generatingFanSpeed = "Rotation speed generated by a vertical fan above fire."; static String generatingFanSpeed = "Rotation speed generated by a vertical fan above fire.";
static String inWorldProcessingTime = "Game ticks required for a Fan-based processing recipe to take effect."; static String inWorldProcessingTime = "Game ticks required for a Fan-based processing recipe to take effect.";
static String maxChassisForTranslation = "Maximum amount of chassis blocks movable by a Mechanical Piston."; static String maxBlocksMoved = "Maximum amount of blocks in a structure movable by Pistons, Bearings or other means.";
static String maxChassisForRotation = "Maximum amount of chassis blocks movable by a Mechanical Bearing.";
static String maxChassisRange = "Maximum value of a chassis attachment range."; static String maxChassisRange = "Maximum value of a chassis attachment range.";
static String maxPistonPoles = "Maximum amount of extension poles behind a Mechanical Piston."; static String maxPistonPoles = "Maximum amount of extension poles behind a Mechanical Piston.";
static String maxRopeLength = "Max length of rope available off a Rope Pulley."; static String maxRopeLength = "Max length of rope available off a Rope Pulley.";

View file

@ -33,7 +33,6 @@ public class StressConfigDefaults {
case DRILL: case DRILL:
case SAW: case SAW:
case DEPLOYER: case DEPLOYER:
case ENCASED_FAN:
case MECHANICAL_MIXER: case MECHANICAL_MIXER:
return 4; return 4;
@ -47,6 +46,7 @@ public class StressConfigDefaults {
return 2; return 2;
case BELT: case BELT:
case ENCASED_FAN:
case CUCKOO_CLOCK: case CUCKOO_CLOCK:
return 1; return 1;

View file

@ -1,16 +1,19 @@
package com.simibubi.create.modules.contraptions.components.contraptions; package com.simibubi.create.modules.contraptions.components.contraptions;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.GlStateManager;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems; import com.simibubi.create.AllItems;
import com.simibubi.create.AllKeys; import com.simibubi.create.AllKeys;
import com.simibubi.create.foundation.utility.TessellatorHelper; import com.simibubi.create.foundation.utility.TessellatorHelper;
import com.simibubi.create.modules.contraptions.components.contraptions.chassis.ChassisTileEntity; import com.simibubi.create.modules.contraptions.components.contraptions.chassis.ChassisTileEntity;
import com.simibubi.create.modules.contraptions.components.contraptions.chassis.LinearChassisBlock;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -47,8 +50,8 @@ public class ChassisRangeDisplay {
if (positions == null) if (positions == null)
return shape; return shape;
for (BlockPos blockPos : positions) for (BlockPos blockPos : positions)
shape = VoxelShapes.or(shape, shape =
BLOCK_OUTLINE.withOffset(blockPos.getX(), blockPos.getY(), blockPos.getZ())); VoxelShapes.or(shape, BLOCK_OUTLINE.withOffset(blockPos.getX(), blockPos.getY(), blockPos.getZ()));
return shape; return shape;
} }
@ -68,6 +71,13 @@ public class ChassisRangeDisplay {
includedTEs = te.collectChassisGroup(); includedTEs = te.collectChassisGroup();
if (includedTEs == null) if (includedTEs == null)
return shape; return shape;
// outlining algo is not very scalable -> display only single chassis if group gets too large
if (LinearChassisBlock.isChassis(chassis.getBlockState()) && includedTEs.size() > 32)
includedTEs = Arrays.asList(chassis);
if (AllBlocks.ROTATION_CHASSIS.typeOf(chassis.getBlockState()) && includedTEs.size() > 8)
includedTEs = Arrays.asList(chassis);
for (ChassisTileEntity chassisTileEntity : includedTEs) for (ChassisTileEntity chassisTileEntity : includedTEs)
shape = VoxelShapes.or(shape, super.createSelection(chassisTileEntity)); shape = VoxelShapes.or(shape, super.createSelection(chassisTileEntity));
return shape; return shape;

View file

@ -115,7 +115,8 @@ public abstract class Contraption {
if (!addToInitialFrontier(world, pos, forcedDirection, frontier)) if (!addToInitialFrontier(world, pos, forcedDirection, frontier))
return false; return false;
for (int limit = 1000; limit > 0; limit--) { Integer blockLimit = AllConfigs.SERVER.kinetics.maxBlocksMoved.get();
for (int limit = blockLimit; limit > 0; limit--) {
if (frontier.isEmpty()) if (frontier.isEmpty())
return true; return true;
if (!moveBlock(world, frontier.remove(0), forcedDirection, frontier, visited)) if (!moveBlock(world, frontier.remove(0), forcedDirection, frontier, visited))

View file

@ -60,8 +60,6 @@ public abstract class AbstractChassisBlock extends RotatedPillarBlock {
return true; return true;
} }
worldIn.playSound(null, pos, AllSoundEvents.SLIME_ADDED.get(), SoundCategory.BLOCKS, .5f, 1); worldIn.playSound(null, pos, AllSoundEvents.SLIME_ADDED.get(), SoundCategory.BLOCKS, .5f, 1);
if (!player.isCreative())
heldItem.shrink(1);
state = state.with(glueableSide, true); state = state.with(glueableSide, true);
} }
} }

View file

@ -131,9 +131,9 @@ public class GaugeInformationRenderer {
tooltip.add(spacing + _kineticStatsTitle); tooltip.add(spacing + _kineticStatsTitle);
tooltip.add(spacing + GRAY + _stressImpact); tooltip.add(spacing + GRAY + _stressImpact);
String addedStress = AQUA + "" + format(stressApplied) + _stressUnit + " " + DARK_GRAY + _atCurrentSpeed; String addedStress = AQUA + "" + format(stressApplied) + _stressUnit + " " + DARK_GRAY + _baseValue;
String addedStressAtBase = String addedStressAtBase =
GRAY + "" + format(stressApplied * Math.abs(te.getSpeed())) + _stressUnit + " " + DARK_GRAY + _baseValue; GRAY + "" + format(stressApplied * Math.abs(te.getSpeed())) + _stressUnit + " " + DARK_GRAY + _atCurrentSpeed;
tooltip.add(spacing + " " + addedStress); tooltip.add(spacing + " " + addedStress);
tooltip.add(spacing + " " + addedStressAtBase); tooltip.add(spacing + " " + addedStressAtBase);
} }
@ -163,8 +163,8 @@ public class GaugeInformationRenderer {
relativeCap = addedStressCapacity * actualSpeed; relativeCap = addedStressCapacity * actualSpeed;
String addedCapacity = String addedCapacity =
AQUA + "" + format(addedStressCapacity) + _stressUnit + " " + DARK_GRAY + _atCurrentSpeed; AQUA + "" + format(addedStressCapacity) + _stressUnit + " " + DARK_GRAY + _baseValue;
String addedCapacityAtBase = GRAY + "" + format(relativeCap) + _stressUnit + " " + DARK_GRAY + _baseValue; String addedCapacityAtBase = GRAY + "" + format(relativeCap) + _stressUnit + " " + DARK_GRAY + _atCurrentSpeed;
tooltip.add(spacing + " " + addedCapacity); tooltip.add(spacing + " " + addedCapacity);
tooltip.add(spacing + " " + addedCapacityAtBase); tooltip.add(spacing + " " + addedCapacityAtBase);
} }
@ -228,8 +228,8 @@ public class GaugeInformationRenderer {
tooltip.add(spacing + GRAY + _capacity); tooltip.add(spacing + GRAY + _capacity);
String capacity = color + "" + format((cap - stress) / Math.abs(theoreticalSpeed)) + _stressUnit + " " String capacity = color + "" + format((cap - stress) / Math.abs(theoreticalSpeed)) + _stressUnit + " "
+ DARK_GRAY + _atCurrentSpeed; + DARK_GRAY + _baseValue;
String capacityAtBase = GRAY + "" + format(cap - stress) + _stressUnit + " " + DARK_GRAY + _baseValue; String capacityAtBase = GRAY + "" + format(cap - stress) + _stressUnit + " " + DARK_GRAY + _atCurrentSpeed;
tooltip.add(spacing + " " + capacity); tooltip.add(spacing + " " + capacity);
tooltip.add(spacing + " " + capacityAtBase); tooltip.add(spacing + " " + capacityAtBase);
} }

View file

@ -212,7 +212,7 @@
"block.create.weathered_limestone_bricks_wall": "Weathered Limestone Brick Wall", "block.create.weathered_limestone_bricks_wall": "Weathered Limestone Brick Wall",
"block.create.weathered_limestone_bricks_slab": "Weathered Limestone Brick Slab", "block.create.weathered_limestone_bricks_slab": "Weathered Limestone Brick Slab",
"block.create.weathered_limestone_pillar": "Weathered Limestone Pillar", "block.create.weathered_limestone_pillar": "Weathered Limestone Pillar",
"block.create.weathered_limestone_layers": "Weathered Layered Limestone", "block.create.weathered_limestone_layers": "Layered Weathered Limestone",
"block.create.dolomite_pillar": "Dolomite Pillar", "block.create.dolomite_pillar": "Dolomite Pillar",
"block.create.dolomite": "Dolomite", "block.create.dolomite": "Dolomite",
@ -1144,7 +1144,7 @@
"item.create.shadow_steel.tooltip.summary": "A Chromatic material forged _in_ _the_ _void_.", "item.create.shadow_steel.tooltip.summary": "A Chromatic material forged _in_ _the_ _void_.",
"item.create.slot_cover.tooltip": "SLOT COVER", "item.create.slot_cover.tooltip": "SLOT COVER",
"item.create.slot_cover.tooltip.summary": "Used to mark a _Mechanical_ _Crafter_ as an empty slot in a recipe. Crafters do not necessarily have to form a full square gri. This is useful when there are recipes where _ingredients_ _are_ _diagonal_ to each other.", "item.create.slot_cover.tooltip.summary": "Used to mark a _Mechanical_ _Crafter_ as an empty slot in a recipe. Crafters do not necessarily have to form a full square grid. This is useful when there are recipes where _ingredients_ _are_ _diagonal_ to each other.",
"tool.create.shadow_steel.tooltip": "SHADOW STEEL TOOLS", "tool.create.shadow_steel.tooltip": "SHADOW STEEL TOOLS",
"tool.create.shadow_steel.tooltip.summary": "A fast and powerful tool that _destroys_ _drops_ from any block or entity. Killed mobs can drop _more_ _experience_ based on the _Looting_ modifier of this tool.", "tool.create.shadow_steel.tooltip.summary": "A fast and powerful tool that _destroys_ _drops_ from any block or entity. Killed mobs can drop _more_ _experience_ based on the _Looting_ modifier of this tool.",