This commit is contained in:
m2r1k5 2022-02-03 19:37:43 +08:00
parent 0792b5bf1c
commit b92b5a2bfb
36 changed files with 1718 additions and 2266 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
# Configuration file # Configuration file
cache { cache {
S:digest=a81acec191074d19bdef4e39ef9289ca S:digest=a7a871e15321750d16fc5ea401c38803
# Caching can save processing time, if there are a lot of items. [default: true] # Caching can save processing time, if there are a lot of items. [default: true]
B:enableCache=true B:enableCache=true

View File

@ -3,7 +3,7 @@
cache { cache {
# Waits as many hours, until it checks again. [range: 0 ~ 168, default: 24] # Waits as many hours, until it checks again. [range: 0 ~ 168, default: 24]
I:interval=24 I:interval=24
S:lastCheck=1643795346482 S:lastCheck=1643885211648
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
#Inventory Tweaks Configuration #Inventory Tweaks Configuration
#(Regarding shortcuts, all key names can be found at: http://legacy.lwjgl.org/javadoc/org/lwjgl/input/Keyboard.html) #(Regarding shortcuts, all key names can be found at: http://legacy.lwjgl.org/javadoc/org/lwjgl/input/Keyboard.html)
#Wed Feb 02 17:50:12 SGT 2022 #Thu Feb 03 18:48:21 SGT 2022
enableMiddleClick=true enableMiddleClick=true
showChestButtons=true showChestButtons=true
enableSortingOnPickup=false enableSortingOnPickup=false

View File

@ -16,10 +16,6 @@ global {
lavapickaxe { lavapickaxe {
# Add blocks to the smelting blacklist of "Infused Lava Pickaxe"
# If You add want to add an item to the blacklist
# Add it in the following format: "<namespace>:<name>"
# Examples can be found inside the list itself
S:blacklist < S:blacklist <
minecraft:wet_sponge minecraft:wet_sponge
minecraft:sponge minecraft:sponge
@ -29,7 +25,6 @@ lavapickaxe {
maps { maps {
# Enable/Disable the ability of the maps to spawn bosses, suck as the "Skeletal King" from the "Map of Sacrifice"
B:allowSpawnOfBosses=true B:allowSpawnOfBosses=true
} }

View File

@ -3,12 +3,12 @@
dimensions { dimensions {
# The numeral id of the armorplus:arena dimension # The numeral id of the armorplus:arena dimension
I:arenaDimensionID=120 I:arenaDimensionID=120
# Too unstable, unfinished to be enabled by default.
B:enableArenaDimension=false B:enableArenaDimension=false
# Enable/Disable the realm of insanity # Enable/Disable the realm of insanity
B:enableRealmOfInsanity=false B:enableRealmOfInsanity=false
# Too unstable, unfinished to be enabled by default.
B:enableTheArenaDimension=false B:enableTheArenaDimension=false
# The numeral id of the armorplus:realm_of_insanity dimension # The numeral id of the armorplus:realm_of_insanity dimension

View File

@ -70,7 +70,6 @@ mob_drops {
} }
skeletal_king { skeletal_king {
# Enable/Disable the drops from the Skeletal King
B:skeletalKingDrop=true B:skeletalKingDrop=true
} }
@ -78,20 +77,10 @@ mob_drops {
skeletal_king { skeletal_king {
# Set the Skeletal King's Armor
D:armor=8.0 D:armor=8.0
# Set the Skeletal King's Health
# Max value 1024
D:bossHealth=1024.0 D:bossHealth=1024.0
# Enable/Disable the Skeletal King's resistance buff effect
B:enableResistance=true B:enableResistance=true
# Set the Skeletal King's Movement Speed
D:movementSpeed=0.6000000238418579 D:movementSpeed=0.6000000238418579
# Set the Skeletal King's resistance effect Level (0 = lvl 1)
I:resistanceAmplifier=0 I:resistanceAmplifier=0
} }

View File

@ -22,13 +22,8 @@ integrations {
B:ultimateChaosImmunity=true B:ultimateChaosImmunity=true
tconstruct { tconstruct {
# Enable/Disable ender dragon scale material.
B:enableEnderDragonMaterial=true B:enableEnderDragonMaterial=true
# Enable/Disable guardian scale material.
B:enableGuardianScaleMaterial=true B:enableGuardianScaleMaterial=true
# Enable/Disable wither bone material.
B:enableWitherBoneMaterial=true B:enableWitherBoneMaterial=true
} }

View File

@ -1715,8 +1715,6 @@ recipes {
# Enable/Disable The Cobalt armor Recipes # Enable/Disable The Cobalt armor Recipes
B:enableCobaltArmorRecipes=true B:enableCobaltArmorRecipes=true
# Enable/Disable The Electrical Ingot Recipes
B:enableElectricalIngotRecipes=true B:enableElectricalIngotRecipes=true
# Enable/Disable The Elytra Recipe # Enable/Disable The Elytra Recipe
@ -1760,8 +1758,6 @@ recipes {
# Enable/Disable The Slime armor Recipes # Enable/Disable The Slime armor Recipes
B:enableSlimeArmorRecipes=true B:enableSlimeArmorRecipes=true
# Enable/Disable The Steel Ingot Recipes
B:enableSteelIngotRecipes=true B:enableSteelIngotRecipes=true
# Enable/Disable The Super Star armor Recipes # Enable/Disable The Super Star armor Recipes

File diff suppressed because it is too large Load Diff

View File

@ -237,14 +237,22 @@ general {
########################################################################################################## ##########################################################################################################
"energy compat options" { "energy compat options" {
# Enable Native GTEU to Forge Energy (RF and alike) on GT Cables and Wires. # GTEU to Forge Energy ratio for converting EU to FE. Affects native conversion and Converters.
# Default: true # Default: 4 FE == 1 EU
B:nativeEUToFE=true
# GTEU to Forge Energy (RF and alike) ratio.
# Default: 4 FE to 1 EU
# Min: 4.9E-324 # Min: 4.9E-324
# Max: 1.7976931348623157E308 # Max: 1.7976931348623157E308
D:euToFeRatio=4.0
# Forge Energy to GTEU ratio for converting FE to EU. Only affects converters.
# Default: 4 FE == 1 EU
# Min: 4.9E-324
# Max: 1.7976931348623157E308
D:feToEuRatio=4.0
# Enable Native GTEU to Forge Energy (RF and alike) on GT Cables and Wires.
# This does not disable Converters.
# Default: true
B:nativeEUToFE=true
D:rfRatio=4.0 D:rfRatio=4.0
} }

View File

@ -42,7 +42,7 @@ search {
# Search mode for Colors (prefix: ^) # Search mode for Colors (prefix: ^)
# [Default: disabled] # [Default: disabled]
# [Valid: [enabled, require_prefix, disabled]] # [Valid: [enabled, require_prefix, disabled]]
S:colorSearchMode=require_prefix S:colorSearchMode=disabled
# Search mode for Creative Tab Names (prefix: %) # Search mode for Creative Tab Names (prefix: %)
# [Default: disabled] # [Default: disabled]

View File

@ -43,7 +43,7 @@ world1855637915 {
# Hide and unhide ingredients by clicking them in the list. # Hide and unhide ingredients by clicking them in the list.
B:editEnabled=false B:editEnabled=false
S:filterText=omni S:filterText=black bronz
# Show the list of ingredients next to open GUIs. # Show the list of ingredients next to open GUIs.
B:overlayEnabled=true B:overlayEnabled=true

View File

@ -1,5 +1,5 @@
#Splash screen properties #Splash screen properties
#Wed Feb 02 17:48:52 SGT 2022 #Thu Feb 03 18:46:36 SGT 2022
background=0x837793 background=0x837793
memoryGood=0x78CB34 memoryGood=0x78CB34
font=0x0 font=0x0

Binary file not shown.

View File

@ -1,3 +1,5 @@
item.material.oreprefix.gemPerfect=Perfect %s
material.conductive_iron=Conductive Iron material.conductive_iron=Conductive Iron
material.pulsating_iron=Pulsating Iron material.pulsating_iron=Pulsating Iron
material.energetic_alloy=Energetic Alloy material.energetic_alloy=Energetic Alloy

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "gregtech:items/material_sets/diamond/gem_perfect"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "gregtech:items/material_sets/emerald/gem_perfect"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "gregtech:items/material_sets/ruby/gem_perfect"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

View File

@ -0,0 +1,3 @@
items=minecraft:skull
model=gem_perfect
nbt.SkullOwner.Properties.textures.0.Value=ewogICJ0aW1lc3RhbXAiIDogMTYxODA4MzU3MzU0NywKICAicHJvZmlsZUlkIiA6ICJmZDQ3Y2I4YjgzNjQ0YmY3YWIyYmUxODZkYjI1ZmMwZCIsCiAgInByb2ZpbGVOYW1lIiA6ICJDVUNGTDEyIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzkyNmEyNDhmYmJjMDZjZjA2ZTJjOTIwZWNhMWNhYzhhMmM5NjE2NGQzMjYwNDk0YmVkMTQyZDU1MzAyNmNjNiIKICAgIH0KICB9Cn0

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

View File

@ -310,6 +310,9 @@ recipes.addShaped(<appliedenergistics2:quantum_ring>, [
[<appliedenergistics2:material:24>, <metaitem:quantumstar>, <appliedenergistics2:material:24>], [<appliedenergistics2:material:24>, <metaitem:quantumstar>, <appliedenergistics2:material:24>],
[<metaitem:plateStainlessSteel>, <appliedenergistics2:material:23>,<metaitem:plateStainlessSteel>]]); [<metaitem:plateStainlessSteel>, <appliedenergistics2:material:23>,<metaitem:plateStainlessSteel>]]);
// Network Tool
recipes.addShapeless(<appliedenergistics2:network_tool>, [<ore:itemIlluminatedPanel>, <actuallyadditions:item_laser_wrench>]);
recipes.removeByRecipeName("appliedenergistics2:network/cells/storage_cell_1k"); recipes.removeByRecipeName("appliedenergistics2:network/cells/storage_cell_1k");
recipes.removeByRecipeName("appliedenergistics2:network/cells/storage_cell_4k"); recipes.removeByRecipeName("appliedenergistics2:network/cells/storage_cell_4k");

View File

@ -328,8 +328,8 @@ blast_furnace.recipeBuilder().inputs([<metaitem:dustDraconium>]).fluidInputs([<l
blast_furnace.recipeBuilder().inputs([<armorplus:material:3> * 4]).fluidInputs([<liquid:nitro_fuel>*8000]).outputs([<metaitem:ingotHotDraconium> * 2]).property("temperature", 6800).duration(20000).EUt(120).buildAndRegister(); blast_furnace.recipeBuilder().inputs([<armorplus:material:3> * 4]).fluidInputs([<liquid:nitro_fuel>*8000]).outputs([<metaitem:ingotHotDraconium> * 2]).property("temperature", 6800).duration(20000).EUt(120).buildAndRegister();
blast_furnace.recipeBuilder().inputs([<metaitem:dustDraconium>]).fluidInputs([<liquid:gasoline>*2000]).outputs(<metaitem:ingotHotDraconium>).property("temperature", 6800).duration(10000).EUt(120).buildAndRegister(); blast_furnace.recipeBuilder().inputs([<metaitem:dustDraconium>]).fluidInputs([<liquid:gasoline>*2000]).outputs(<metaitem:ingotHotDraconium>).property("temperature", 6800).duration(10000).EUt(120).buildAndRegister();
blast_furnace.recipeBuilder().inputs([<armorplus:material:3> * 4]).fluidInputs([<liquid:gasoline>*8000]).outputs([<metaitem:ingotHotDraconium> * 2]).property("temperature", 6800).duration(20000).EUt(120).buildAndRegister(); blast_furnace.recipeBuilder().inputs([<armorplus:material:3> * 4]).fluidInputs([<liquid:gasoline>*8000]).outputs([<metaitem:ingotHotDraconium> * 2]).property("temperature", 6800).duration(20000).EUt(120).buildAndRegister();
blast_furnace.recipeBuilder().inputs([<metaitem:dustDraconium>]).fluidInputs([<liquid:gasoline_premium>*800]).outputs(<metaitem:ingotHotDraconium>).property("temperature", 6800).duration(10000).EUt(120).buildAndRegister(); blast_furnace.recipeBuilder().inputs([<metaitem:dustDraconium>]).fluidInputs([<liquid:gasoline_premium>*500]).outputs(<metaitem:ingotHotDraconium>).property("temperature", 6800).duration(10000).EUt(120).buildAndRegister();
blast_furnace.recipeBuilder().inputs([<armorplus:material:3> * 4]).fluidInputs([<liquid:gasoline_premium>*3200]).outputs([<metaitem:ingotHotDraconium> * 2]).property("temperature", 6800).duration(20000).EUt(120).buildAndRegister(); blast_furnace.recipeBuilder().inputs([<armorplus:material:3> * 4]).fluidInputs([<liquid:gasoline_premium>*2000]).outputs([<metaitem:ingotHotDraconium> * 2]).property("temperature", 6800).duration(20000).EUt(120).buildAndRegister();
//Naquadah Alloy [tier 15] DISABLED IN FAVOR OF VANILLA RECIPE //Naquadah Alloy [tier 15] DISABLED IN FAVOR OF VANILLA RECIPE
//blast_furnace.findRecipe(120, [<metaitem:dustNaquadahAlloy>], [null]).remove(); //blast_furnace.findRecipe(120, [<metaitem:dustNaquadahAlloy>], [null]).remove();

View File

@ -1,206 +0,0 @@
import crafttweaker.item.IItemStack;
import crafttweaker.item.IIngredient;
import crafttweaker.item.ITooltipFunction;
import crafttweaker.recipes.IRecipeFunction;
import crafttweaker.recipes.ICraftingInfo;
import crafttweaker.data.IData;
import crafttweaker.formatting.IFormattedText;
import mods.jei.JEI;
val framingMaterial as IIngredient = <*>.only(function(stack as IItemStack) as bool {
if(!stack.isItemBlock) {
return false;
}
return stack.asBlock().definition.getStateFromMeta(stack.metadata).opaqueCube;
});
val sideIngredient = (<xtones:zane> | framingMaterial).marked("MatS");
val trimIngredient = (<extendedcrafting:storage:4> | framingMaterial).marked("MatT");
val frontIngredient = (<xtones:zane:15> | framingMaterial).marked("MatF");
<ore:handFramedThree>.add(<storagedrawers:customdrawers:*>,
<framedcompactdrawers:framed_drawer_controller>,
<framedcompactdrawers:framed_compact_drawer>,
<framedcompactdrawers:framed_slave>,
<contenttweaker:hand_framing_tool>);
<ore:handFramed>.addAll(<ore:handFramedThree>);
<ore:handFramed>.add(<storagedrawers:customtrim>);
function addInfo(stack as IItemStack) as IItemStack {
return stack.withDisplayName("Frame your drawers by hand!")
.withLore([
"Top left: sides",
"Top right: trim",
"Middle left: front"
]);
}
function asData(stack as IItemStack) as IData {
return {
id: stack.definition.id,
Count: 1 as byte,
Damage: stack.metadata
} as IData;
}
static matKeys as string[] = [
"MatS",
"MatF",
"MatT",
] as string[];
function getRecipeOutput(out as IItemStack,
ins as IItemStack[string],
cInfo as ICraftingInfo) as IItemStack
{
val fromTag as IData[string] =
isNull(ins.drawer.tag) ?
{} as IData[string] :
ins.drawer.tag.asMap();
val tag = {} as IData[string];
for key, value in fromTag {
if !(matKeys has key) {
// it's not enough to just transfer the data as-is:
// taped drawers preserve the block's framing rather
// than taking on the new frame, so replace that too.
if (key == "tile") {
val tileTag = {} as IData[string];
for tileKey, tileVal in value.asMap() {
if !(matKeys has tileKey) {
tileTag[tileKey] = tileVal;
}
}
for matKey in matKeys {
if (ins has matKey) {
tileTag[matKey] = asData(ins[matKey]);
}
}
val tileData as any[any] = tileTag;
tag[key] = tileData as IData;
} else {
tag[key] = value;
}
}
}
for key in matKeys {
if (ins has key) {
tag[key] = asData(ins[key]);
}
}
val ret as any[any] = tag;
return ins.drawer.withTag(ret as IData) * 1;
}
val recipeFunction = function(out, ins, cinfo) { return getRecipeOutput(out, ins, cinfo); } as IRecipeFunction;
for front in [true, false] as bool[] {
for trim in [true, false] as bool[] {
val ingredients as IIngredient[][] = [
[
sideIngredient,
trim ? trimIngredient : null
],
[
front ? frontIngredient : null,
(front ? <ore:handFramedThree> : <ore:handFramed>).marked("drawer")
]
];
val ins as IItemStack[string] = {
MatS: sideIngredient.items[0],
drawer: <framedcompactdrawers:framed_compact_drawer>
};
if (front) {
ins["MatF"] = frontIngredient.items[0];
}
if (trim) {
ins["MatT"] = trimIngredient.items[0];
}
recipes.addShaped(
"hand_framing_" + (trim ? "trim_" : "") + (front ? "front_" : "") + "side",
addInfo(getRecipeOutput(null, ins, null)),
ingredients,
recipeFunction
);
}
}
function getNested(inTag as IData, keys as string[], alt as IData) as IData {
var tag = inTag;
for key in keys {
if isNull(tag) return alt;
tag = tag.memberGet(key);
}
return isNull(tag) ? alt : tag;
}
val sticksIngredient = <ore:stickWood>.transformConsume(64);
val sticksRecipeFunction = function(out, ins, cinfo) {
var sticks as int = getNested(ins.hft.tag, ["sticks"], 0) as int;
for k, v in ins {
if k != "hft" {
sticks += v.amount;
}
}
return ins.hft.updateTag({ "sticks": sticks });
} as IRecipeFunction;
val hftIngredient = <contenttweaker:hand_framing_tool>.marked("hft");
for stickStacks in 1 .. 9 {
var ingredients = [hftIngredient] as IIngredient[];
for i in 0 .. stickStacks {
ingredients += sticksIngredient.marked("stick" + i);
}
recipes.addShapeless(
"hand_framing_tool_sticks_" + stickStacks,
<contenttweaker:hand_framing_tool>.withTag({sticks: stickStacks}),
ingredients,
sticksRecipeFunction
);
}
<contenttweaker:hand_framing_tool>.addAdvancedTooltip(
function(stack as IItemStack) {
return "Sticks: " + (isNull(stack) ? "0" : getNested(stack.tag, ["sticks"], 0));
} as ITooltipFunction
);
function makeTagFunc(name as string) as ITooltipFunction {
val matTag = "Mat" + name[0];
return function(stack as IItemStack) as string {
val item as IItemStack =
isNull(stack) ?
null :
itemUtils.getItem(getNested(stack.tag, [matTag, "id"], "-"),
getNested(stack.tag, [matTag, "Damage"], 0));
return name + ": " + (isNull(item) ? "-" : item.displayName);
} as ITooltipFunction;
}
<contenttweaker:hand_framing_tool>.addAdvancedTooltip(makeTagFunc("Side"));
<contenttweaker:hand_framing_tool>.addAdvancedTooltip(makeTagFunc("Front"));
<contenttweaker:hand_framing_tool>.addAdvancedTooltip(makeTagFunc("Trim"));
recipes.addShaped(
"hand_framing_tool",
<contenttweaker:hand_framing_tool>,
[[null, null, <storagedrawers:framingtable>],
[null, <ore:stickWood>, null],
[<ore:stickWood>, null, null]]
);
JEI.addDescription(
<contenttweaker:hand_framing_tool>,
"item.contenttweaker.hand_framing_tool.desc1",
"item.contenttweaker.hand_framing_tool.desc2",
"item.contenttweaker.hand_framing_tool.desc3",
"item.contenttweaker.hand_framing_tool.desc4",
"item.contenttweaker.hand_framing_tool.desc5",
"item.contenttweaker.hand_framing_tool.desc6"
);

View File

@ -1,129 +0,0 @@
#loader contenttweaker
import mods.contenttweaker.VanillaFactory.createItem;
import mods.contenttweaker.IItemUse;
import mods.contenttweaker.MutableItemStack;
import mods.contenttweaker.World;
import mods.contenttweaker.Player;
import mods.contenttweaker.BlockPos;
import mods.contenttweaker.Hand;
import mods.contenttweaker.Facing;
import mods.contenttweaker.ActionResult;
import crafttweaker.util.Position3f;
import crafttweaker.block.IBlockDefinition;
import crafttweaker.block.IBlockState;
import crafttweaker.block.IBlock;
import crafttweaker.data.IData;
import crafttweaker.entity.IEntityEquipmentSlot;
function isFrameable(block as IBlockDefinition) as bool {
if (isNull(block) || isNull(block.id)) return false; // how
return block.id.startsWith("framedcompactdrawers")
|| block.id == "storagedrawers:customdrawers"
|| block.id == "storagedrawers:customtrim"
|| block.id == "storagedrawers:basicdrawers"
|| block.id == "storagedrawers:trim"
|| block.id == "storagedrawers:compdrawers"
|| block.id == "storagedrawers:controller"
|| block.id == "storagedrawers:controllerslave";
}
function isReframing(block as IBlockDefinition) as bool {
if (isNull(block) || isNull(block.id)) return false; // how
return block.id.startsWith("framedcompactdrawers")
|| block.id == "storagedrawers:customdrawers"
|| block.id == "storagedrawers:customtrim";
}
function orElse(tag as IData, other as IData) as IData {
return isNull(tag) ? other : tag;
}
function makeFramedState(state as IBlockState) as IBlockState {
val id as string = state.block.definition.id;
if id == "storagedrawers:trim" {
return <block:storagedrawers:customtrim>.block.definition.defaultState;
}
return (id == "storagedrawers:basicdrawers" ? <block:storagedrawers:customdrawers> :
id == "storagedrawers:compdrawers" ? <block:framedcompactdrawers:framed_compact_drawer> :
id == "storagedrawers:controllerslave" ? <block:framedcompactdrawers:framed_slave> :
<block:framedcompactdrawers:framed_drawer_controller>)
.block.definition.getStateFromMeta(id == "storagedrawers:controller" ?
state.meta - 2 :
state.meta);
}
function overrideData(data as IData) as IData {
if isNull(data) return data;
if !isNull(data as IData[string]) {
val dataMap = data as IData[string];
val built as IData[string] = {};
// because for some reason strings as maps convert to
// a singleton map mapping themselves to themselves.
val dataString = data as string;
if (dataMap has dataString && dataMap[dataString] as string == dataString) {
return 0 as IData;
}
for k, v in dataMap {
built[k] = overrideData(v);
}
val ret as any[any] = built;
return ret as IData;
}
if !isNull(data as [IData]) {
var built = [] as IData;
for v in data as [IData] {
built += [overrideData(v)];
}
return built;
}
return "" as IData;
}
val hft = createItem("hand_framing_tool");
hft.maxStackSize = 1;
hft.onItemUse = function(player as Player,
world as World,
pos as BlockPos,
hand as Hand,
facing as Facing,
blockHit as Position3f) {
val ctstate = world.getBlockState(pos);
val definition as IBlockDefinition = ctstate.block.definition;
if isFrameable(definition) {
var state as IBlockState = definition.getStateFromMeta(ctstate.meta);
var tag as IData = player.currentItem.tag;
if (isNull(tag) || isNull(tag.MatS)) return ActionResult.fail();
if !isReframing(definition) {
val stickCount = orElse(tag.sticks, 0) as int;
if (stickCount < 8) return ActionResult.fail();
tag += { "sticks": stickCount - 8 } as IData;
state = makeFramedState(state);
}
val block as IBlock = world.getBlock(pos);
var blockTag as IData = orElse(block.data, {}) + {
"MatS": tag.MatS,
"MatF": orElse(tag.MatF, ""),
"MatT": orElse(tag.MatT, "")
};
world.setBlockState(definition.getStateFromMeta(ctstate.meta), overrideData(block.data), pos); // clear storage
world.setBlockState(<block:minecraft:air>, pos); // ensure re-render
world.setBlockState(state, blockTag, pos);
player.setItemToSlot(hand == Hand.main() ?
IEntityEquipmentSlot.mainHand() :
IEntityEquipmentSlot.offhand(),
player.currentItem.withTag(tag));
return ActionResult.success();
}
return ActionResult.pass();
} as IItemUse;
hft.register();

View File

@ -333,7 +333,7 @@ recipes.removeByRecipeName("thermalexpansion:augment_25");
recipes.addShaped(<thermalexpansion:augment:576>, [ recipes.addShaped(<thermalexpansion:augment:576>, [
[null, <ore:gearIron>, null], [null, <ore:gearIron>, null],
[<ore:plateCopper>, <minecraft:bucket>, <ore:plateCopper>], [<ore:plateCopper>, <minecraft:bucket>, <ore:plateCopper>],
[null, <ore:blockGlass>, null] [null, <ore:blockGlassHardened>, null]
]); ]);
recipes.addShaped(<thermalfoundation:material:515>, [ recipes.addShaped(<thermalfoundation:material:515>, [

View File

@ -2456,6 +2456,16 @@ recipes.addShapeless(<metaitem:ingotRedAlloy>, [<enderio:item_alloy_ingot:3>]);
<ore:questbookSifter>.add(<metaitem:sifter.lv>); <ore:questbookSifter>.add(<metaitem:sifter.lv>);
<ore:questbookSifter>.add(<metaitem:sifter.mv>); <ore:questbookSifter>.add(<metaitem:sifter.mv>);
<ore:questbookLvCef>.add(<metaitem:energy_converter.lv.1>);
<ore:questbookLvCef>.add(<metaitem:energy_converter.lv.4>);
<ore:questbookLvCef>.add(<metaitem:energy_converter.lv.8>);
<ore:questbookLvCef>.add(<metaitem:energy_converter.lv.16>);
<ore:questbookMvCef>.add(<metaitem:energy_converter.mv.1>);
<ore:questbookMvCef>.add(<metaitem:energy_converter.mv.4>);
<ore:questbookMvCef>.add(<metaitem:energy_converter.mv.8>);
<ore:questbookMvCef>.add(<metaitem:energy_converter.mv.16>);
//<ore:questbookFluidExtractor>.add(<meta_tile_entity:fluid_extractor.lv>); // LV Fluid Extractor //<ore:questbookFluidExtractor>.add(<meta_tile_entity:fluid_extractor.lv>); // LV Fluid Extractor
//<ore:questbookFluidExtractor>.add(<meta_tile_entity:fluid_extractor.mv>); // MV Fluid Extractor //<ore:questbookFluidExtractor>.add(<meta_tile_entity:fluid_extractor.mv>); // MV Fluid Extractor
//<ore:questbookFluidExtractor>.add(<meta_tile_entity:fluid_extractor.hv>); // HV Fluid Extractor //<ore:questbookFluidExtractor>.add(<meta_tile_entity:fluid_extractor.hv>); // HV Fluid Extractor

View File

@ -448,7 +448,7 @@ makeExtremeRecipe9(<metaitem:ingotCrystalMatrix>,
recipes.remove(<avaritia:resource>); recipes.remove(<avaritia:resource>);
recipes.addShaped(<avaritia:resource>, [ recipes.addShaped(<avaritia:resource>, [
[<metaitem:plateDiamond>, <minecraft:diamond_block>, <metaitem:plateDiamond>], [<metaitem:plateDiamond>, <minecraft:diamond_block>, <metaitem:plateDiamond>],
[<minecraft:diamond_block>, <metaitem:gemExquisiteDiamond>, <minecraft:diamond_block>], [<minecraft:diamond_block>, <metaitem:gemPerfectDiamond>, <minecraft:diamond_block>],
[<metaitem:plateDiamond>, <minecraft:diamond_block>, <metaitem:plateDiamond>]]); [<metaitem:plateDiamond>, <minecraft:diamond_block>, <metaitem:plateDiamond>]]);

View File

@ -3,8 +3,14 @@
import mods.gregtech.material.MaterialBuilder; import mods.gregtech.material.MaterialBuilder;
import mods.gregtech.material.MaterialRegistry; import mods.gregtech.material.MaterialRegistry;
import mods.gregtech.material.IMaterialPredicate;
import mods.gregtech.material.Material; import mods.gregtech.material.Material;
import mods.gregtech.material.Elements; import mods.gregtech.material.Elements;
import mods.gregtech.ore.OrePrefix;
val gemPerfect as OrePrefix = OrePrefix.registerOrePrefix("gemPerfect", 8, "gemPerfect", 1);
gemPerfect.setGenerationPredicate(IMaterialPredicate.hasGem);
gemPerfect.createMaterialItem();
var element_omnium = Elements.add(130, 234, -1, null, "Omnium", "Nm", false); var element_omnium = Elements.add(130, 234, -1, null, "Omnium", "Nm", false);
var element_draconium = Elements.add(149, 264, -1, null, "Draconium", "Dc", false); var element_draconium = Elements.add(149, 264, -1, null, "Draconium", "Dc", false);
@ -165,7 +171,7 @@ var crystal_matrix = MaterialBuilder(32023, "crystal_matrix")
.ingot().fluid() .ingot().fluid()
.color(0x70ecff).iconSet("shiny") .color(0x70ecff).iconSet("shiny")
.flags("generate_plate") .flags("generate_plate")
.components([<material:diamond> * 504, <material:nether_star> * 10]) // .components([<material:diamond> * 504, <material:nether_star> * 10])
.build(); .build();
var soularium = MaterialBuilder(32024, "soularium") var soularium = MaterialBuilder(32024, "soularium")

View File

@ -1,191 +0,0 @@
#modloaded deepmoblearning
import mods.gregtech.multiblock.Builder;
import mods.gregtech.multiblock.FactoryBlockPattern;
import mods.gregtech.multiblock.RelativeDirection;
import mods.gregtech.multiblock.functions.IPatternBuilderFunction;
import mods.gregtech.IControllerTile;
import mods.gregtech.multiblock.CTPredicate;
import mods.gregtech.multiblock.IBlockPattern;
import mods.gregtech.recipe.FactoryRecipeMap;
import mods.gregtech.recipe.RecipeMap;
import crafttweaker.data.IData;
import crafttweaker.world.IFacing;
import crafttweaker.item.IItemStack;
import crafttweaker.item.IItemCondition;
import scripts.common.makeShaped as makeShaped;
// from DML's config
val mobs as int[string] = {
// mob RF/t
"zombie": 64,
"skeleton": 64,
"creeper": 64,
"spider": 64,
"slime": 64,
"witch": 512,
"blaze": 1024,
"ghast": 1024,
"wither_skeleton": 1024,
"enderman": 2048,
"wither": 6666,
"dragon": 6666,
"shulker": 512,
"guardian": 1024,
"thermal_elemental": 1024
};
val pristine_types as IItemStack[string] = {
// mob pristine type
"zombie": <deepmoblearning:living_matter_overworldian>,
"skeleton": <deepmoblearning:living_matter_overworldian>,
"creeper": <deepmoblearning:living_matter_overworldian>,
"spider": <deepmoblearning:living_matter_overworldian>,
"slime": <deepmoblearning:living_matter_overworldian>,
"witch": <deepmoblearning:living_matter_overworldian>,
"blaze": <deepmoblearning:living_matter_hellish>,
"ghast": <deepmoblearning:living_matter_hellish>,
"wither_skeleton": <deepmoblearning:living_matter_hellish>,
"enderman": <deepmoblearning:living_matter_extraterrestrial>,
"wither": <deepmoblearning:living_matter_extraterrestrial>,
"dragon": <deepmoblearning:living_matter_extraterrestrial>,
"shulker": <deepmoblearning:living_matter_extraterrestrial>,
"guardian": <deepmoblearning:living_matter_overworldian>,
"thermal_elemental": <deepmoblearning:living_matter_overworldian>
};
val model_prefix = "deepmoblearning:data_model_";
val pristine_prefix = "deepmoblearning:pristine_matter_";
// from DML's config
val pristine_chances as int[] = [
5,
10,
20,
30
];
// from DML's config
val maxExperience as int[] = [
0,
50,
250,
500
];
val name as string = "dml_sim_chamber";
val dml_sim_chamber = Builder.start("dml_sim_chamber", 3100)
.withPattern(function(controller as IControllerTile) as IBlockPattern {
return FactoryBlockPattern.start()
.aisle(
"CCCCC", "DEEED", "DEEED", "DEEED", "CCCCC"
)
.aisle(
"CGGGC", "GOOOG", "DOOOD", "GOOOG", "CCCCC"
)
.aisle(
"CGGGC", "GOOOG", "DO-OD", "GOOOG", "CCCCC"
)
.aisle(
"CGGGC", "GOOOG", "DOOOD", "GOOOG", "CCCCC"
)
.aisle(
"CCCCC", "DGGGD", "DGGGD", "DGGGD", "CCSCC"
)
.where('S', controller.self)
.where('D', <metastate:gcym:large_multiblock_casing:5>)
.where('E', <metastate:gregtech:meta_block_compressed_2001:2>) // enderium
.where('G', <metastate:enderio:block_fused_glass:0>)
.where('O', <metastate:extendedcrafting:storage:4> /* omnium */)
.where('C', <metastate:gcym:large_multiblock_casing:11>
| CTPredicate.autoAbilities(true, false, true, true, false, false, false))
.build();
} as IPatternBuilderFunction)
.withRecipeMap(
FactoryRecipeMap.start("dml_recipe_map")
.minInputs(2)
.maxInputs(2)
.minOutputs(2)
.maxOutputs(2)
.build())
.withBaseTexture(<metastate:gcym:large_multiblock_casing:11>)
.buildAndRegister();
dml_sim_chamber.hasMaintenanceMechanics = false;
dml_sim_chamber.hasMufflerMechanics = false;
//Recipe for Controller
makeShaped("simulation_controller", <metaitem:multiblocktweaker:dml_sim_chamber>,
["MHM",
"RCR",
"MEM"],
{ M : <metaitem:circuit.wetware_mainframe>,
R : <metaitem:robot.arm.uv>,
C : <gcym:large_multiblock_casing:11>,
E : <draconicevolution:draconic_energy_core>,
H : <contenttweaker:heartofauniverse>
});
val DATA_MODEL_MAXIMUM_TIER = 4;
val asInt = function(data as IData) as int {
return isNull(data) ? 0 : data as int;
};
dml_sim_chamber.completeRecipe = function(logic as IRecipeLogic) {
for slot, stack in logic.inputInventory {
if(!isNull(stack) && stack.definition.id.startsWith(model_prefix)) {
var tier = asInt(stack.tag.tier);
var simulationCount = asInt(stack.tag.simulationCount) + 1;
var killCount = asInt(stack.tag.killCount);
if(tier < DATA_MODEL_MAXIMUM_TIER) {
val roof = maxExperience[tier];
if(simulationCount + 1 >= roof) {
killCount = 0;
simulationCount = 0;
tier += 1;
}
}
logic.inputInventory.setStackInSlot(
slot,
stack.withTag(
stack.tag + ({
tier: tier,
simulationCount: simulationCount,
totalSimulationCount: asInt(stack.tag.totalSimulationCount) + 1,
killCount: killCount
} as IData)
)
);
return;
}
}
} as ICompleteRecipeFunction;
val withTier = function(tier as int) as IItemCondition {
return function(stack as IItemStack) as bool {
return asInt(stack.tag.tier) == tier;
} as IItemCondition;
};
for mob, cost in mobs {
for tier, pristine_chance in pristine_chances {
dml_recipe_map.recipeBuilder()
.duration(301)
.EUt(cost / 4 as int)
.inputs(<deepmoblearning:polymer_clay>)
.notConsumable(itemUtils.getItem(model_prefix + mob).withTag({tier: tier + 1}, false).only(withTier(tier + 1)))
.outputs(pristine_types[mob])
.chancedOutput(itemUtils.getItem(pristine_prefix + mob), pristine_chance * 100, 0)
.buildAndRegister();
}
}

View File

@ -588,10 +588,7 @@ microverse_projector_basic.recipeMap
<contenttweaker:quantumflux>, <contenttweaker:quantumflux>,
<contenttweaker:gemsensor>) <contenttweaker:gemsensor>)
.fluidInputs(<liquid:rocket_fuel> * 8000) .fluidInputs(<liquid:rocket_fuel> * 8000)
.outputs(<metaitem:gemExquisiteDiamond> * 16, .outputs(<metaitem:gemPerfectDiamond> * 64,
<metaitem:gemExquisiteDiamond> * 16,
<metaitem:gemExquisiteDiamond> * 16,
<metaitem:gemExquisiteDiamond> * 16,
<gregtech:ore_apatite_0> * 64, <gregtech:ore_apatite_0> * 64,
<gregtech:ore_tricalcium_phosphate_0> * 64, <gregtech:ore_tricalcium_phosphate_0> * 64,
<gregtech:ore_quartzite_0> * 64) <gregtech:ore_quartzite_0> * 64)
@ -662,18 +659,10 @@ microverse_projector_basic.recipeMap
<contenttweaker:quantumflux> * 4, <contenttweaker:quantumflux> * 4,
<contenttweaker:gemsensor>) <contenttweaker:gemsensor>)
.fluidInputs(<liquid:rocket_fuel> * 20000) .fluidInputs(<liquid:rocket_fuel> * 20000)
.outputs(<metaitem:gemExquisiteEmerald> * 16, .outputs(<metaitem:gemPerfectDiamond> * 64,
<metaitem:gemExquisiteEmerald> * 16, <metaitem:gemPerfectDiamond> * 32,
<metaitem:gemExquisiteDiamond> * 16, <metaitem:gemPerfectEmerald> * 32,
<metaitem:gemExquisiteDiamond> * 16, <metaitem:gemPerfectRuby> * 64,
<metaitem:gemExquisiteDiamond> * 16,
<metaitem:gemExquisiteDiamond> * 16,
<metaitem:gemExquisiteDiamond> * 16,
<metaitem:gemExquisiteDiamond> * 16,
<metaitem:gemExquisiteRuby> * 16,
<metaitem:gemExquisiteRuby> * 16,
<metaitem:gemExquisiteRuby> * 16,
<metaitem:gemExquisiteRuby> * 16,
<gregtech:ore_sapphire_0:1> * 64, <gregtech:ore_sapphire_0:1> * 64,
<gregtech:ore_gold_0:1> * 64, <gregtech:ore_gold_0:1> * 64,
<gregtech:ore_silver_0:1> * 64, <gregtech:ore_silver_0:1> * 64,