Bug Fixes

- Fixed hose pulley not placing source blocks when filling with chocolate or honey
- Added a fluid tag to prevent bottomless draining behaviour of hose pulleys
- Grindstones can now be moved on contraptions
- Fixed fluids zFighting the item drain
- Added some crash safety for coupling rendering
- Updated mixer tooltip
This commit is contained in:
simibubi 2020-12-19 13:06:09 +01:00
parent 0182316d36
commit e2437d1a5c
20 changed files with 86 additions and 68 deletions

View file

@ -397,17 +397,17 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j
6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
31207c4c02766ef3d971c8a62425539aa47ab196 assets/create/lang/en_ud.json
c25023a8712cef9532a464a28d57803a4c14c471 assets/create/lang/en_us.json
0886daed78e5e3ca95da68504530c0d792c488f1 assets/create/lang/unfinished/de_de.json
accce7e58f6c4eb92d78854e2e06eafc02151383 assets/create/lang/unfinished/fr_fr.json
a6e798ccf2024944e5af9b7a4bec7db25ca1bb92 assets/create/lang/unfinished/it_it.json
28d9715653dceba2c1979b01f8678b51c5a01fae assets/create/lang/unfinished/ja_jp.json
14d22de8eda3bcf6b9f34b01727b215e4f3a75ea assets/create/lang/unfinished/ko_kr.json
30e51cad97b9cc340e7e6dfb6b710e62078c6282 assets/create/lang/unfinished/nl_nl.json
3b878fc11e4fb5e7ed896924ff5d4c9056004dfd assets/create/lang/unfinished/pt_br.json
a7437b35df6b41659b32f430fab55dddc97c5b96 assets/create/lang/unfinished/ru_ru.json
39819bd2f7d19ebf911fb1efefcf6043c8538cb6 assets/create/lang/unfinished/zh_cn.json
ff5ca8ad030f1dd58a05c2fef2c3788292db5bd1 assets/create/lang/en_ud.json
f4afb75e34386ca90b9187b00431a81f9557a309 assets/create/lang/en_us.json
62f1ce5fb7f78624b92d81718034bd86c297c2e1 assets/create/lang/unfinished/de_de.json
de5e7b1e29f7b584127cb8398aa4554eab29062c assets/create/lang/unfinished/fr_fr.json
b67b9c4eb8ce7e56efcfab943ec7f1b8058562aa assets/create/lang/unfinished/it_it.json
03a13265f3a46fdb751522463c31bf4d223e64bd assets/create/lang/unfinished/ja_jp.json
a521809218f3b912a43e9b3117109ec90fa99b11 assets/create/lang/unfinished/ko_kr.json
0af91529291914b74a9f48775a04237d0120fdb2 assets/create/lang/unfinished/nl_nl.json
b6cf2964f92f32095f068429c21573c4e8f1a16a assets/create/lang/unfinished/pt_br.json
489b9666905cff09824711d36b66dbc0f63d249f assets/create/lang/unfinished/ru_ru.json
7e761b5ec7ae8ae920e176942880c64c2c2f6d24 assets/create/lang/unfinished/zh_cn.json
846200eb548d3bfa2e77b41039de159b4b6cfb45 assets/create/models/block/acacia_window.json
1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets/create/models/block/acacia_window_pane_noside.json
1763ea2c9b981d187f5031ba608f3d5d3be3986a assets/create/models/block/acacia_window_pane_noside_alt.json

View file

