resolved culling issues + crude heater voxel shape
This commit is contained in:
parent
42b78b01eb
commit
7404972cf6
3 changed files with 27 additions and 13 deletions
|
@ -113,7 +113,11 @@ public class AllShapes {
|
||||||
|
|
||||||
BASIN_BLOCK_SHAPE = shape(0, 2, 0, 16, 13, 16).erase(2, 5, 2, 14, 14, 14)
|
BASIN_BLOCK_SHAPE = shape(0, 2, 0, 16, 13, 16).erase(2, 5, 2, 14, 14, 14)
|
||||||
.add(2, 0, 2, 14, 2, 14)
|
.add(2, 0, 2, 14, 2, 14)
|
||||||
.build(),
|
.build(),
|
||||||
|
HEATER_BLOCK_SHAPE =
|
||||||
|
shape(2, 0, 2, 14, 16, 14).add(0, 0, 0, 16, 2, 16)
|
||||||
|
.erase(3, 5, 3, 13, 16, 13)
|
||||||
|
.build(),
|
||||||
CRUSHING_WHEEL_COLLISION_SHAPE = cuboid(0, 0, 0, 16, 22, 16),
|
CRUSHING_WHEEL_COLLISION_SHAPE = cuboid(0, 0, 0, 16, 22, 16),
|
||||||
MECHANICAL_PROCESSOR_SHAPE = shape(VoxelShapes.fullCube()).erase(4, 0, 4, 12, 16, 12)
|
MECHANICAL_PROCESSOR_SHAPE = shape(VoxelShapes.fullCube()).erase(4, 0, 4, 12, 16, 12)
|
||||||
.build(),
|
.build(),
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.simibubi.create.content.contraptions.processing;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import javax.annotation.ParametersAreNonnullByDefault;
|
import javax.annotation.ParametersAreNonnullByDefault;
|
||||||
|
|
||||||
|
import com.simibubi.create.AllShapes;
|
||||||
import com.simibubi.create.AllTileEntities;
|
import com.simibubi.create.AllTileEntities;
|
||||||
import com.simibubi.create.foundation.block.ITE;
|
import com.simibubi.create.foundation.block.ITE;
|
||||||
|
|
||||||
|
@ -20,6 +21,8 @@ import net.minecraft.util.ActionResultType;
|
||||||
import net.minecraft.util.Hand;
|
import net.minecraft.util.Hand;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.BlockRayTraceResult;
|
import net.minecraft.util.math.BlockRayTraceResult;
|
||||||
|
import net.minecraft.util.math.shapes.ISelectionContext;
|
||||||
|
import net.minecraft.util.math.shapes.VoxelShape;
|
||||||
import net.minecraft.world.IBlockReader;
|
import net.minecraft.world.IBlockReader;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
@ -74,9 +77,15 @@ public class HeaterBlock extends Block implements ITE<HeaterTileEntity> {
|
||||||
@Override
|
@Override
|
||||||
public BlockState getStateForPlacement(BlockItemUseContext context) {
|
public BlockState getStateForPlacement(BlockItemUseContext context) {
|
||||||
ItemStack item = context.getItem();
|
ItemStack item = context.getItem();
|
||||||
return super.getStateForPlacement(context).with(HAS_BLAZE, item.hasTag() && item.getTag()
|
BlockState state = super.getStateForPlacement(context);
|
||||||
.contains("has_blaze")
|
return (state != null ? state : getDefaultState()).with(HAS_BLAZE,
|
||||||
&& item.getTag()
|
item.hasTag() && item.getTag() != null && item.getTag()
|
||||||
.getBoolean("has_blaze"));
|
.contains("has_blaze") && item.getTag()
|
||||||
|
.getBoolean("has_blaze"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public VoxelShape getShape(BlockState state, IBlockReader reader, BlockPos pos, ISelectionContext context) {
|
||||||
|
return AllShapes.HEATER_BLOCK_SHAPE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.item.Items;
|
||||||
import net.minecraft.nbt.CompoundNBT;
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
import net.minecraft.tileentity.TileEntityType;
|
import net.minecraft.tileentity.TileEntityType;
|
||||||
import net.minecraftforge.common.ForgeHooks;
|
import net.minecraftforge.common.ForgeHooks;
|
||||||
|
@ -64,13 +65,15 @@ public class HeaterTileEntity extends SmartTileEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean tryUpdateFuel(ItemStack itemStack) {
|
boolean tryUpdateFuel(ItemStack itemStack) {
|
||||||
int burnTime = itemStack.getItem()
|
int burnTime = itemStack.getItem() == Items.EGG ? 150 : itemStack.getItem()
|
||||||
.getBurnTime(itemStack);
|
.getBurnTime(itemStack);
|
||||||
|
|
||||||
if (burnTime == -1)
|
if (burnTime == -1)
|
||||||
burnTime = ForgeHooks.getBurnTime(itemStack);
|
burnTime = ForgeHooks.getBurnTime(itemStack);
|
||||||
int newFuelLevel = (burnTime > burnTimeRemaining ? 1 : 0); // todo: + (itemStack.getItem() == AllItems.SUPER_SPECIAL_FUEL.get() ? 1 : 0);
|
if (burnTime <= 0)
|
||||||
if (newFuelLevel <= fuelLevel) {
|
return false;
|
||||||
|
|
||||||
|
int newFuelLevel = 1; // todo: + (itemStack.getItem() == AllItems.SUPER_SPECIAL_FUEL.get() ? 1 : 0);
|
||||||
|
if (newFuelLevel < fuelLevel ^ burnTime <= burnTimeRemaining) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
burnTimeRemaining = burnTime;
|
burnTimeRemaining = burnTime;
|
||||||
|
@ -87,11 +90,9 @@ public class HeaterTileEntity extends SmartTileEntity {
|
||||||
int newHeatLevel = 1 + fuelLevel;
|
int newHeatLevel = 1 + fuelLevel;
|
||||||
if (newHeatLevel != bufferedHeatLevel) {
|
if (newHeatLevel != bufferedHeatLevel) {
|
||||||
bufferedHeatLevel = newHeatLevel;
|
bufferedHeatLevel = newHeatLevel;
|
||||||
// Block block = getBlockState().getBlock();
|
|
||||||
// if (block instanceof HeaterBlock)
|
|
||||||
// ((HeaterBlock) block).setLightLevel();
|
|
||||||
markDirty();
|
markDirty();
|
||||||
sendData();
|
if(world != null)
|
||||||
|
sendData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue