206 lines
8.2 KiB
Plaintext
206 lines
8.2 KiB
Plaintext
|
|
#loader contenttweaker
|
|
|
|
#modloaded tconstruct
|
|
|
|
import crafttweaker.player.IPlayer;
|
|
import crafttweaker.entity.IEntityLivingBase;
|
|
import crafttweaker.damage.IDamageSource;
|
|
import crafttweaker.entity.IEntityMob;
|
|
import mods.contenttweaker.Commands;
|
|
import crafttweaker.item.IItemStack;
|
|
import crafttweaker.data.IData;
|
|
import crafttweaker.item.IIngredient;
|
|
import crafttweaker.liquid.ILiquidStack;
|
|
import crafttweaker.game.IGame;
|
|
import crafttweaker.world.IBlockPos;
|
|
import crafttweaker.block.IBlock;
|
|
import mods.contenttweaker.Player;
|
|
import mods.contenttweaker.IItemUpdate;
|
|
import mods.contenttweaker.World;
|
|
import mods.contenttweaker.MutableItemStack;
|
|
import crafttweaker.item.IItemTransformer;
|
|
import mods.ctutils.entity.Experience;
|
|
import mods.ctutils.utils.Math;
|
|
import mods.contenttweaker.tconstruct.Material;
|
|
import mods.contenttweaker.tconstruct.MaterialBuilder;
|
|
import mods.contenttweaker.Fluid;
|
|
import mods.contenttweaker.VanillaFactory;
|
|
import mods.contenttweaker.Color;
|
|
import mods.contenttweaker.tconstruct.Trait;
|
|
import mods.contenttweaker.tconstruct.TraitDataRepresentation;
|
|
import mods.contenttweaker.tconstruct.TraitBuilder;
|
|
import crafttweaker.util.Position3f;
|
|
|
|
|
|
|
|
val bloodsweattears = TraitBuilder.create("blood_sweat_tears");
|
|
bloodsweattears.color = Color.fromHex("03fcfc").getIntColor();
|
|
bloodsweattears.localizedName = game.localize("meatballcraft.tconstruct.tool_trait.bloodsweattears.name");
|
|
bloodsweattears.localizedDescription = game.localize("meatballcraft.tconstruct.tool_trait.bloodsweattears.desc");
|
|
bloodsweattears.addItem(<ore:itemBloodhunterReinforcement>);
|
|
bloodsweattears.maxLevel = 3;
|
|
bloodsweattears.onBlockHarvestDrops = function(trait, tool, event) {
|
|
// trigger if tool is damaged
|
|
if (tool.isDamaged){
|
|
|
|
// get trait level
|
|
var traitdata as TraitDataRepresentation = trait.getData(tool);
|
|
var traitlevel = 0;
|
|
if (!isNull(traitdata)) {
|
|
traitlevel = traitdata.level;
|
|
}
|
|
// triggers with a 50% chance, increased at each level
|
|
if ((Math.random() / traitlevel) < 0.5){
|
|
// generate xp clump
|
|
var xpamount as int = 1 * traitlevel;
|
|
Commands.call(("/summon minecraft:xp_orb " ~ (event.player.x) ~ " " ~ (event.player.y + 1) ~ " " ~ (event.player.z) ~ " {Value:" ~ (xpamount) ~ "}"), event.player, event.world, false, true);
|
|
}
|
|
|
|
}
|
|
};
|
|
bloodsweattears.register();
|
|
|
|
|
|
val arcaneextraction = TraitBuilder.create("arcane_extraction");
|
|
arcaneextraction.color = Color.fromHex("03fcfc").getIntColor();
|
|
arcaneextraction.localizedName = game.localize("meatballcraft.tconstruct.tool_trait.arcaneextraction.name");
|
|
arcaneextraction.localizedDescription = game.localize("meatballcraft.tconstruct.tool_trait.arcaneextraction.desc");
|
|
arcaneextraction.onBlockHarvestDrops = function(trait, tool, event) {
|
|
if (Math.random() < 0.3) {
|
|
event.player.give(itemUtils.getItem("divinerpg:arcanium"));
|
|
}
|
|
};
|
|
arcaneextraction.register();
|
|
|
|
|
|
|
|
|
|
val abyssalharvesting = TraitBuilder.create("abyssal_harvesting");
|
|
abyssalharvesting.color = Color.fromHex("bd42ff").getIntColor();
|
|
abyssalharvesting.localizedName = game.localize("meatballcraft.tconstruct.tool_trait.abyssalharvesting.name");
|
|
abyssalharvesting.localizedDescription = game.localize("meatballcraft.tconstruct.tool_trait.abyssalharvesting.desc");
|
|
abyssalharvesting.addItem(<ore:itemAbyssalHarvester>);
|
|
abyssalharvesting.maxLevel = 3;
|
|
abyssalharvesting.onHit = function(trait, tool, attacker, target, damage, isCritical) {
|
|
// get trait level
|
|
var traitdata as TraitDataRepresentation = trait.getData(tool);
|
|
var traitlevel = 0;
|
|
if (!isNull(traitdata)) {
|
|
traitlevel = traitdata.level;
|
|
}
|
|
if ((Math.random()/traitlevel) < 0.25) {
|
|
val player as IPlayer = attacker;
|
|
player.give(itemUtils.getItem("contenttweaker:abyssal_wasteland_matter"));
|
|
}
|
|
};
|
|
abyssalharvesting.register();
|
|
|
|
val dreadfulharvesting = TraitBuilder.create("dreadful_harvesting");
|
|
dreadfulharvesting.color = Color.fromHex("bd42ff").getIntColor();
|
|
dreadfulharvesting.localizedName = game.localize("meatballcraft.tconstruct.tool_trait.dreadfulharvesting.name");
|
|
dreadfulharvesting.localizedDescription = game.localize("meatballcraft.tconstruct.tool_trait.dreadfulharvesting.desc");
|
|
dreadfulharvesting.addItem(<ore:itemDreadfulHarvester>);
|
|
dreadfulharvesting.maxLevel = 3;
|
|
dreadfulharvesting.onHit = function(trait, tool, attacker, target, damage, isCritical) {
|
|
// get trait level
|
|
var traitdata as TraitDataRepresentation = trait.getData(tool);
|
|
var traitlevel = 0;
|
|
if (!isNull(traitdata)) {
|
|
traitlevel = traitdata.level;
|
|
}
|
|
if ((Math.random()/traitlevel) < 0.25) {
|
|
val player as IPlayer = attacker;
|
|
player.give(itemUtils.getItem("contenttweaker:dreadlands_matter"));
|
|
}
|
|
};
|
|
dreadfulharvesting.register();
|
|
|
|
val omotholharvesting = TraitBuilder.create("omothol_harvesting");
|
|
omotholharvesting.color = Color.fromHex("bd42ff").getIntColor();
|
|
omotholharvesting.localizedName = game.localize("meatballcraft.tconstruct.tool_trait.omotholharvesting.name");
|
|
omotholharvesting.localizedDescription = game.localize("meatballcraft.tconstruct.tool_trait.omotholharvesting.desc");
|
|
omotholharvesting.addItem(<ore:itemOmotholHarvester>);
|
|
omotholharvesting.maxLevel = 3;
|
|
omotholharvesting.onHit = function(trait, tool, attacker, target, damage, isCritical) {
|
|
// get trait level
|
|
var traitdata as TraitDataRepresentation = trait.getData(tool);
|
|
var traitlevel = 0;
|
|
if (!isNull(traitdata)) {
|
|
traitlevel = traitdata.level;
|
|
}
|
|
if ((Math.random()/traitlevel) < 0.25) {
|
|
val player as IPlayer = attacker;
|
|
player.give(itemUtils.getItem("contenttweaker:omothol_matter"));
|
|
}
|
|
};
|
|
omotholharvesting.register();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val willoftheaesir = TraitBuilder.create("will_of_the_aesir");
|
|
willoftheaesir.color = Color.fromHex("bd42ff").getIntColor();
|
|
willoftheaesir.localizedName = game.localize("meatballcraft.tconstruct.tool_trait.willoftheaesir.name");
|
|
willoftheaesir.localizedDescription = game.localize("meatballcraft.tconstruct.tool_trait.willoftheaesir.desc");
|
|
willoftheaesir.maxLevel = 3;
|
|
willoftheaesir.onBlockHarvestDrops = function(trait, tool, event) {
|
|
|
|
if (Math.random() < 0.3) {
|
|
event.player.give(itemUtils.getItem("contenttweaker:soul_fragment_of_the_reconciled_aesir"));
|
|
}
|
|
|
|
|
|
};
|
|
willoftheaesir.register();
|
|
|
|
|
|
|
|
val tearofarcana = TraitBuilder.create("tear_of_arcana");
|
|
tearofarcana.color = Color.fromHex("03fcfc").getIntColor();
|
|
tearofarcana.localizedName = game.localize("meatballcraft.tconstruct.tool_trait.tearofarcana.name");
|
|
tearofarcana.localizedDescription = game.localize("meatballcraft.tconstruct.tool_trait.tearofarcana.desc");
|
|
tearofarcana.maxLevel = 10;
|
|
tearofarcana.addItem(<ore:itemAesirGemstone>);
|
|
tearofarcana.onBlockHarvestDrops = function(trait, tool, event) {
|
|
var traitdata as TraitDataRepresentation = trait.getData(tool);
|
|
var traitlevel = 0;
|
|
if (!isNull(traitdata)) {
|
|
traitlevel = traitdata.level;
|
|
}
|
|
if ((Math.random()/traitlevel) < 0.5) {
|
|
event.player.give(itemUtils.getItem("divinerpg:arcanium_block"));
|
|
}
|
|
if ((Math.random()/traitlevel) < 0.25) {
|
|
event.player.give(itemUtils.getItem("divinerpg:arcanium_block"));
|
|
}
|
|
if ((Math.random()/traitlevel) < 0.1) {
|
|
event.player.give(itemUtils.getItem("divinerpg:arcanium_block"));
|
|
}
|
|
if ((Math.random()/traitlevel) < 0.02) {
|
|
event.player.give(itemUtils.getItem("contenttweaker:arcanium_cluster"));
|
|
}
|
|
};
|
|
tearofarcana.register();
|
|
|
|
|
|
|
|
val giggity = TraitBuilder.create("giggity");
|
|
giggity.color = Color.fromHex("bd42ff").getIntColor();
|
|
giggity.localizedName = game.localize("meatballcraft.tconstruct.tool_trait.giggity.name");
|
|
giggity.localizedDescription = game.localize("meatballcraft.tconstruct.tool_trait.giggity.desc");
|
|
giggity.onHit = function(trait, tool, attacker, target, damage, isCritical) {
|
|
// get trait level
|
|
var traitdata as TraitDataRepresentation = trait.getData(tool);
|
|
var traitlevel = 0;
|
|
if (!isNull(traitdata)) {
|
|
traitlevel = traitdata.level;
|
|
}
|
|
if ((Math.random()/traitlevel) < 0.5) {
|
|
val player as IPlayer = attacker;
|
|
player.give(itemUtils.getItem("contenttweaker:hard_bone"));
|
|
}
|
|
};
|
|
giggity.register(); |