@ -409,7 +409,7 @@
"fluid.create.tea": "\u0250\u01DD\u27D8 s,\u0279\u01DDp\u05DF\u0131n\u15FA",
"item.create.andesite_alloy": "\u028Eo\u05DF\u05DF\u2C6F \u01DD\u0287\u0131s\u01DDpu\u2C6F",
"item.create.attribute_filter": "\u0279\u01DD\u0287\u05DF\u0131\u2132 \u01DD\u0287nq\u0131\u0279\u0287\u0287\u2C6F",
"item.create.bar_of_chocolate": "\u01DD\u0287\u0250\u05DFo\u0254o\u0265\u0186 \u025FO \u0279\u0250\u15FA",
"item.create.bar_of_chocolate": "\u01DD\u0287\u0250\u05DFo\u0254o\u0265\u0186 \u025Fo \u0279\u0250\u15FA",
"item.create.belt_connector": "\u0287\u05DF\u01DD\u15FA \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW",
"item.create.blaze_cake": "\u01DD\u029E\u0250\u0186 \u01DDz\u0250\u05DF\u15FA",
"item.create.blaze_cake_base": "\u01DDs\u0250\u15FA \u01DD\u029E\u0250\u0186 \u01DDz\u0250\u05DF\u15FA",

View file

@ -415,7 +415,7 @@
"item.create.andesite_alloy": "Andesite Alloy",
"item.create.attribute_filter": "Attribute Filter",
"item.create.bar_of_chocolate": "Bar Of Chocolate",
"item.create.bar_of_chocolate": "Bar of Chocolate",
"item.create.belt_connector": "Mechanical Belt",
"item.create.blaze_cake": "Blaze Cake",
"item.create.blaze_cake_base": "Blaze Cake Base",
@ -1505,9 +1505,7 @@
"block.create.mechanical_mixer.tooltip": "MECHANICAL MIXER",
"block.create.mechanical_mixer.tooltip.summary": "A kinetic whisk for applying any shapeless crafting recipes to items beneath it. Requires constant _Rotational_ _Force_ and a _Basin_ placed below (with a gap in between).",
"block.create.mechanical_mixer.tooltip.condition1": "When above Basin",
"block.create.mechanical_mixer.tooltip.behaviour1": "Starts to mix items in the basin whenever all necessary ingredients are present.",
"block.create.mechanical_mixer.tooltip.control1": "When powered by redstone",
"block.create.mechanical_mixer.tooltip.action1": "Stalls the Mixer, perfect for crafting that recipe for the very first time!",
"block.create.mechanical_mixer.tooltip.behaviour1": "Starts to mix items in the basin whenever all necessary ingredients are present. To prevent unwanted recipes, use the filter slot on the basin or cut the rotational force until all desired ingredients have been added.",
"block.create.mechanical_crafter.tooltip": "MECHANICAL CRAFTER",
"block.create.mechanical_crafter.tooltip.summary": "A kinetic assembler for _automating_ any _shaped_ _crafting_ recipe. Place _multiple_ _in_ _a_ _grid_ corresponding to your recipe, and _arrange_ _their_ _belts_ to create a _flow_ that exits the grid on one of the crafters.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1211",
"_": "Missing Localizations: 1209",
"_": "->------------------------] Game Elements [------------------------<-",
@ -416,7 +416,7 @@
"item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy",
"item.create.attribute_filter": "UNLOCALIZED: Attribute Filter",
"item.create.bar_of_chocolate": "UNLOCALIZED: Bar Of Chocolate",
"item.create.bar_of_chocolate": "UNLOCALIZED: Bar of Chocolate",
"item.create.belt_connector": "Mechanischer Riemen",
"item.create.blaze_cake": "UNLOCALIZED: Blaze Cake",
"item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base",
@ -1506,9 +1506,7 @@
"block.create.mechanical_mixer.tooltip": "UNLOCALIZED: MECHANICAL MIXER",
"block.create.mechanical_mixer.tooltip.summary": "UNLOCALIZED: A kinetic whisk for applying any shapeless crafting recipes to items beneath it. Requires constant _Rotational_ _Force_ and a _Basin_ placed below (with a gap in between).",
"block.create.mechanical_mixer.tooltip.condition1": "UNLOCALIZED: When above Basin",
"block.create.mechanical_mixer.tooltip.behaviour1": "UNLOCALIZED: Starts to mix items in the basin whenever all necessary ingredients are present.",
"block.create.mechanical_mixer.tooltip.control1": "UNLOCALIZED: When powered by redstone",
"block.create.mechanical_mixer.tooltip.action1": "UNLOCALIZED: Stalls the Mixer, perfect for crafting that recipe for the very first time!",
"block.create.mechanical_mixer.tooltip.behaviour1": "UNLOCALIZED: Starts to mix items in the basin whenever all necessary ingredients are present. To prevent unwanted recipes, use the filter slot on the basin or cut the rotational force until all desired ingredients have been added.",
"block.create.mechanical_crafter.tooltip": "UNLOCALIZED: MECHANICAL CRAFTER",
"block.create.mechanical_crafter.tooltip.summary": "UNLOCALIZED: A kinetic assembler for _automating_ any _shaped_ _crafting_ recipe. Place _multiple_ _in_ _a_ _grid_ corresponding to your recipe, and _arrange_ _their_ _belts_ to create a _flow_ that exits the grid on one of the crafters.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 862",
"_": "Missing Localizations: 860",
"_": "->------------------------] Game Elements [------------------------<-",
@ -416,7 +416,7 @@
"item.create.andesite_alloy": "Alliage d'andésite",
"item.create.attribute_filter": "Filtre d'attribut",
"item.create.bar_of_chocolate": "UNLOCALIZED: Bar Of Chocolate",
"item.create.bar_of_chocolate": "UNLOCALIZED: Bar of Chocolate",
"item.create.belt_connector": "Tapis roulant",
"item.create.blaze_cake": "UNLOCALIZED: Blaze Cake",
"item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base",
@ -1507,8 +1507,6 @@
"block.create.mechanical_mixer.tooltip.summary": "Un fouet cinétique pour appliquer toutes les recettes d'artisanat informes aux objets en dessous. Nécessite une _force_ _de_ _rotation_ constant et un _bassin_ placé en dessous (avec un espace entre les deux).",
"block.create.mechanical_mixer.tooltip.condition1": "Lorsqu'au-dessus d'un bassin",
"block.create.mechanical_mixer.tooltip.behaviour1": "Commence à mélanger les objets dans le bassin lorsque tous les ingrédients nécessaires sont présents.",
"block.create.mechanical_mixer.tooltip.control1": "UNLOCALIZED: When powered by redstone",
"block.create.mechanical_mixer.tooltip.action1": "UNLOCALIZED: Stalls the Mixer, perfect for crafting that recipe for the very first time!",
"block.create.mechanical_crafter.tooltip": "ÉTABLI MÉCANIQUE",
"block.create.mechanical_crafter.tooltip.summary": "Un assembleur cinétique pour _automatiser_ n'importe quelle recette _en_ _forme_. Placez-en _plusieurs_ _dans_ _une_ _grille_ correspondant à votre recette, et _arrangez_ _leurs_ _tapis_ _roulant_ pour créer un _flux_ qui sort de la grille sur l'un des établis.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 846",
"_": "Missing Localizations: 844",
"_": "->------------------------] Game Elements [------------------------<-",
@ -416,7 +416,7 @@
"item.create.andesite_alloy": "Lega di Andesite",
"item.create.attribute_filter": "Filtro Attributi",
"item.create.bar_of_chocolate": "UNLOCALIZED: Bar Of Chocolate",
"item.create.bar_of_chocolate": "UNLOCALIZED: Bar of Chocolate",
"item.create.belt_connector": "Nastro Meccanico",
"item.create.blaze_cake": "UNLOCALIZED: Blaze Cake",
"item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base",
@ -1507,8 +1507,6 @@
"block.create.mechanical_mixer.tooltip.summary": "Una frusta cinetica per applicare qualsiasi ricetta di creazione informe agli oggetti sottostanti. Richiede una _Forza_ _di_ _Rotazione_ costante e una _Bacinella_ posizionata sotto (con uno spazio in mezzo).",
"block.create.mechanical_mixer.tooltip.condition1": "Quando sopra a una Bacinella",
"block.create.mechanical_mixer.tooltip.behaviour1": "Inizia a mescolare gli oggetti nella bacinella ogni volta che sono presenti tutti gli ingredienti necessari.",
"block.create.mechanical_mixer.tooltip.control1": "UNLOCALIZED: When powered by redstone",
"block.create.mechanical_mixer.tooltip.action1": "UNLOCALIZED: Stalls the Mixer, perfect for crafting that recipe for the very first time!",
"block.create.mechanical_crafter.tooltip": "COSTRUTTORE MECCANICO",
"block.create.mechanical_crafter.tooltip.summary": "Un assemblatore cinetico per _automatizzare_ qualsiasi ricetta di _creazione_ _modellata_. Posiziona i _multipli_ _in_ _una_ _griglia_ corrispondente alla tua ricetta, e _disponi_ _i_ _loro_ _nastri_ per creare un _flusso_ che esce dalla griglia su uno degli costruttori.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 845",
"_": "Missing Localizations: 843",
"_": "->------------------------] Game Elements [------------------------<-",
@ -416,7 +416,7 @@
"item.create.andesite_alloy": "安山岩合金",
"item.create.attribute_filter": "属性フィルター",
"item.create.bar_of_chocolate": "UNLOCALIZED: Bar Of Chocolate",
"item.create.bar_of_chocolate": "UNLOCALIZED: Bar of Chocolate",
"item.create.belt_connector": "メカニカルベルト",
"item.create.blaze_cake": "UNLOCALIZED: Blaze Cake",
"item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base",
@ -1507,8 +1507,6 @@
"block.create.mechanical_mixer.tooltip.summary": "その下のアイテムに形状のない製作レシピを適用するための動力ミキサー。 一定の_回転力_と下に配置された_鉢_が必要です間にギャップがあります。",
"block.create.mechanical_mixer.tooltip.condition1": "鉢の上にあるとき",
"block.create.mechanical_mixer.tooltip.behaviour1": "必要なすべての成分が存在するときはいつでも、鉢のアイテムの混合を開始します。",
"block.create.mechanical_mixer.tooltip.control1": "UNLOCALIZED: When powered by redstone",
"block.create.mechanical_mixer.tooltip.action1": "UNLOCALIZED: Stalls the Mixer, perfect for crafting that recipe for the very first time!",
"block.create.mechanical_crafter.tooltip": "メカニカルクラフト",
"block.create.mechanical_crafter.tooltip.summary": "_あらゆる形状の製作レシピ_を自動化するための動的アセンブラー。 _レシピに対応するグリッドに複数を配置_し、_フェアベルトを配置して_、いずれかのクラフターのグリッドから出る_流れ_を作成します。",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 846",
"_": "Missing Localizations: 844",
"_": "->------------------------] Game Elements [------------------------<-",
@ -416,7 +416,7 @@
"item.create.andesite_alloy": "안산암 합금",
"item.create.attribute_filter": "속성 필터 틀",
"item.create.bar_of_chocolate": "UNLOCALIZED: Bar Of Chocolate",
"item.create.bar_of_chocolate": "UNLOCALIZED: Bar of Chocolate",
"item.create.belt_connector": "기계식 벨트",
"item.create.blaze_cake": "UNLOCALIZED: Blaze Cake",
"item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base",
@ -1507,8 +1507,6 @@
"block.create.mechanical_mixer.tooltip.summary": "아래있는 아이템을 조합할 혼합기입니다. _지속적인_ _회전력_과 한 칸 아래에 _대야_가 필요합니다.",
"block.create.mechanical_mixer.tooltip.condition1": "대야 위에 있을 때",
"block.create.mechanical_mixer.tooltip.behaviour1": "모든 필요한 아이템이 준비될 때마다 대야 안의 아이템을 섞기 시작합니다.",
"block.create.mechanical_mixer.tooltip.control1": "UNLOCALIZED: When powered by redstone",
"block.create.mechanical_mixer.tooltip.action1": "UNLOCALIZED: Stalls the Mixer, perfect for crafting that recipe for the very first time!",
"block.create.mechanical_crafter.tooltip": "MECHANICAL CRAFTER",
"block.create.mechanical_crafter.tooltip.summary": "모든 조합법을 _자동화_할 장치입니다. 조합법대로 여러개를 _격자_로 설치하고, 화살표를 돌려 _한_ _곳으로_ _모이게_ 설정해야합니다.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1152",
"_": "Missing Localizations: 1150",
"_": "->------------------------] Game Elements [------------------------<-",
@ -416,7 +416,7 @@
"item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy",
"item.create.attribute_filter": "UNLOCALIZED: Attribute Filter",
"item.create.bar_of_chocolate": "UNLOCALIZED: Bar Of Chocolate",
"item.create.bar_of_chocolate": "UNLOCALIZED: Bar of Chocolate",
"item.create.belt_connector": "Mechanische Transportband",
"item.create.blaze_cake": "UNLOCALIZED: Blaze Cake",
"item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base",
@ -1507,8 +1507,6 @@
"block.create.mechanical_mixer.tooltip.summary": "Een kinetische garde voor het toepassen van vormloze recepten op objecten eronder. Vereist constante _Rotatiekracht_ en een _Bekken_ hieronder geplaatst (met een tussenruimte).",
"block.create.mechanical_mixer.tooltip.condition1": "Wanneer boven een Bekken",
"block.create.mechanical_mixer.tooltip.behaviour1": "Begint objecten in het bekken te mengen wanneer alle benodigde ingrediënten aanwezig zijn.",
"block.create.mechanical_mixer.tooltip.control1": "UNLOCALIZED: When powered by redstone",
"block.create.mechanical_mixer.tooltip.action1": "UNLOCALIZED: Stalls the Mixer, perfect for crafting that recipe for the very first time!",
"block.create.mechanical_crafter.tooltip": "UNLOCALIZED: MECHANICAL CRAFTER",
"block.create.mechanical_crafter.tooltip.summary": "UNLOCALIZED: A kinetic assembler for _automating_ any _shaped_ _crafting_ recipe. Place _multiple_ _in_ _a_ _grid_ corresponding to your recipe, and _arrange_ _their_ _belts_ to create a _flow_ that exits the grid on one of the crafters.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1218",
"_": "Missing Localizations: 1216",
"_": "->------------------------] Game Elements [------------------------<-",
@ -416,7 +416,7 @@
"item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy",
"item.create.attribute_filter": "UNLOCALIZED: Attribute Filter",
"item.create.bar_of_chocolate": "UNLOCALIZED: Bar Of Chocolate",
"item.create.bar_of_chocolate": "UNLOCALIZED: Bar of Chocolate",
"item.create.belt_connector": "Esteira Mecânica",
"item.create.blaze_cake": "UNLOCALIZED: Blaze Cake",
"item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base",
@ -1506,9 +1506,7 @@
"block.create.mechanical_mixer.tooltip": "UNLOCALIZED: MECHANICAL MIXER",
"block.create.mechanical_mixer.tooltip.summary": "UNLOCALIZED: A kinetic whisk for applying any shapeless crafting recipes to items beneath it. Requires constant _Rotational_ _Force_ and a _Basin_ placed below (with a gap in between).",
"block.create.mechanical_mixer.tooltip.condition1": "UNLOCALIZED: When above Basin",
"block.create.mechanical_mixer.tooltip.behaviour1": "UNLOCALIZED: Starts to mix items in the basin whenever all necessary ingredients are present.",
"block.create.mechanical_mixer.tooltip.control1": "UNLOCALIZED: When powered by redstone",
"block.create.mechanical_mixer.tooltip.action1": "UNLOCALIZED: Stalls the Mixer, perfect for crafting that recipe for the very first time!",
"block.create.mechanical_mixer.tooltip.behaviour1": "UNLOCALIZED: Starts to mix items in the basin whenever all necessary ingredients are present. To prevent unwanted recipes, use the filter slot on the basin or cut the rotational force until all desired ingredients have been added.",
"block.create.mechanical_crafter.tooltip": "UNLOCALIZED: MECHANICAL CRAFTER",
"block.create.mechanical_crafter.tooltip.summary": "UNLOCALIZED: A kinetic assembler for _automating_ any _shaped_ _crafting_ recipe. Place _multiple_ _in_ _a_ _grid_ corresponding to your recipe, and _arrange_ _their_ _belts_ to create a _flow_ that exits the grid on one of the crafters.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 521",
"_": "Missing Localizations: 519",
"_": "->------------------------] Game Elements [------------------------<-",
@ -416,7 +416,7 @@
"item.create.andesite_alloy": "Андезитовый сплав",
"item.create.attribute_filter": "Фильтр атрибутов",
"item.create.bar_of_chocolate": "UNLOCALIZED: Bar Of Chocolate",
"item.create.bar_of_chocolate": "UNLOCALIZED: Bar of Chocolate",
"item.create.belt_connector": "Механический ремень",
"item.create.blaze_cake": "UNLOCALIZED: Blaze Cake",
"item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base",
@ -1507,8 +1507,6 @@
"block.create.mechanical_mixer.tooltip.summary": "Кинетический венчик, используемый для смешивания предметов, находящихся под ним. Требуется _постоянная_ _вращательная_ _сила_ и _чаша_, расположенная внизу (с промежутком между ними).",
"block.create.mechanical_mixer.tooltip.condition1": "Когда над чашей",
"block.create.mechanical_mixer.tooltip.behaviour1": "Начинает смешивать предметы в бассейне, когда присутствуют все необходимые ингредиенты.",
"block.create.mechanical_mixer.tooltip.control1": "UNLOCALIZED: When powered by redstone",
"block.create.mechanical_mixer.tooltip.action1": "UNLOCALIZED: Stalls the Mixer, perfect for crafting that recipe for the very first time!",
"block.create.mechanical_crafter.tooltip": "MECHANICAL CRAFTER",
"block.create.mechanical_crafter.tooltip.summary": "_Кинетический_ _сборщик_ для автоматизации любого рецепта крафта. _Поместите_ _ингредиенты_ в сетку, _соответственно_ _нужному_ _рецепту_, и расположите их так, чтобы _создать_ _поток_, который _кончается_ на одном из крафтеров.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 529",
"_": "Missing Localizations: 527",
"_": "->------------------------] Game Elements [------------------------<-",
@ -416,7 +416,7 @@
"item.create.andesite_alloy": "安山合金",
"item.create.attribute_filter": "属性过滤器",
"item.create.bar_of_chocolate": "UNLOCALIZED: Bar Of Chocolate",
"item.create.bar_of_chocolate": "UNLOCALIZED: Bar of Chocolate",
"item.create.belt_connector": "传送带",
"item.create.blaze_cake": "UNLOCALIZED: Blaze Cake",
"item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base",
@ -1507,8 +1507,6 @@
"block.create.mechanical_mixer.tooltip.summary": "一种能够动态进行搅拌的机器,需要恒定且够快的速度并且下方需要放置_工作盆_(中间需要一格高)",
"block.create.mechanical_mixer.tooltip.condition1": "当位于工作盆上方",
"block.create.mechanical_mixer.tooltip.behaviour1": "只要_工作盆_中有必要的物品,就会将物品进行搅拌",
"block.create.mechanical_mixer.tooltip.control1": "UNLOCALIZED: When powered by redstone",
"block.create.mechanical_mixer.tooltip.action1": "UNLOCALIZED: Stalls the Mixer, perfect for crafting that recipe for the very first time!",
"block.create.mechanical_crafter.tooltip": "MECHANICAL CRAFTER",
"block.create.mechanical_crafter.tooltip.summary": "一种依靠_动能_的_自动_合成台。根据想要合成物品的_合成表_来摆放_相应数量_的机械制造机并且用扳手调整物品在制造机里的_传动方向_以让他们合在一起后被输出",

