Empty Blaze Heater

- added empty blaze heater
- catching blazes (rclick blazes or a blaze spawner)
- only blaze heaters with blaze can heat basins or power fans
- updated item tooltip to fit the discussed fueling system
This commit is contained in:
LordGrimmauld 2020-07-13 23:33:55 +02:00
parent f9691da8c8
commit 509edd9181
21 changed files with 2830 additions and 2628 deletions

File diff suppressed because it is too large Load diff

View file

@ -29,8 +29,8 @@
},
{
"when": {
"axis": "x",
"sticky_south": "true"
"sticky_south": "true",
"axis": "x"
},
"apply": {
"model": "create:block/radial_chassis_side_x_sticky",
@ -39,8 +39,8 @@
},
{
"when": {
"axis": "y",
"sticky_south": "true"
"sticky_south": "true",
"axis": "y"
},
"apply": {
"model": "create:block/radial_chassis_side_y_sticky"
@ -48,8 +48,8 @@
},
{
"when": {
"axis": "z",
"sticky_south": "true"
"sticky_south": "true",
"axis": "z"
},
"apply": {
"model": "create:block/radial_chassis_side_x_sticky",
@ -59,8 +59,8 @@
},
{
"when": {
"axis": "x",
"sticky_south": "false"
"sticky_south": "false",
"axis": "x"
},
"apply": {
"model": "create:block/radial_chassis_side_x",
@ -69,8 +69,8 @@
},
{
"when": {
"axis": "y",
"sticky_south": "false"
"sticky_south": "false",
"axis": "y"
},
"apply": {
"model": "create:block/radial_chassis_side_y"
@ -78,8 +78,8 @@
},
{
"when": {
"axis": "z",
"sticky_south": "false"
"sticky_south": "false",
"axis": "z"
},
"apply": {
"model": "create:block/radial_chassis_side_x",
@ -89,8 +89,8 @@
},
{
"when": {
"axis": "x",
"sticky_west": "true"
"sticky_west": "true",
"axis": "x"
},
"apply": {
"model": "create:block/radial_chassis_side_x_sticky",
@ -99,8 +99,8 @@
},
{
"when": {
"axis": "y",
"sticky_west": "true"
"sticky_west": "true",
"axis": "y"
},
"apply": {
"model": "create:block/radial_chassis_side_y_sticky",
@ -109,8 +109,8 @@
},
{
"when": {
"axis": "z",
"sticky_west": "true"
"sticky_west": "true",
"axis": "z"
},
"apply": {
"model": "create:block/radial_chassis_side_z_sticky",
@ -119,8 +119,8 @@
},
{
"when": {
"axis": "x",
"sticky_west": "false"
"sticky_west": "false",
"axis": "x"
},
"apply": {
"model": "create:block/radial_chassis_side_x",
@ -129,8 +129,8 @@
},
{
"when": {
"axis": "y",
"sticky_west": "false"
"sticky_west": "false",
"axis": "y"
},
"apply": {
"model": "create:block/radial_chassis_side_y",
@ -139,8 +139,8 @@
},
{
"when": {
"axis": "z",
"sticky_west": "false"
"sticky_west": "false",
"axis": "z"
},
"apply": {
"model": "create:block/radial_chassis_side_z",
@ -149,8 +149,8 @@
},
{
"when": {
"axis": "x",
"sticky_north": "true"
"sticky_north": "true",
"axis": "x"
},
"apply": {
"model": "create:block/radial_chassis_side_x_sticky"
@ -158,8 +158,8 @@
},
{
"when": {
"axis": "y",
"sticky_north": "true"
"sticky_north": "true",
"axis": "y"
},
"apply": {
"model": "create:block/radial_chassis_side_y_sticky",
@ -168,8 +168,8 @@
},
{
"when": {
"axis": "z",
"sticky_north": "true"
"sticky_north": "true",
"axis": "z"
},
"apply": {
"model": "create:block/radial_chassis_side_x_sticky",
@ -178,8 +178,8 @@
},
{
"when": {
"axis": "x",
"sticky_north": "false"
"sticky_north": "false",
"axis": "x"
},
"apply": {
"model": "create:block/radial_chassis_side_x"
@ -187,8 +187,8 @@
},
{
"when": {
"axis": "y",
"sticky_north": "false"
"sticky_north": "false",
"axis": "y"
},
"apply": {
"model": "create:block/radial_chassis_side_y",
@ -197,8 +197,8 @@
},
{
"when": {
"axis": "z",
"sticky_north": "false"
"sticky_north": "false",
"axis": "z"
},
"apply": {
"model": "create:block/radial_chassis_side_x",
@ -207,8 +207,8 @@
},
{
"when": {
"axis": "x",
"sticky_east": "true"
"sticky_east": "true",
"axis": "x"
},
"apply": {
"model": "create:block/radial_chassis_side_x_sticky",
@ -217,8 +217,8 @@
},
{
"when": {
"axis": "y",
"sticky_east": "true"
"sticky_east": "true",
"axis": "y"
},
"apply": {
"model": "create:block/radial_chassis_side_y_sticky",
@ -227,8 +227,8 @@
},
{
"when": {
"axis": "z",
"sticky_east": "true"
"sticky_east": "true",
"axis": "z"
},
"apply": {
"model": "create:block/radial_chassis_side_z_sticky"
@ -236,8 +236,8 @@
},
{
"when": {
"axis": "x",
"sticky_east": "false"
"sticky_east": "false",
"axis": "x"
},
"apply": {
"model": "create:block/radial_chassis_side_x",
@ -246,8 +246,8 @@
},
{
"when": {
"axis": "y",
"sticky_east": "false"
"sticky_east": "false",
"axis": "y"
},
"apply": {
"model": "create:block/radial_chassis_side_y",
@ -256,8 +256,8 @@
},
{
"when": {
"axis": "z",
"sticky_east": "false"
"sticky_east": "false",
"axis": "z"
},
"apply": {
"model": "create:block/radial_chassis_side_z"

View file

@ -1064,6 +1064,15 @@
"block.create.basin.tooltip": "BASIN",
"block.create.basin.tooltip.summary": "A handy _item_ _container_ used in processing with the _Mechanical_ _Mixer_ and the _Mechanical_ _Press_. Supports _Redstone_ _Comparators_.",
"block.create.blaze_heater.tooltip": "BLAZE HEATER",
"block.create.blaze_heater.tooltip.summary": "A block to heat a basin when housing a tamed blaze.",
"block.create.blaze_heater.tooltip.condition1": "When using on a blaze or blaze spawner",
"block.create.blaze_heater.tooltip.behaviour1": "_Captures_ a blaze in the item",
"block.create.blaze_heater.tooltip.condition2": "When placed below a basin",
"block.create.blaze_heater.tooltip.behaviour2": "Provides _heat_ to basin recipes.",
"block.create.blaze_heater.tooltip.condition3": "When fuel is used on the blaze heater",
"block.create.blaze_heater.tooltip.behaviour3": "Increases the remaining burn time by the furnace brn time of the used item. Consumes the item. Use _special_ _fuel_ for best results.",
"block.create.reinforced_rail.tooltip": "REINFORCED RAIL",
"block.create.reinforced_rail.tooltip.summary": "A timber stabilized rail, _does_ _not_ _need_ _supports_.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 782",
"_": "Missing Localizations: 790",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1065,6 +1065,15 @@
"block.create.basin.tooltip": "UNLOCALIZED: BASIN",
"block.create.basin.tooltip.summary": "UNLOCALIZED: A handy _item_ _container_ used in processing with the _Mechanical_ _Mixer_ and the _Mechanical_ _Press_. Supports _Redstone_ _Comparators_.",
"block.create.blaze_heater.tooltip": "UNLOCALIZED: BLAZE HEATER",
"block.create.blaze_heater.tooltip.summary": "UNLOCALIZED: A block to heat a basin when housing a tamed blaze.",
"block.create.blaze_heater.tooltip.condition1": "UNLOCALIZED: When using on a blaze or blaze spawner",
"block.create.blaze_heater.tooltip.behaviour1": "UNLOCALIZED: _Captures_ a blaze in the item",
"block.create.blaze_heater.tooltip.condition2": "UNLOCALIZED: When placed below a basin",
"block.create.blaze_heater.tooltip.behaviour2": "UNLOCALIZED: Provides _heat_ to basin recipes.",
"block.create.blaze_heater.tooltip.condition3": "UNLOCALIZED: When fuel is used on the blaze heater",
"block.create.blaze_heater.tooltip.behaviour3": "UNLOCALIZED: Increases the remaining burn time by the furnace brn time of the used item. Consumes the item. Use _special_ _fuel_ for best results.",
"block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL",
"block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 385",
"_": "Missing Localizations: 393",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1065,6 +1065,15 @@
"block.create.basin.tooltip": "BASSIN",
"block.create.basin.tooltip.summary": "Un _objet_ _conteneur_ pratique utilisé dans le traitement avec le _mixeur_ _mécanique_ et la _presse_ _mecanique_. Prend en charge les _comparateur_ _de_ _redstone_.",
"block.create.blaze_heater.tooltip": "UNLOCALIZED: BLAZE HEATER",
"block.create.blaze_heater.tooltip.summary": "UNLOCALIZED: A block to heat a basin when housing a tamed blaze.",
"block.create.blaze_heater.tooltip.condition1": "UNLOCALIZED: When using on a blaze or blaze spawner",
"block.create.blaze_heater.tooltip.behaviour1": "UNLOCALIZED: _Captures_ a blaze in the item",
"block.create.blaze_heater.tooltip.condition2": "UNLOCALIZED: When placed below a basin",
"block.create.blaze_heater.tooltip.behaviour2": "UNLOCALIZED: Provides _heat_ to basin recipes.",
"block.create.blaze_heater.tooltip.condition3": "UNLOCALIZED: When fuel is used on the blaze heater",
"block.create.blaze_heater.tooltip.behaviour3": "UNLOCALIZED: Increases the remaining burn time by the furnace brn time of the used item. Consumes the item. Use _special_ _fuel_ for best results.",
"block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL",
"block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 369",
"_": "Missing Localizations: 377",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1065,6 +1065,15 @@
"block.create.basin.tooltip": "BACINELLA",
"block.create.basin.tooltip.summary": "Un pratico _contenitore_ _di_ _oggetti_ utilizzato nella lavorazione con il _Miscelatore_ _Meccanico_ e la _Pressa_ _Meccanica_. Supporta i _Comparatori_ _Redstone_.",
"block.create.blaze_heater.tooltip": "UNLOCALIZED: BLAZE HEATER",
"block.create.blaze_heater.tooltip.summary": "UNLOCALIZED: A block to heat a basin when housing a tamed blaze.",
"block.create.blaze_heater.tooltip.condition1": "UNLOCALIZED: When using on a blaze or blaze spawner",
"block.create.blaze_heater.tooltip.behaviour1": "UNLOCALIZED: _Captures_ a blaze in the item",
"block.create.blaze_heater.tooltip.condition2": "UNLOCALIZED: When placed below a basin",
"block.create.blaze_heater.tooltip.behaviour2": "UNLOCALIZED: Provides _heat_ to basin recipes.",
"block.create.blaze_heater.tooltip.condition3": "UNLOCALIZED: When fuel is used on the blaze heater",
"block.create.blaze_heater.tooltip.behaviour3": "UNLOCALIZED: Increases the remaining burn time by the furnace brn time of the used item. Consumes the item. Use _special_ _fuel_ for best results.",
"block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL",
"block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 364",
"_": "Missing Localizations: 372",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1065,6 +1065,15 @@
"block.create.basin.tooltip": "鉢",
"block.create.basin.tooltip.summary": "_メカニカルミキサー_と_メカニカルプレス_での処理に使用される便利な_アイテムの入れ物_。_レッドストーンコンパレータ_をサポートします。",
"block.create.blaze_heater.tooltip": "UNLOCALIZED: BLAZE HEATER",
"block.create.blaze_heater.tooltip.summary": "UNLOCALIZED: A block to heat a basin when housing a tamed blaze.",
"block.create.blaze_heater.tooltip.condition1": "UNLOCALIZED: When using on a blaze or blaze spawner",
"block.create.blaze_heater.tooltip.behaviour1": "UNLOCALIZED: _Captures_ a blaze in the item",
"block.create.blaze_heater.tooltip.condition2": "UNLOCALIZED: When placed below a basin",
"block.create.blaze_heater.tooltip.behaviour2": "UNLOCALIZED: Provides _heat_ to basin recipes.",
"block.create.blaze_heater.tooltip.condition3": "UNLOCALIZED: When fuel is used on the blaze heater",
"block.create.blaze_heater.tooltip.behaviour3": "UNLOCALIZED: Increases the remaining burn time by the furnace brn time of the used item. Consumes the item. Use _special_ _fuel_ for best results.",
"block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL",
"block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 369",
"_": "Missing Localizations: 377",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1065,6 +1065,15 @@
"block.create.basin.tooltip": "BASIN",
"block.create.basin.tooltip.summary": "믹서나 압착기와 같이 쓰이는 간편한 _아이템_ _저장소_입니다. 레드스톤 비교기와 호환됩니다.",
"block.create.blaze_heater.tooltip": "UNLOCALIZED: BLAZE HEATER",
"block.create.blaze_heater.tooltip.summary": "UNLOCALIZED: A block to heat a basin when housing a tamed blaze.",
"block.create.blaze_heater.tooltip.condition1": "UNLOCALIZED: When using on a blaze or blaze spawner",
"block.create.blaze_heater.tooltip.behaviour1": "UNLOCALIZED: _Captures_ a blaze in the item",
"block.create.blaze_heater.tooltip.condition2": "UNLOCALIZED: When placed below a basin",
"block.create.blaze_heater.tooltip.behaviour2": "UNLOCALIZED: Provides _heat_ to basin recipes.",
"block.create.blaze_heater.tooltip.condition3": "UNLOCALIZED: When fuel is used on the blaze heater",
"block.create.blaze_heater.tooltip.behaviour3": "UNLOCALIZED: Increases the remaining burn time by the furnace brn time of the used item. Consumes the item. Use _special_ _fuel_ for best results.",
"block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL",
"block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 719",
"_": "Missing Localizations: 727",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1065,6 +1065,15 @@
"block.create.basin.tooltip": "UNLOCALIZED: BASIN",
"block.create.basin.tooltip.summary": "UNLOCALIZED: A handy _item_ _container_ used in processing with the _Mechanical_ _Mixer_ and the _Mechanical_ _Press_. Supports _Redstone_ _Comparators_.",
"block.create.blaze_heater.tooltip": "UNLOCALIZED: BLAZE HEATER",
"block.create.blaze_heater.tooltip.summary": "UNLOCALIZED: A block to heat a basin when housing a tamed blaze.",
"block.create.blaze_heater.tooltip.condition1": "UNLOCALIZED: When using on a blaze or blaze spawner",
"block.create.blaze_heater.tooltip.behaviour1": "UNLOCALIZED: _Captures_ a blaze in the item",
"block.create.blaze_heater.tooltip.condition2": "UNLOCALIZED: When placed below a basin",
"block.create.blaze_heater.tooltip.behaviour2": "UNLOCALIZED: Provides _heat_ to basin recipes.",
"block.create.blaze_heater.tooltip.condition3": "UNLOCALIZED: When fuel is used on the blaze heater",
"block.create.blaze_heater.tooltip.behaviour3": "UNLOCALIZED: Increases the remaining burn time by the furnace brn time of the used item. Consumes the item. Use _special_ _fuel_ for best results.",
"block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL",
"block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 789",
"_": "Missing Localizations: 797",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1065,6 +1065,15 @@
"block.create.basin.tooltip": "UNLOCALIZED: BASIN",
"block.create.basin.tooltip.summary": "UNLOCALIZED: A handy _item_ _container_ used in processing with the _Mechanical_ _Mixer_ and the _Mechanical_ _Press_. Supports _Redstone_ _Comparators_.",
"block.create.blaze_heater.tooltip": "UNLOCALIZED: BLAZE HEATER",
"block.create.blaze_heater.tooltip.summary": "UNLOCALIZED: A block to heat a basin when housing a tamed blaze.",
"block.create.blaze_heater.tooltip.condition1": "UNLOCALIZED: When using on a blaze or blaze spawner",
"block.create.blaze_heater.tooltip.behaviour1": "UNLOCALIZED: _Captures_ a blaze in the item",
"block.create.blaze_heater.tooltip.condition2": "UNLOCALIZED: When placed below a basin",
"block.create.blaze_heater.tooltip.behaviour2": "UNLOCALIZED: Provides _heat_ to basin recipes.",
"block.create.blaze_heater.tooltip.condition3": "UNLOCALIZED: When fuel is used on the blaze heater",
"block.create.blaze_heater.tooltip.behaviour3": "UNLOCALIZED: Increases the remaining burn time by the furnace brn time of the used item. Consumes the item. Use _special_ _fuel_ for best results.",
"block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL",
"block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 783",
"_": "Missing Localizations: 791",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1065,6 +1065,15 @@
"block.create.basin.tooltip": "UNLOCALIZED: BASIN",
"block.create.basin.tooltip.summary": "UNLOCALIZED: A handy _item_ _container_ used in processing with the _Mechanical_ _Mixer_ and the _Mechanical_ _Press_. Supports _Redstone_ _Comparators_.",
"block.create.blaze_heater.tooltip": "UNLOCALIZED: BLAZE HEATER",
"block.create.blaze_heater.tooltip.summary": "UNLOCALIZED: A block to heat a basin when housing a tamed blaze.",
"block.create.blaze_heater.tooltip.condition1": "UNLOCALIZED: When using on a blaze or blaze spawner",
"block.create.blaze_heater.tooltip.behaviour1": "UNLOCALIZED: _Captures_ a blaze in the item",
"block.create.blaze_heater.tooltip.condition2": "UNLOCALIZED: When placed below a basin",
"block.create.blaze_heater.tooltip.behaviour2": "UNLOCALIZED: Provides _heat_ to basin recipes.",
"block.create.blaze_heater.tooltip.condition3": "UNLOCALIZED: When fuel is used on the blaze heater",
"block.create.blaze_heater.tooltip.behaviour3": "UNLOCALIZED: Increases the remaining burn time by the furnace brn time of the used item. Consumes the item. Use _special_ _fuel_ for best results.",
"block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL",
"block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 45",
"_": "Missing Localizations: 53",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1065,6 +1065,15 @@
"block.create.basin.tooltip": "BASIN",
"block.create.basin.tooltip.summary": "一种方便的_物品容器_,常常用于_辊压机_和_搅拌机_,可以被_红石比较器_检测",
"block.create.blaze_heater.tooltip": "UNLOCALIZED: BLAZE HEATER",
"block.create.blaze_heater.tooltip.summary": "UNLOCALIZED: A block to heat a basin when housing a tamed blaze.",
"block.create.blaze_heater.tooltip.condition1": "UNLOCALIZED: When using on a blaze or blaze spawner",
"block.create.blaze_heater.tooltip.behaviour1": "UNLOCALIZED: _Captures_ a blaze in the item",
"block.create.blaze_heater.tooltip.condition2": "UNLOCALIZED: When placed below a basin",
"block.create.blaze_heater.tooltip.behaviour2": "UNLOCALIZED: Provides _heat_ to basin recipes.",
"block.create.blaze_heater.tooltip.condition3": "UNLOCALIZED: When fuel is used on the blaze heater",
"block.create.blaze_heater.tooltip.behaviour3": "UNLOCALIZED: Increases the remaining burn time by the furnace brn time of the used item. Consumes the item. Use _special_ _fuel_ for best results.",
"block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL",
"block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.",

View file

@ -1,6 +0,0 @@
{
"replace": false,
"values": [
"create:blaze_heater"
]
}

View file

@ -57,6 +57,7 @@ import com.simibubi.create.content.contraptions.fluids.FluidTankModel;
import com.simibubi.create.content.contraptions.fluids.PumpBlock;
import com.simibubi.create.content.contraptions.processing.BasinBlock;
import com.simibubi.create.content.contraptions.processing.HeaterBlock;
import com.simibubi.create.content.contraptions.processing.HeaterBlockItem;
import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerBlock;
import com.simibubi.create.content.contraptions.relays.advanced.sequencer.SequencedGearshiftBlock;
import com.simibubi.create.content.contraptions.relays.advanced.sequencer.SequencedGearshiftGenerator;
@ -402,10 +403,11 @@ public class AllBlocks {
public static final BlockEntry<HeaterBlock> HEATER = REGISTRATE.block("blaze_heater", HeaterBlock::new)
.initialProperties(SharedProperties::softMetal)
.properties(p -> p.lightValue(12))
.tag(AllBlockTags.FAN_HEATERS.tag)
.addLayer(() -> RenderType::getCutoutMipped)
.blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p)))
.simpleItem()
.item(HeaterBlockItem::new)
.build()
// .transform(heaterItemModel())
.register();
public static final BlockEntry<DepotBlock> DEPOT = REGISTRATE.block("depot", DepotBlock::new)

View file

@ -2,10 +2,12 @@ package com.simibubi.create.content.contraptions.components.fan;
import com.simibubi.create.AllTags.AllBlockTags;
import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity;
import com.simibubi.create.content.contraptions.processing.HeaterBlock;
import com.simibubi.create.content.logistics.block.chute.ChuteTileEntity;
import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.config.CKinetics;
import net.minecraft.block.BlockState;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.state.properties.BlockStateProperties;
import net.minecraft.tileentity.TileEntity;
@ -72,9 +74,10 @@ public class EncasedFanTileEntity extends GeneratingKineticTileEntity {
}
public boolean blockBelowIsHot() {
return world.getBlockState(pos.down())
.getBlock()
.isIn(AllBlockTags.FAN_HEATERS.tag);
BlockState checkState = world.getBlockState(pos.down());
return checkState.getBlock()
.isIn(AllBlockTags.FAN_HEATERS.tag)
|| (checkState.has(HeaterBlock.HAS_BLAZE) && checkState.get(HeaterBlock.HAS_BLAZE));
}
public float getMaxDistance() {

View file

@ -1,11 +1,20 @@
package com.simibubi.create.content.contraptions.processing;
import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
import com.simibubi.create.AllTileEntities;
import com.simibubi.create.foundation.block.ITE;
import mcp.MethodsReturnNonnullByDefault;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.BlockItemUseContext;
import net.minecraft.item.ItemStack;
import net.minecraft.state.BooleanProperty;
import net.minecraft.state.IProperty;
import net.minecraft.state.StateContainer.Builder;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Hand;
@ -14,20 +23,26 @@ import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.World;
import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
@MethodsReturnNonnullByDefault
@ParametersAreNonnullByDefault
public class HeaterBlock extends Block implements ITE<HeaterTileEntity> {
public static IProperty<Boolean> HAS_BLAZE = BooleanProperty.create("has_blaze");
public HeaterBlock(Properties properties) {
super(properties);
setDefaultState(super.getDefaultState().with(HAS_BLAZE, false));
}
@Override
protected void fillStateContainer(Builder<Block, BlockState> builder) {
super.fillStateContainer(builder);
builder.add(HAS_BLAZE);
}
@Override
public boolean hasTileEntity(BlockState state) {
return true;
return state.get(HAS_BLAZE);
}
@Nullable
@ -44,6 +59,8 @@ public class HeaterBlock extends Block implements ITE<HeaterTileEntity> {
@Override
public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand,
BlockRayTraceResult blockRayTraceResult) {
if (!hasTileEntity(state))
return ActionResultType.PASS;
TileEntity te = world.getTileEntity(pos);
if (te instanceof HeaterTileEntity && ((HeaterTileEntity) te).tryUpdateFuel(player.getHeldItem(hand))) {
if (!player.isCreative())
@ -53,4 +70,13 @@ public class HeaterBlock extends Block implements ITE<HeaterTileEntity> {
}
return ActionResultType.PASS;
}
@Override
public BlockState getStateForPlacement(BlockItemUseContext context) {
ItemStack item = context.getItem();
return super.getStateForPlacement(context).with(HAS_BLAZE, item.hasTag() && item.getTag()
.contains("has_blaze")
&& item.getTag()
.getBoolean("has_blaze"));
}
}

View file

@ -0,0 +1,73 @@
package com.simibubi.create.content.contraptions.processing;
import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
import mcp.MethodsReturnNonnullByDefault;
import net.minecraft.block.Block;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.monster.BlazeEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.BlockItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemUseContext;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.tileentity.MobSpawnerTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Hand;
import net.minecraft.world.World;
import net.minecraftforge.common.util.FakePlayer;
@MethodsReturnNonnullByDefault
@ParametersAreNonnullByDefault
public class HeaterBlockItem extends BlockItem {
public HeaterBlockItem(Block block, Properties properties) {
super(block, properties);
}
@Override
public ActionResultType onItemUse(ItemUseContext context) {
TileEntity te = context.getWorld()
.getTileEntity(context.getPos());
if (te instanceof MobSpawnerTileEntity && ((MobSpawnerTileEntity) te).getSpawnerBaseLogic()
.getCachedEntity() instanceof BlazeEntity) {
ItemStack itemWithBlaze = withBlaze(context.getItem());
context.getItem()
.shrink(1);
dropOrPlaceBack(context.getWorld(), context.getPlayer(), itemWithBlaze);
return ActionResultType.SUCCESS;
}
return super.onItemUse(context);
}
@Override
public boolean itemInteractionForEntity(ItemStack heldItem, PlayerEntity player, LivingEntity entity, Hand hand) {
if (entity instanceof BlazeEntity) {
ItemStack itemWithBlaze = withBlaze(heldItem);
heldItem.shrink(1);
dropOrPlaceBack(player.getEntityWorld(), player, itemWithBlaze);
entity.remove();
return true;
}
return super.itemInteractionForEntity(heldItem, player, entity, hand);
}
private static ItemStack withBlaze(ItemStack base) {
ItemStack newItem = new ItemStack(base.getItem(), 1);
CompoundNBT tag = new CompoundNBT();
tag.putBoolean("has_blaze", true);
newItem.setTag(tag);
return newItem;
}
private static void dropOrPlaceBack(@Nullable World world, @Nullable PlayerEntity player, ItemStack item) {
if (player == null)
return;
if (player instanceof FakePlayer || world == null) {
player.dropItem(item, false, false);
} else {
player.inventory.placeItemBackInInventory(world, item);
}
}
}

View file

@ -12,42 +12,41 @@ import net.minecraft.client.renderer.Vector3f;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.util.Direction;
import java.util.HashMap;
public class HeaterRenderer extends SafeTileEntityRenderer<HeaterTileEntity> {
private static final Minecraft INSTANCE = Minecraft.getInstance();
private static final HashMap<Integer, AllBlockPartials> blazeModelMap = new HashMap<>();
public HeaterRenderer(TileEntityRendererDispatcher dispatcher) {
super(dispatcher);
blazeModelMap.put(2, AllBlockPartials.BLAZE_HEATER_BLAZE_TWO);
blazeModelMap.put(3, AllBlockPartials.BLAZE_HEATER_BLAZE_THREE);
blazeModelMap.put(4, AllBlockPartials.BLAZE_HEATER_BLAZE_FOUR);
}
@Override
protected void renderSafe(HeaterTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer,
int light, int overlay) {
AllBlockPartials blazeModel;
switch (te.getHeatLevel()) {
case 2:
blazeModel = AllBlockPartials.BLAZE_HEATER_BLAZE_TWO;
break;
case 3:
blazeModel = AllBlockPartials.BLAZE_HEATER_BLAZE_THREE;
break;
case 4:
blazeModel = AllBlockPartials.BLAZE_HEATER_BLAZE_FOUR;
break;
default:
blazeModel = AllBlockPartials.BLAZE_HEATER_BLAZE_ONE;
}
Vector3f difference = new Vector3f(INSTANCE.player.getPositionVector()
.subtract(te.getPos()
.getX() + 0.5, 0,
te.getPos()
.getZ() + 0.5)
.mul(1, 0, 1));
difference.normalize();
AllBlockPartials blazeModel =
blazeModelMap.getOrDefault(te.getHeatLevel(), AllBlockPartials.BLAZE_HEATER_BLAZE_ONE);
float angle;
if (INSTANCE.player == null) {
angle = 0;
} else {
Vector3f difference = new Vector3f(INSTANCE.player.getPositionVector()
.subtract(te.getPos()
.getX() + 0.5, 0,
te.getPos()
.getZ() + 0.5)
.mul(1, 0, 1));
difference.normalize();
angle = (float) ((difference.getX() < 0 ? 1 : -1) * Math.acos(Direction.NORTH.getUnitVector()
.dot(difference)));
}
SuperByteBuffer blazeBuffer = blazeModel.renderOn(te.getBlockState());
blazeBuffer.rotateCentered(Direction.UP,
(float) ((difference.getX() < 0 ? 1 : -1) * Math.acos(Direction.NORTH.getUnitVector()
.dot(difference))));
blazeBuffer.rotateCentered(Direction.UP, angle);
blazeBuffer.renderInto(ms, buffer.getBuffer(RenderType.getSolid()));
}
}

View file

@ -2,10 +2,10 @@ package com.simibubi.create.content.contraptions.processing;
import java.util.List;
import com.simibubi.create.AllItems;
import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.tileentity.TileEntityType;
@ -58,20 +58,21 @@ public class HeaterTileEntity extends SmartTileEntity {
fuelLevel = compound.getInt("fuelLevel");
burnTimeRemaining = compound.getInt("burnTimeRemaining");
super.read(compound);
if (fuelLevel == 0) {
if (fuelLevel == 0)
burnTimeRemaining = 0;
markDirty();
}
updateHeatLevel();
}
boolean tryUpdateFuel(ItemStack itemStack) {
int burnTime = itemStack.getItem()
.getBurnTime(itemStack);
int newFuelLevel = 1; // todo: int newFuelLevel = itemStack.getItem() == AllItems.SUPER_SPECIAL_FUEL.get() ? 2 : 1;
if (burnTime == -1)
burnTime = ForgeHooks.getBurnTime(itemStack);
if (burnTime < burnTimeRemaining && newFuelLevel <= fuelLevel)
int newFuelLevel = (burnTime > burnTimeRemaining ? 1 : 0); // todo: + (itemStack.getItem() == AllItems.SUPER_SPECIAL_FUEL.get() ? 1 : 0);
if (newFuelLevel <= fuelLevel) {
return false;
}
burnTimeRemaining = burnTime;
fuelLevel = newFuelLevel;
updateHeatLevel();
@ -83,9 +84,14 @@ public class HeaterTileEntity extends SmartTileEntity {
}
private void updateHeatLevel() {
bufferedHeatLevel = 1 + fuelLevel;
// todo: check for fan
markDirty();
sendData();
int newHeatLevel = 1 + fuelLevel;
if (newHeatLevel != bufferedHeatLevel) {
bufferedHeatLevel = newHeatLevel;
// Block block = getBlockState().getBlock();
// if (block instanceof HeaterBlock)
// ((HeaterBlock) block).setLightLevel();
markDirty();
sendData();
}
}
}

View file

@ -212,6 +212,15 @@
"block.create.basin.tooltip": "BASIN",
"block.create.basin.tooltip.summary": "A handy _item_ _container_ used in processing with the _Mechanical_ _Mixer_ and the _Mechanical_ _Press_. Supports _Redstone_ _Comparators_.",
"block.create.blaze_heater.tooltip": "BLAZE HEATER",
"block.create.blaze_heater.tooltip.summary": "A block to heat a basin when housing a tamed blaze.",
"block.create.blaze_heater.tooltip.condition1": "When using on a blaze or blaze spawner",
"block.create.blaze_heater.tooltip.behaviour1": "_Captures_ a blaze in the item",
"block.create.blaze_heater.tooltip.condition2": "When placed below a basin",
"block.create.blaze_heater.tooltip.behaviour2": "Provides _heat_ to basin recipes.",
"block.create.blaze_heater.tooltip.condition3": "When fuel is used on the blaze heater",
"block.create.blaze_heater.tooltip.behaviour3": "Increases the remaining burn time by the furnace brn time of the used item. Consumes the item. Use _special_ _fuel_ for best results.",
"block.create.reinforced_rail.tooltip": "REINFORCED RAIL",
"block.create.reinforced_rail.tooltip.summary": "A timber stabilized rail, _does_ _not_ _need_ _supports_.",

View file

@ -1,5 +1,6 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "create:block/blaze_heater_brazier",
"particle": "create:block/blaze_heater_brazier"