View file

@ -108,6 +108,30 @@ public class AllTags {
}
}
public static enum AllFluidTags {
NO_INFINITE_DRAINING
;
public Tag<Fluid> tag;
private AllFluidTags() {
this(MOD, "");
}
private AllFluidTags(NameSpace namespace) {
this(namespace, "");
}
private AllFluidTags(NameSpace namespace, String path) {
tag = new FluidTags.Wrapper(
new ResourceLocation(namespace.id, (path.isEmpty() ? "" : path + "/") + Lang.asId(name())));
}
public boolean matches(Fluid fluid) {
return fluid != null && fluid.isIn(tag);
}
}
public static enum AllBlockTags {
WINDMILL_SAILS, FAN_HEATERS, WINDOWABLE, NON_MOVABLE, BRITTLE, SEATS, SAILS, VALVE_HANDLES, FAN_TRANSPARENT, SAFE_NBT

View file

@ -32,6 +32,7 @@ import net.minecraft.block.CarpetBlock;
import net.minecraft.block.DoorBlock;
import net.minecraft.block.FenceGateBlock;
import net.minecraft.block.FlowerPotBlock;
import net.minecraft.block.GrindstoneBlock;
import net.minecraft.block.HorizontalBlock;
import net.minecraft.block.HorizontalFaceBlock;
import net.minecraft.block.LadderBlock;
@ -98,6 +99,8 @@ public class BlockMovementTraits {
if (AllBlocks.BELT.has(blockState))
return true;
if (blockState.getBlock() instanceof GrindstoneBlock)
return true;
return blockState.getPushReaction() != PushReaction.BLOCK;
}
@ -116,7 +119,7 @@ public class BlockMovementTraits {
return true;
if (block instanceof AbstractPressurePlateBlock)
return true;
if (block instanceof HorizontalFaceBlock)
if (block instanceof HorizontalFaceBlock && !(block instanceof GrindstoneBlock))
return true;
if (block instanceof CartAssemblerBlock)
return false;

View file

@ -46,6 +46,10 @@ public class CouplingRenderer {
public static void renderCoupling(MatrixStack ms, IRenderTypeBuffer buffer, Couple<AbstractMinecartEntity> carts) {
ClientWorld world = Minecraft.getInstance().world;
if (carts.getFirst() == null || carts.getSecond() == null)
return;
Couple<Integer> lightValues =
carts.map(c -> WorldRenderer.getLightmapCoordinates(world, new BlockPos(c.getBoundingBox()
.getCenter())));

View file

@ -253,14 +253,14 @@ public class FluidDrainingBehaviour extends FluidManipulationBehaviour {
}
private void continueSearch() {
search(fluid, frontier, visited, (e, d) -> {
fluid = search(fluid, frontier, visited, (e, d) -> {
queue.enqueue(new BlockPosEntry(e, d));
validationSet.add(e);
}, false);
World world = getWorld();
int maxBlocks = maxBlocks();
if (visited.size() > maxBlocks && maxBlocks != -1) {
if (visited.size() > maxBlocks && canDrainInfinitely(fluid)) {
infinite = true;
// Find first block with valid fluid
while (true) {
@ -291,7 +291,7 @@ public class FluidDrainingBehaviour extends FluidManipulationBehaviour {
search(fluid, validationFrontier, validationVisited, (e, d) -> newValidationSet.add(e), false);
int maxBlocks = maxBlocks();
if (validationVisited.size() > maxBlocks && maxBlocks != -1) {
if (validationVisited.size() > maxBlocks && canDrainInfinitely(fluid)) {
if (!infinite)
reset();
validationFrontier.clear();

View file

@ -7,6 +7,7 @@ import java.util.Objects;
import java.util.Set;
import com.simibubi.create.foundation.advancement.AllTriggers;
import com.simibubi.create.foundation.fluid.FluidHelper;
import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType;
import com.simibubi.create.foundation.utility.Iterate;
@ -177,7 +178,8 @@ public class FluidFillingBehaviour extends FluidManipulationBehaviour {
updatePostWaterlogging(blockState.with(BlockStateProperties.WATERLOGGED, true)), 2 | 16);
} else {
replaceBlock(world, currentPos, blockState);
world.setBlockState(currentPos, fluid.getDefaultState()
world.setBlockState(currentPos, FluidHelper.convertToStill(fluid)
.getDefaultState()
.getBlockState(), 2 | 16);
}

View file

@ -6,6 +6,7 @@ import java.util.List;
import java.util.Set;
import java.util.function.BiConsumer;
import com.simibubi.create.AllTags.AllFluidTags;
import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.fluid.FluidHelper;
import com.simibubi.create.foundation.networking.AllPackets;
@ -130,16 +131,16 @@ public abstract class FluidManipulationBehaviour extends TileEntityBehaviour {
.squareDistanceTo(centerOfRoot));
}
protected void search(Fluid fluid, List<BlockPosEntry> frontier, Set<BlockPos> visited,
protected Fluid search(Fluid fluid, List<BlockPosEntry> frontier, Set<BlockPos> visited,
BiConsumer<BlockPos, Integer> add, boolean searchDownward) {
World world = getWorld();
int maxBlocks = maxBlocks();
int maxRange = maxRange();
int maxRange = canDrainInfinitely(fluid) ? maxRange() : maxRange() / 2;
int maxRangeSq = maxRange * maxRange;
int i;
for (i = 0; i < searchedPerTick && !frontier.isEmpty()
&& (visited.size() <= maxBlocks || maxBlocks == -1); i++) {
&& (visited.size() <= maxBlocks || !canDrainInfinitely(fluid)); i++) {
BlockPosEntry entry = frontier.remove(0);
BlockPos currentPos = entry.pos;
if (visited.contains(currentPos))
@ -179,6 +180,8 @@ public abstract class FluidManipulationBehaviour extends TileEntityBehaviour {
frontier.add(new BlockPosEntry(offsetPos, entry.distance + 1));
}
}
return fluid;
}
protected void playEffect(World world, BlockPos pos, Fluid fluid, boolean fillSound) {
@ -198,6 +201,10 @@ public abstract class FluidManipulationBehaviour extends TileEntityBehaviour {
AllPackets.sendToNear(world, splooshPos, 10, new FluidSplashPacket(splooshPos, new FluidStack(fluid, 1)));
}
protected boolean canDrainInfinitely(Fluid fluid) {
return maxBlocks() != -1 && !AllFluidTags.NO_INFINITE_DRAINING.matches(fluid);
}
@Override
public void write(CompoundNBT nbt, boolean clientPacket) {
if (rootPos != null)

View file

@ -145,7 +145,7 @@ public class ItemDrainRenderer extends SmartTileEntityRenderer<ItemDrainTileEnti
float yMin = 5f / 16f;
float min = 2f / 16f;
float max = min + (12 / 16f);
float yOffset = (8 / 16f) * level;
float yOffset = (7 / 16f) * level;
ms.push();
ms.translate(0, yOffset, 0);
FluidRenderer.renderTiledFluidBB(fluidStack, min, yMin - yOffset, min, max, yMin, max, buffer, ms, light,

View file

@ -379,9 +379,7 @@
"block.create.mechanical_mixer.tooltip": "MECHANICAL MIXER",
"block.create.mechanical_mixer.tooltip.summary": "A kinetic whisk for applying any shapeless crafting recipes to items beneath it. Requires constant _Rotational_ _Force_ and a _Basin_ placed below (with a gap in between).",
"block.create.mechanical_mixer.tooltip.condition1": "When above Basin",
"block.create.mechanical_mixer.tooltip.behaviour1": "Starts to mix items in the basin whenever all necessary ingredients are present.",
"block.create.mechanical_mixer.tooltip.control1": "When powered by redstone",
"block.create.mechanical_mixer.tooltip.action1": "Stalls the Mixer, perfect for crafting that recipe for the very first time!",
"block.create.mechanical_mixer.tooltip.behaviour1": "Starts to mix items in the basin whenever all necessary ingredients are present. To prevent unwanted recipes, use the filter slot on the basin or cut the rotational force until all desired ingredients have been added.",
"block.create.mechanical_crafter.tooltip": "MECHANICAL CRAFTER",
"block.create.mechanical_crafter.tooltip.summary": "A kinetic assembler for _automating_ any _shaped_ _crafting_ recipe. Place _multiple_ _in_ _a_ _grid_ corresponding to your recipe, and _arrange_ _their_ _belts_ to create a _flow_ that exits the grid on one of the crafters.",