Files
meatballcraft/scripts/BiomeItems.zs
T
ZHAY10086 e909edb0eb update
2026-02-25 17:44:26 +08:00

1365 lines
51 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#loader contenttweaker
// exerts of this piece of code are taken from Jivine Journey 2, by Atricos
import mods.contenttweaker.VanillaFactory;
import mods.contenttweaker.Item;
import mods.contenttweaker.IItemRightClick;
import mods.contenttweaker.Commands;
import mods.contenttweaker.ItemFood;
import mods.contenttweaker.IItemFoodEaten;
import mods.contenttweaker.MutableItemStack;
import mods.contenttweaker.Hand;
import mods.contenttweaker.World;
import mods.contenttweaker.IItemUpdate;
import mods.contenttweaker.Player;
import crafttweaker.player.IPlayer;
import crafttweaker.block.IBlock;
import crafttweaker.data.IData;
import crafttweaker.util.Position3f;
import crafttweaker.block.IBlockState;
// function taken from Divine Journey
function checkBiomesAtPositions(biomeName as string, player_pos as crafttweaker.util.Position3f, biomeLocations as int[][], world as crafttweaker.world.IWorld) as int {
var numOfMatches = 0 as int;
var check_pos as crafttweaker.util.Position3f;
var add_x = 0 as int;
var add_z = 0 as int;
for coord_pair in biomeLocations {
add_x = coord_pair[0];
add_z = coord_pair[1];
check_pos = crafttweaker.util.Position3f.create(player_pos.x + add_x, player_pos.y, player_pos.z + add_z);
if(world.getBiome(check_pos).name == biomeName) {
numOfMatches += 1;
}
}
return numOfMatches;
}
var markofthesamurai = VanillaFactory.createItem("mark_of_the_samurai");
markofthesamurai.maxStackSize = 1;
markofthesamurai.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 163) {
player.sendChat("需位于铼界的火山带(Volcanic)群系");
return "FAIL";
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val OminousBiomeLocations = [[0,0],
[1,0],[0,1],[-1,0],[0,-1],
[2,0],[0,2],[-2,0],[0,-2],
[3,0],[0,3],[-3,0],[0,-3]] as int[][];
val VolcanicBiomeLocations = [[1,1],[1,-1],[-1,1],[-1,-1],
[2,2],[2,-2],[-2,2],[-2,-2],
[3,3],[3,-3],[-3,3],[-3,-3],
[1,2],[-1,2],[1,-2],[-1,-2],
[2,1],[-2,1],[2,-1],[-2,-1],
[1,3],[-1,3],[1,-3],[-1,-3],
[3,1],[-3,1],[3,-1],[-3,-1],
[2,3],[-2,3],[2,-3],[-2,-3],
[3,2],[-3,2],[3,-2],[-3,-2]] as int[][];
// biome to pattern
val OminousBiomeName = "Ominous Woods" as string;
val VolcanicBiomeName = "Volcanic" as string;
// get number of matches
val OminousMatches = checkBiomesAtPositions(OminousBiomeName, playerpos, OminousBiomeLocations, world) as int;
val VolcanicMatches = checkBiomesAtPositions(VolcanicBiomeName, playerpos, VolcanicBiomeLocations, world) as int;
player.sendChat("使用更多实用设备模组的地形转化仪,创建一个由火山带(Volcanic)群系(不是火山带荒地(Volcanic Barren)或者火山带低地(Volcanic Lowlands))环绕不祥森林(Ominous Woods)群系构成的加号形状");
player.sendChat("站在中心使用该物品!");
player.sendChat(" - - - ");
player.sendChat("正在扫描你周围的7x7区域");
player.sendChat("不祥森林(Ominous Woods):" ~ OminousMatches ~ " / 13");
player.sendChat("火山带(Volcanic):" ~ VolcanicMatches ~ " / 36");
if((OminousMatches+VolcanicMatches) == 49) {
Commands.call("give @p contenttweaker:sword_shield", player, world, false, true);
stack.shrink(1);
return "PASS";
} else {
player.sendChat("形状不完整!");
return "FAIL";
}
};
markofthesamurai.register();
var terraformassiflora= VanillaFactory.createItem("terraformassiflora");
terraformassiflora.maxStackSize = 1;
terraformassiflora.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
if(player.getDimension() != 151) {
player.sendChat("群系仪式召唤石会告诉你该去哪!");
return "FAIL";
}
player.sendChat("成功!你位于正确的维度!");
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val MystriumBiomeLocations = [[6,0], [7,0], [-6,0], [-7,0], [0,6], [0,7], [0,-6], [0,-7]] as int[][];
val NuclearWastelandLocations = [[5,5], [5,4], [4,5],
[-5,5], [-5,4], [-4,5],
[5,-5], [5,-4], [4,-5],
[-5,-5], [-5,-4], [-4,-5]] as int[][];
val StorageBiomeLocations = [[4,4], [-4,4], [4,-4], [-4,-4]] as int[][];
val CrystalChasmsLocations = [[4,-3], [4,3], [-4,-3], [-4,3], [3,-4], [-3,-4], [3,4], [-3,4]] as int[][];
val BlackVoidLocations = [[4,-2], [4,2], [-4,-2], [-4,2], [2,-4], [-2,-4], [2,4], [-2,4]] as int[][];
val TwilightStreamLocations = [[4,0], [5,0], [4,1], [4,-1], [5,1], [5,-1],
[-4,0], [-5,0], [-4,1], [-4,-1], [-5,1], [-5,-1],
[0,4], [0,5], [1,4], [-1,4], [1,5], [-1,5],
[0,-4], [0,-5], [1,-4], [-1,-4], [1,-5], [-1,-5]] as int[][];
val AlienForestLocations = [[3,0], [-3,0], [0,3], [0,-3]] as int[][];
val ThornlandsLocations = [[2,0], [-2,0], [0,2], [0,-2]] as int[][];
val IromineLocations = [[1,1], [1,2], [2,1], [3,1], [1,3], [2,3], [3,2], [3,3],
[-1,1], [-1,2], [-2,1], [-3,1], [-1,3], [-2,3], [-3,2], [-3,3],
[1,-1], [1,-2], [2,-1], [3,-1], [1,-3], [2,-3], [3,-2], [3,-3],
[-1,-1], [-1,-2], [-2,-1], [-3,-1], [-1,-3], [-2,-3], [-3,-2], [-3,-3]] as int[][];
val StormlandLocations = [[1,0], [-1,0], [0,1], [0,-1]] as int[][];
val BogLocations = [[0,0]] as int[][];
val TaintedLandsLocations = [[2,2], [-2,2], [2,-2], [-2,-2]] as int[][];
// biome to pattern
val MysteriumBiomeName = "Mysterium" as string;
val NuclearWastelandBiomeName = "Nuclear Wasteland" as string;
val StorageBiomeName = "Storage Cell" as string;
val CrystalChasmsBiomeName = "Crystal Chasms" as string;
val BlackVoidBiomeName = "Dangerous Black Void" as string;
val TwilightStreamBiomeName = "Twilight Stream" as string;
val AlienForestBiomeName = "Alien Forest" as string;
val ThornlandsBiomeName = "Thornlands" as string;
val IromineBiomeName = "Iromine" as string;
val StormlandBiomeName = "Stormland" as string;
val BogBiomeName = "Bog" as string;
val TaintedLandsBiomeName = "Tainted Lands" as string;
player.sendChat("完成群系仪式!");
player.sendChat("将检测以玩家为中心的15x15格区域!");
player.sendChat("如果知道群系排布形状,可以使用更多实用设备模组的地形转换仪,配合些技巧来高效地完成仪式 ;)");
// get number of matches
val MysteriumMatches = checkBiomesAtPositions(MysteriumBiomeName, playerpos, MystriumBiomeLocations, world) as int;
val NuclearWastelandMatches = checkBiomesAtPositions(NuclearWastelandBiomeName, playerpos, NuclearWastelandLocations, world) as int;
val StorageBiomeMatches = checkBiomesAtPositions(StorageBiomeName, playerpos, StorageBiomeLocations, world) as int;
val CrystalChasmsMatches = checkBiomesAtPositions(CrystalChasmsBiomeName, playerpos, CrystalChasmsLocations, world) as int;
val BlackVoidMatches = checkBiomesAtPositions(BlackVoidBiomeName, playerpos, BlackVoidLocations, world) as int;
val TwilightStreamMatches = checkBiomesAtPositions(TwilightStreamBiomeName, playerpos, TwilightStreamLocations, world) as int;
val AlienForestMatches = checkBiomesAtPositions(AlienForestBiomeName, playerpos, AlienForestLocations, world) as int;
val ThornlandsMatches = checkBiomesAtPositions(ThornlandsBiomeName, playerpos, ThornlandsLocations, world) as int;
val IromineMatches = checkBiomesAtPositions(IromineBiomeName, playerpos, IromineLocations, world) as int;
val StormlandMatches = checkBiomesAtPositions(StormlandBiomeName, playerpos, StormlandLocations, world) as int;
val BogMatches = checkBiomesAtPositions(BogBiomeName, playerpos, BogLocations, world) as int;
val TaintedLandsMatches = checkBiomesAtPositions(TaintedLandsBiomeName, playerpos, TaintedLandsLocations, world) as int;
val NumberOfMatches = MysteriumMatches + NuclearWastelandMatches + StorageBiomeMatches + CrystalChasmsMatches + BlackVoidMatches + TwilightStreamMatches + AlienForestMatches + ThornlandsMatches + IromineMatches + StormlandMatches + BogMatches + TaintedLandsMatches as int;
player.sendChat("扫描周围15x15区域");
player.sendChat("群系仪式:" ~ NumberOfMatches ~ " / 113");
if((MysteriumMatches) == 8) {
player.sendChat("秘境(Mysterium):" ~ MysteriumMatches ~ " / 8");
} else {
player.sendChat("群系 #1" ~ MysteriumMatches ~ " / 8");
}
if((NuclearWastelandMatches) == 12) {
player.sendChat("核泄露之地(Nuclear Wasteland):" ~ NuclearWastelandMatches ~ " / 12");
} else {
player.sendChat("群系 #2" ~ NuclearWastelandMatches ~ " / 12");
}
if((StorageBiomeMatches) == 4) {
player.sendChat("AE2群系(Storage Cell):" ~ StorageBiomeMatches ~ " / 4");
} else {
player.sendChat("群系 #3" ~ StorageBiomeMatches ~ " / 4");
}
if((CrystalChasmsMatches) == 8) {
player.sendChat("水晶巨峰(Crystal Chasms):" ~ CrystalChasmsMatches ~ " / 8");
} else {
player.sendChat("群系 #4" ~ CrystalChasmsMatches ~ " / 8");
}
if((BlackVoidMatches) == 8) {
player.sendChat("凶险的黑暗虚空(Dangerous Black Void):" ~ BlackVoidMatches ~ " / 8");
} else {
player.sendChat("群系 #5" ~ BlackVoidMatches ~ " / 8");
}
if((TwilightStreamMatches) == 24) {
player.sendChat("暮色河流(Twilight Stream):" ~ TwilightStreamMatches ~ " / 24");
} else {
player.sendChat("群系 #6" ~ TwilightStreamMatches ~ " / 24");
}
if((AlienForestMatches) == 4) {
player.sendChat("外星森林(Alien Forest):" ~ AlienForestMatches ~ " / 4");
} else {
player.sendChat("群系 #7" ~ AlienForestMatches ~ " / 4");
}
if((ThornlandsMatches) == 4) {
player.sendChat("荆棘之地(Thornlands):" ~ ThornlandsMatches ~ " / 4");
} else {
player.sendChat("群系 #8" ~ ThornlandsMatches ~ " / 4");
}
if((IromineMatches) == 32) {
player.sendChat("黄金(Iromine):" ~ IromineMatches ~ " / 32");
} else {
player.sendChat("群系 #9" ~ IromineMatches ~ " / 32");
}
if((StormlandMatches) == 4) {
player.sendChat("风暴之地(Stormland):" ~ StormlandMatches ~ " / 4");
} else {
player.sendChat("群系 #10: " ~ StormlandMatches ~ " / 4");
}
if((BogMatches) == 1) {
player.sendChat("泥塘(Bog):" ~ BogMatches ~ " / 1");
} else {
player.sendChat("群系 #11: " ~ BogMatches ~ " / 1");
}
if((TaintedLandsMatches) == 4) {
player.sendChat("腐化之地(Tainted Lands):" ~ TaintedLandsMatches ~ " / 4");
} else {
player.sendChat("群系 #12: " ~ TaintedLandsMatches ~ " / 4");
}
if((NumberOfMatches) == 113) {
Commands.call("give @p contenttweaker:crown_of_the_energy_queen", player, world, false, true);
stack.shrink(1);
return "PASS";
} else {
player.sendChat("仪式不完整!");
return "FAIL";
}
return "PASS";
};
terraformassiflora.register();
var biomechecker = VanillaFactory.createItem("biome_checker");
biomechecker.maxStackSize = 1;
biomechecker.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// obtain position under player
val playerpos = player.position as crafttweaker.util.Position3f;
// send biome name in chat
player.sendChat("群系:" ~ world.getBiome(playerpos).name ~ " ");
return "PASS";
};
biomechecker.register();
var spatialphaser = VanillaFactory.createItem("spatial_phaser");
spatialphaser.maxStackSize = 1;
spatialphaser.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 805) {
player.sendChat("需位于正确的维度,赫尔维蒂维度将告诉你是哪一个");
return "FAIL";
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val UndergardenBiomeLocations = [[0,0],[1,0],[0,1],[-1,0],[0,-1],[2,0],[-2,0],[0,2],[0,-2],[3,0],[-3,0],[0,3],[0,-3],[4,0],[-4,0],[0,4],[0,-4]] as int[][];
// biome to pattern
val UndergardenBiomeName = "Undergarden" as string;
// get number of matches
val UndergardenMatches = checkBiomesAtPositions(UndergardenBiomeName, playerpos, UndergardenBiomeLocations, world) as int;
player.sendChat("使用更多实用设备模组的地形转化仪将群系转化为正确群系,赫尔维蒂维度将告诉你是哪一个。");
player.sendChat("你得转化很大一块区域!");
player.sendChat("站在改变后的群系中使用该物品!");
player.sendChat(" - - - ");
player.sendChat("正在扫描周围区域");
if((UndergardenMatches) == 17) {
player.sendChat("成功!");
Commands.call("give @p contenttweaker:phasing_gem", player, world, false, true);
stack.shrink(1);
return "PASS";
}
if((UndergardenMatches) >= 1) {
player.sendChat("检测无误,正确的群系为地下花园(Undergarden)!");
val UndergardenMatchesD = UndergardenMatches as double;
player.sendChat("完成度:" ~ UndergardenMatchesD/17*100 ~ "%");
player.sendChat("还需转化更大区域!");
return "FAIL";
}
player.sendChat("群系错误!");
return "FAIL";
};
spatialphaser.register();
var gemvoracity = VanillaFactory.createItem("gem_of_voracity");
gemvoracity.maxStackSize = 1;
gemvoracity.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 803) {
player.sendChat("需位于正确的维度,未知维度将告诉你是哪一个");
return "FAIL";
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val UndergardenBiomeLocations = [[0,0],[1,0],[0,1],[-1,0],[0,-1],[2,0],[-2,0],[0,2],[0,-2],[3,0],[-3,0],[0,3],[0,-3],[4,0],[-4,0],[0,4],[0,-4]] as int[][];
// biome to pattern
val UndergardenBiomeName = "Mesa (Bryce)" as string;
// get number of matches
val UndergardenMatches = checkBiomesAtPositions(UndergardenBiomeName, playerpos, UndergardenBiomeLocations, world) as int;
player.sendChat("使用更多实用设备模组的地形转化仪将群系转化为正确群系,未知维度将告诉你是哪一个。");
player.sendChat("你得转化很大一块区域!");
player.sendChat("站在改变后的群系中使用该物品!");
player.sendChat(" - - - ");
player.sendChat("正在扫描周围区域");
if((UndergardenMatches) == 17) {
player.sendChat("成功!");
Commands.call("give @p contenttweaker:voraceous_worm_callstone", player, world, false, true);
stack.shrink(1);
return "PASS";
}
if((UndergardenMatches) >= 1) {
player.sendChat("检测无误,正确的群系为平顶山(岩柱)(Mesa (Bryce))!");
val UndergardenMatchesD = UndergardenMatches as double;
player.sendChat("完成度:" ~ UndergardenMatchesD/17*100 ~ "%");
player.sendChat("还需转化更大区域!");
return "FAIL";
}
player.sendChat("群系错误!");
return "FAIL";
};
gemvoracity.register();
var aquaticstone = VanillaFactory.createItem("aquatic_stone");
aquaticstone.maxStackSize = 16;
aquaticstone.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 0) {
player.sendChat("需位于主世界");
return "FAIL";
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val OceanBiomeLocations = [[0,0]] as int[][];
// biome to pattern
val OceanBiomeName = "Ocean" as string;
// get number of matches
val OceanMatches = checkBiomesAtPositions(OceanBiomeName, playerpos, OceanBiomeLocations, world) as int;
if((OceanMatches) == 0) {
player.sendChat("需位于海洋(Ocean)群系");
return "FAIL";
}
if((OceanMatches) == 1) {
Commands.call("summon divinerpg:whale ~ ~ ~", player, world, false, true);
Commands.call("summon divinerpg:whale ~ ~ ~", player, world, false, true);
Commands.call("summon divinerpg:whale ~ ~ ~", player, world, false, true);
Commands.call("summon divinerpg:whale ~ ~ ~", player, world, false, true);
Commands.call("summon divinerpg:whale ~ ~ ~", player, world, false, true);
Commands.call("summon divinerpg:whale ~ ~ ~", player, world, false, true);
Commands.call("summon divinerpg:shark ~ ~ ~", player, world, false, true);
Commands.call("summon divinerpg:shark ~ ~ ~", player, world, false, true);
Commands.call("summon divinerpg:shark ~ ~ ~", player, world, false, true);
Commands.call("summon divinerpg:shark ~ ~ ~", player, world, false, true);
Commands.call("summon divinerpg:shark ~ ~ ~", player, world, false, true);
Commands.call("summon divinerpg:liopleurodon ~ ~ ~", player, world, false, true);
Commands.call("summon divinerpg:liopleurodon ~ ~ ~", player, world, false, true);
stack.shrink(1);
return "PASS";
}
player.sendChat("需位于海洋(Ocean)群系");
return "FAIL";
};
aquaticstone.register();
var brokenoath = VanillaFactory.createItem("broken_oath");
brokenoath.maxStackSize = 16;
brokenoath.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 7) {
player.sendChat("需位于暮色森林");
return "FAIL";
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val CandyBiomeLocations = [[0,0]] as int[][];
// biome to pattern
val CandyBiomeName = "Final Plateau" as string;
// get number of matches
val CandyMatches = checkBiomesAtPositions(CandyBiomeName, playerpos, CandyBiomeLocations, world) as int;
if((CandyMatches) == 0) {
player.sendChat("需位于终焉高原(Final Plateau)群系");
return "FAIL";
}
if((CandyMatches) == 1) {
Commands.call("summon twilightforest:adherent ~ ~3 ~ {HandItems:[{Count:1,id:\"contenttweaker:crepuscular_callstone\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:9000.0},{Name:generic.attackDamage, Base:3000.0}],Health:9000f,CustomName:\"失败的传送门大师\"}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
player.sendChat("需位于终焉高原(Final Plateau)群系");
return "FAIL";
};
brokenoath.register();
var rhythmgreatworm = VanillaFactory.createItem("rhythm_of_the_great_worm");
rhythmgreatworm.maxStackSize = 16;
rhythmgreatworm.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 624) {
player.sendChat("需位于伽里弗雷");
return "FAIL";
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val CandyBiomeLocations = [[0,0]] as int[][];
// biome to pattern
val CandyBiomeName = "Wastelands" as string;
// get number of matches
val CandyMatches = checkBiomesAtPositions(CandyBiomeName, playerpos, CandyBiomeLocations, world) as int;
if((CandyMatches) == 0) {
player.sendChat("需位于Wastelands群系");
return "FAIL";
}
if((CandyMatches) == 1) {
Commands.call("/summon iceandfire:deathworm ~ ~ ~ {Scale:10f,WormAge:10, HandItems:[{Count:1,id:\"contenttweaker:blood_of_enlightenment\"},{}],HandDropChances:[1.0f,0.0f],CustomName:\"夏胡鲁\",ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:100,permshields:100}}}", player, world, true, true);
stack.shrink(1);
return "PASS";
}
player.sendChat("需位于Wastelands群系");
return "FAIL";
};
rhythmgreatworm.register();
var diabeticsummoner = VanillaFactory.createItem("diabetic_callstone");
diabeticsummoner.maxStackSize = 16;
diabeticsummoner.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 152) {
player.sendChat("需位于奥伊");
return "FAIL";
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val CandyBiomeLocations = [[0,0]] as int[][];
// biome to pattern
val CandyBiomeName = "Candyland" as string;
// get number of matches
val CandyMatches = checkBiomesAtPositions(CandyBiomeName, playerpos, CandyBiomeLocations, world) as int;
if((CandyMatches) == 0) {
player.sendChat("需位于糖果(Candyland)群系");
return "FAIL";
}
if((CandyMatches) == 1) {
Commands.call("pillar-spawn candyland_structure_diabetic", player, world, false, true);
stack.shrink(1);
return "PASS";
}
player.sendChat("需位于糖果(Candyland)群系");
return "FAIL";
};
diabeticsummoner.register();
var memoryrestorationritual = VanillaFactory.createItem("memory_restoration_ritual");
memoryrestorationritual.maxStackSize = 16;
memoryrestorationritual.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 0) {
if(player.getDimension() != 7) {
if(player.getDimension() != 150) {
if(player.getDimension() != 426) {
player.sendChat("该物品可在主世界、暮色森林、哈托尔以及秘界使用");
return "FAIL";
}
}
}
}
player.sendChat("根据所在维度不同,该物品需要不同的群系才能工作");
player.sendChat("主世界:远古神殿(Ancient Cavern)(发现于远古神殿维度)");
player.sendChat("暮色森林:外域(Outer Lands)(发现于晦暗界)");
player.sendChat("哈托尔:神圣之泉(Sacred Springs)(发现于主世界)");
player.sendChat("秘界:魔法森林(Magical Forest)(发现于主世界)");
player.sendChat("召唤的Boss只有在护盾破坏之后才会受到伤害");
player.sendChat(" - - - ");
player.sendChat("正在扫描玩家位置");
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val AncientCavernBiomePos = [[0,0]] as int[][];
val OuterLandsBiomePos = [[0,0]] as int[][];
val SacredSpringsBiomePos = [[0,0]] as int[][];
val MagicalForestBiomePos = [[0,0]] as int[][];
// biome to pattern
val AncientCavernName = "Ancient Cavern" as string;
val OuterLandsName = "Outer Lands" as string;
val SacredSpringsName = "Sacred Springs" as string;
val MagicalForestName = "Magical Forest" as string;
// get number of matches
val AncientCavernMatches = checkBiomesAtPositions(AncientCavernName, playerpos, AncientCavernBiomePos, world) as int;
val OuterLandsMatches = checkBiomesAtPositions(OuterLandsName, playerpos, OuterLandsBiomePos, world) as int;
val SacredSpringsMatches = checkBiomesAtPositions(SacredSpringsName, playerpos, SacredSpringsBiomePos, world) as int;
val MagicalForestMatches = checkBiomesAtPositions(MagicalForestName, playerpos, MagicalForestBiomePos, world) as int;
if((AncientCavernMatches) == 1) {
if(player.getDimension() == 0) {
player.sendChat("成功");
Commands.call("summon aoa3:angelica ~ ~2 ~ {CustomName:\"谎言护卫\",HandItems:[{Count:1,id:\"contenttweaker:scroll_of_truth_terra\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:10000.0},{Name:generic.attackDamage, Base:10000.0}],Health:10000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:50,permshields:50}}}", player, world, false, true);
return "PASS";
}
}
if((OuterLandsMatches) == 1) {
if(player.getDimension() == 7) {
player.sendChat("成功");
Commands.call("summon thaumcraft:cultistcleric ~ ~2 ~ {CustomName:\"谎言护卫\",HandItems:[{Count:1,id:\"contenttweaker:scroll_of_truth_twilightforest\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:10000.0},{Name:generic.attackDamage, Base:10000.0}],Health:10000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:50,permshields:50}}}", player, world, false, true);
return "PASS";
}
}
if((SacredSpringsMatches) == 1) {
if(player.getDimension() == 150) {
player.sendChat("成功");
Commands.call("summon divinerpg:hover_stinger ~ ~2 ~ {CustomName:\"谎言护卫\",HandItems:[{Count:1,id:\"contenttweaker:scroll_of_truth_hator\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:10000.0},{Name:generic.attackDamage, Base:10000.0}],Health:10000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:50,permshields:50}}}", player, world, false, true);
return "PASS";
}
}
if((MagicalForestMatches) == 1) {
if(player.getDimension() == 426) {
player.sendChat("成功");
Commands.call("summon divinerpg:deathcryx ~ ~2 ~ {CustomName:\"谎言护卫\",HandItems:[{Count:1,id:\"contenttweaker:scroll_of_truth_asgard\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:10000.0},{Name:generic.attackDamage, Base:10000.0}],Health:10000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:50,permshields:50}}}", player, world, false, true);
return "PASS";
}
}
player.sendChat("所有群系均不匹配");
return "FAIL";
};
memoryrestorationritual.register();
var sprensummonerfaith = VanillaFactory.createItem("spren_summoner_faith");
sprensummonerfaith.maxStackSize = 16;
sprensummonerfaith.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 190) {
player.sendChat("需位于卡尚");
return "FAIL";
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val OceanBiomeLocations = [[0,0]] as int[][];
// biome to pattern
val OceanBiomeName = "Ancient Cavern" as string;
// get number of matches
val OceanMatches = checkBiomesAtPositions(OceanBiomeName, playerpos, OceanBiomeLocations, world) as int;
if((OceanMatches) == 0) {
player.sendChat("需位于远古神殿(Ancient Cavern)群系");
return "FAIL";
}
if((OceanMatches) == 1) {
Commands.call("summon divinerpg:skythern_golem ~ ~2 ~ {CustomName:\"腐化信仰之灵\",HandItems:[{Count:1,id:\"contenttweaker:shard_of_restored_faith\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:10000.0},{Name:generic.attackDamage, Base:10000.0}],Health:10000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:200,permshields:200}}}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
player.sendChat("需位于远古神殿(Ancient Cavern)群系");
return "FAIL";
};
sprensummonerfaith.register();
var sprensummonerdeath = VanillaFactory.createItem("spren_summoner_death");
sprensummonerdeath.maxStackSize = 16;
sprensummonerdeath.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 190) {
player.sendChat("需位于卡尚");
return "FAIL";
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val OceanBiomeLocations = [[0,0]] as int[][];
// biome to pattern
val OceanBiomeName = "Immortallis" as string;
// get number of matches
val OceanMatches = checkBiomesAtPositions(OceanBiomeName, playerpos, OceanBiomeLocations, world) as int;
if((OceanMatches) == 0) {
player.sendChat("需位于不朽之地(Immortallis)群系");
return "FAIL";
}
if((OceanMatches) == 1) {
Commands.call("summon aoa3:ghostly_night_reaper ~ ~2 ~ {CustomName:\"信仰之灵\",HandItems:[{Count:1,id:\"contenttweaker:shard_of_forgotten_fear_of_death\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:10000.0},{Name:generic.attackDamage, Base:10000.0}],Health:10000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:200,permshields:200}}}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
player.sendChat("需位于不朽之地(Immortallis)群系");
return "FAIL";
};
sprensummonerdeath.register();
var sprensummonerhaste = VanillaFactory.createItem("spren_summoner_haste");
sprensummonerhaste.maxStackSize = 16;
sprensummonerhaste.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 190) {
player.sendChat("需位于卡尚");
return "FAIL";
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val OceanBiomeLocations = [[0,0]] as int[][];
// biome to pattern
val OceanBiomeName = "Greckon" as string;
// get number of matches
val OceanMatches = checkBiomesAtPositions(OceanBiomeName, playerpos, OceanBiomeLocations, world) as int;
if((OceanMatches) == 0) {
player.sendChat("需位于格瑞克(Greckon)群系");
return "FAIL";
}
if((OceanMatches) == 1) {
Commands.call("summon aoa3:ghostly_charger ~ ~2 ~ {CustomName:\"急迫之灵\",HandItems:[{Count:1,id:\"contenttweaker:shard_of_forgiven_lost_time\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:10000.0},{Name:generic.attackDamage, Base:10000.0}],Health:10000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:200,permshields:200}}}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
player.sendChat("需位于格瑞克(Greckon)群系");
return "FAIL";
};
sprensummonerhaste.register();
var sprensummonerblasphemy = VanillaFactory.createItem("spren_summoner_blasphemy");
sprensummonerblasphemy.maxStackSize = 16;
sprensummonerblasphemy.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 190) {
player.sendChat("需位于卡尚");
return "FAIL";
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val OceanBiomeLocations = [[0,0]] as int[][];
// biome to pattern
val OceanBiomeName = "Dustopian Forest" as string;
// get number of matches
val OceanMatches = checkBiomesAtPositions(OceanBiomeName, playerpos, OceanBiomeLocations, world) as int;
if((OceanMatches) == 0) {
player.sendChat("需位于异位森林(Dustopian Forest)群系");
return "FAIL";
}
if((OceanMatches) == 1) {
Commands.call("summon mod_lavacow:grave_robber_ghost ~ ~2 ~ {CustomName:\"亵渎之灵\",HandItems:[{Count:1,id:\"contenttweaker:shard_of_rekindled_heritage\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:10000.0},{Name:generic.attackDamage, Base:10000.0}],Health:10000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:200,permshields:200}}}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
player.sendChat("需位于异位森林(Dustopian Forest)群系");
return "FAIL";
};
sprensummonerblasphemy.register();
var sprensummonerdarkness = VanillaFactory.createItem("spren_summoner_plot");
sprensummonerdarkness.maxStackSize = 16;
sprensummonerdarkness.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 190) {
player.sendChat("需位于卡尚");
return "FAIL";
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val OceanBiomeLocations = [[0,0]] as int[][];
// biome to pattern
val OceanBiomeName = "Outer Lands" as string;
// get number of matches
val OceanMatches = checkBiomesAtPositions(OceanBiomeName, playerpos, OceanBiomeLocations, world) as int;
if((OceanMatches) == 0) {
player.sendChat("需位于外域(Outer Lands)群系");
return "FAIL";
}
if((OceanMatches) == 1) {
Commands.call("summon thaumcraft:eldritchguardian ~ ~2 ~ {CustomName:\"诡谋之灵\",HandItems:[{Count:1,id:\"contenttweaker:shard_of_no_hidden_intentions\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:10000.0},{Name:generic.attackDamage, Base:10000.0}],Health:10000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:200,permshields:200}}}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
player.sendChat("需位于外域(Outer Lands)群系");
return "FAIL";
};
sprensummonerdarkness.register();
var sprensummonerinjury = VanillaFactory.createItem("spren_summoner_injury");
sprensummonerinjury.maxStackSize = 16;
sprensummonerinjury.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 190) {
player.sendChat("需位于卡尚");
return "FAIL";
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val OceanBiomeLocations = [[0,0]] as int[][];
// biome to pattern
val OceanBiomeName = "Spooky Forest" as string;
// get number of matches
val OceanMatches = checkBiomesAtPositions(OceanBiomeName, playerpos, OceanBiomeLocations, world) as int;
if((OceanMatches) == 0) {
player.sendChat("需位于幽魂森林(Spooky Forest)群系");
return "FAIL";
}
if((OceanMatches) == 1) {
Commands.call("summon aoa3:ghostly_bugeye ~ ~2 ~ {CustomName:\"创痕之灵\",HandItems:[{Count:1,id:\"contenttweaker:shard_of_physical_healing\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:10000.0},{Name:generic.attackDamage, Base:10000.0}],Health:10000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:200,permshields:200}}}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
player.sendChat("需位于幽魂森林(Spooky Forest)群系");
return "FAIL";
};
sprensummonerinjury.register();
var sprensummonerhelplessness = VanillaFactory.createItem("spren_summoner_inadequacy");
sprensummonerhelplessness.maxStackSize = 16;
sprensummonerhelplessness.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 190) {
player.sendChat("需位于卡尚");
return "FAIL";
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val OceanBiomeLocations = [[0,0]] as int[][];
// biome to pattern
val OceanBiomeName = "Ocean Spires" as string;
// get number of matches
val OceanMatches = checkBiomesAtPositions(OceanBiomeName, playerpos, OceanBiomeLocations, world) as int;
if((OceanMatches) == 0) {
player.sendChat("需位于海上尖塔(Ocean Spires)群系");
return "FAIL";
}
if((OceanMatches) == 1) {
Commands.call("summon mod_lavacow:ghost_swarmer ~ ~2 ~ {CustomName:\"自轻之灵\",HandItems:[{Count:1,id:\"contenttweaker:shard_of_realized_worth\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:10000.0},{Name:generic.attackDamage, Base:10000.0}],Health:10000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:200,permshields:200}}}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
player.sendChat("需位于海上尖塔(Ocean Spires)群系");
return "FAIL";
};
sprensummonerhelplessness.register();
var sprensummonerloneliness = VanillaFactory.createItem("spren_summoner_loneliness");
sprensummonerloneliness.maxStackSize = 16;
sprensummonerloneliness.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 190) {
player.sendChat("需位于卡尚");
return "FAIL";
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val OceanBiomeLocations = [[0,0]] as int[][];
// biome to pattern
val OceanBiomeName = "Bog" as string;
// get number of matches
val OceanMatches = checkBiomesAtPositions(OceanBiomeName, playerpos, OceanBiomeLocations, world) as int;
if((OceanMatches) == 0) {
player.sendChat("需位于泥塘(Bog)群系");
return "FAIL";
}
if((OceanMatches) == 1) {
Commands.call("summon aoa3:ghostly_cyclops ~ ~2 ~ {CustomName:\"孤独之灵\",HandItems:[{Count:1,id:\"contenttweaker:shard_of_restored_relationship\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:10000.0},{Name:generic.attackDamage, Base:10000.0}],Health:10000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:200,permshields:200}}}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
player.sendChat("需位于泥塘(Bog)群系");
return "FAIL";
};
sprensummonerloneliness.register();
var sprensummonercontrol = VanillaFactory.createItem("spren_summoner_control");
sprensummonercontrol.maxStackSize = 16;
sprensummonercontrol.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 190) {
player.sendChat("需位于卡尚");
return "FAIL";
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val OceanBiomeLocations = [[0,0]] as int[][];
// biome to pattern
val OceanBiomeName = "Mortum" as string;
// get number of matches
val OceanMatches = checkBiomesAtPositions(OceanBiomeName, playerpos, OceanBiomeLocations, world) as int;
if((OceanMatches) == 0) {
player.sendChat("需位于死域(Mortum)群系");
return "FAIL";
}
if((OceanMatches) == 1) {
Commands.call("summon abyssalcraft:dragonminion ~ ~2 ~ {CustomName:\"支配之灵\",HandItems:[{Count:1,id:\"contenttweaker:shard_of_surrender\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:10000.0},{Name:generic.attackDamage, Base:10000.0}],Health:10000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:200,permshields:200}}}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
player.sendChat("需位于死域(Mortum)群系");
return "FAIL";
};
sprensummonercontrol.register();
var sprensummonerprepotence = VanillaFactory.createItem("spren_summoner_prepotence");
sprensummonerprepotence.maxStackSize = 16;
sprensummonerprepotence.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 190) {
player.sendChat("需位于卡尚");
return "FAIL";
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val OceanBiomeLocations = [[0,0]] as int[][];
// biome to pattern
val OceanBiomeName = "Shyrelands" as string;
// get number of matches
val OceanMatches = checkBiomesAtPositions(OceanBiomeName, playerpos, OceanBiomeLocations, world) as int;
if((OceanMatches) == 0) {
player.sendChat("需位于塞尔瑞(Shyrelands)群系");
return "FAIL";
}
if((OceanMatches) == 1) {
Commands.call("summon aoa3:spectral_wizard ~ ~2 ~ {CustomName:\"霸权之灵\",HandItems:[{Count:1,id:\"contenttweaker:shard_of_individual_freedom\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:10000.0},{Name:generic.attackDamage, Base:10000.0}],Health:10000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:200,permshields:200}}}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
player.sendChat("需位于塞尔瑞(Shyrelands)群系");
return "FAIL";
};
sprensummonerprepotence.register();
var sprensummonergluttony = VanillaFactory.createItem("spren_summoner_gluttony");
sprensummonergluttony.maxStackSize = 16;
sprensummonergluttony.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 190) {
player.sendChat("需位于卡尚");
return "FAIL";
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val OceanBiomeLocations = [[0,0]] as int[][];
// biome to pattern
val OceanBiomeName = "Nuclear Wasteland" as string;
// get number of matches
val OceanMatches = checkBiomesAtPositions(OceanBiomeName, playerpos, OceanBiomeLocations, world) as int;
if((OceanMatches) == 0) {
player.sendChat("需位于核泄漏之地(Nuclear Wasteland)群系");
return "FAIL";
}
if((OceanMatches) == 1) {
Commands.call("summon mod_lavacow:soulworm ~ ~2 ~ {CustomName:\"暴食之灵\",HandItems:[{Count:1,id:\"contenttweaker:shard_of_controlled_gluttony\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:1000000.0},{Name:generic.attackDamage, Base:10000.0}],Health:1000000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:200,permshields:200}}}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
player.sendChat("需位于核泄漏之地(Nuclear Wasteland)群系");
return "FAIL";
};
sprensummonergluttony.register();
var sprensummonerarrogance = VanillaFactory.createItem("spren_summoner_arrogance");
sprensummonerarrogance.maxStackSize = 16;
sprensummonerarrogance.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 190) {
player.sendChat("需位于卡尚");
return "FAIL";
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val OceanBiomeLocations = [[0,0]] as int[][];
// biome to pattern
val OceanBiomeName = "Storage Cell" as string;
// get number of matches
val OceanMatches = checkBiomesAtPositions(OceanBiomeName, playerpos, OceanBiomeLocations, world) as int;
if((OceanMatches) == 0) {
player.sendChat("需位于AE2Storage Cell)群系");
return "FAIL";
}
if((OceanMatches) == 1) {
Commands.call("summon divinerpg:rainbour ~ ~2 ~ {CustomName:\"矜狂之灵\",HandItems:[{Count:1,id:\"contenttweaker:shard_of_humble_education\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:1000000.0},{Name:generic.attackDamage, Base:10000.0}],Health:1000000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:200,permshields:200}}}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
player.sendChat("需位于AE2Storage Cell)群系");
return "FAIL";
};
sprensummonerarrogance.register();
var oathoftheundeadlords = VanillaFactory.createItem("oath_of_the_seven_undead_lords");
oathoftheundeadlords.maxStackSize = 16;
oathoftheundeadlords.itemRightClick = function(stack, world, player, hand) {
if(world.remote) {
return "FAIL";
}
// check if player is in right dimension
if(player.getDimension() != 193) {
if(player.getDimension() != 192) {
player.sendChat("“需”位于争竞界");
return "FAIL";
}
}
// obtain position under player
var playerpos = player.position as crafttweaker.util.Position3f;
// locations to place biomes
val IromineBiomeLocations = [[0,0]] as int[][];
val BoreanBiomeLocations = [[0,0]] as int[][];
val CeleveBiomeLocations = [[0,0]] as int[][];
val RunandorBiomeLocations = [[0,0]] as int[][];
val BarathosBiomeLocations = [[0,0]] as int[][];
val MysteriumBiomeLocations = [[0,0]] as int[][];
val IcespikesBiomeLocations = [[0,0]] as int[][];
val OuterLandsBiomeLocations = [[0,0]] as int[][];
// biome to pattern
val IromineBiomeName = "Iromine" as string;
val BoreanBiomeName = "L'Borean Ponds" as string;
val CeleveBiomeName = "Celeve" as string;
val RunandorBiomeName = "Runandor" as string;
val BarathosBiomeName = "Barathos" as string;
val MysteriumBiomeName = "Mysterium" as string;
val IcespikesBiomeName = "Ice Plains Spikes" as string;
val OuterlandsBiomeName = "Outer Lands" as string;
// get number of matches
val IromineMatches = checkBiomesAtPositions(IromineBiomeName, playerpos, IromineBiomeLocations, world) as int;
val BoreanMatches = checkBiomesAtPositions(BoreanBiomeName, playerpos, BoreanBiomeLocations, world) as int;
val CeleveMatches = checkBiomesAtPositions(CeleveBiomeName, playerpos, CeleveBiomeLocations, world) as int;
val RunandorMatches = checkBiomesAtPositions(RunandorBiomeName, playerpos, RunandorBiomeLocations, world) as int;
val BarathosMatches = checkBiomesAtPositions(BarathosBiomeName, playerpos, BarathosBiomeLocations, world) as int;
val MysteriumMatches = checkBiomesAtPositions(MysteriumBiomeName, playerpos, MysteriumBiomeLocations, world) as int;
val IcespikesMatches = checkBiomesAtPositions(IcespikesBiomeName, playerpos, IcespikesBiomeLocations, world) as int;
val OuterLandsMatches = checkBiomesAtPositions(OuterlandsBiomeName, playerpos, OuterLandsBiomeLocations, world) as int;
if((OuterLandsMatches) == 1) {
var pos3 = player.position.asPosition3f();
pos3.x = pos3.x;
pos3.y = pos3.y - 1;
pos3.z = pos3.z;
var blockPos3 = pos3.asBlockPos();
var blockState3 = world.getBlock(blockPos3).definition.id as string;
if(blockState3 != "contenttweaker:stone_of_the_dying_star") {
player.sendChat("你似乎摸到了一些门道,但还缺了最关键的一环");
return "FAIL";
}
Commands.call("summon villager ~ ~3 ~ {Invulnerable:1, CustomName:\"群星收割者\",Offers:{Recipes:[{buy:{id:\"botania:rune\",Damage:10,Count:32},sell:{id:\"contenttweaker:gem_of_the_dying_constellation\",Count:1},rewardExp:0b,maxUses:9999999}]},Profession:2,Career:1,CareerLevel:3,ActiveEffects:[{Id:24,Amplifier:0,Duration:999999},{Id:14,Amplifier:0,Duration:999999}]}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
if((IromineMatches) == 1) {
Commands.call("summon thaumcraft:cultistcleric ~ ~2 ~ {CustomName:\"色欲之主\",HandItems:[{Count:1,id:\"contenttweaker:respect_of_the_lord_of_lust\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:1000000.0},{Name:generic.attackDamage, Base:1000000.0}],Health:1000000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:400,permshields:400}},ArmorItems:[{Count:1,id:\"avaritia:infinity_boots\"},{Count:1,id:\"avaritia:infinity_pants\"},{Count:1,id:\"avaritia:infinity_chestplate\"},{Count:1,id:\"avaritia:infinity_helmet\"}]}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
if((BoreanMatches) == 1) {
Commands.call("summon thaumcraft:cultistcleric ~ ~2 ~ {CustomName:\"傲慢之主\",HandItems:[{Count:1,id:\"contenttweaker:respect_of_the_lord_of_pride\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:1000000.0},{Name:generic.attackDamage, Base:1000000.0}],Health:1000000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:400,permshields:400}},ArmorItems:[{Count:1,id:\"avaritia:infinity_boots\"},{Count:1,id:\"avaritia:infinity_pants\"},{Count:1,id:\"avaritia:infinity_chestplate\"},{Count:1,id:\"avaritia:infinity_helmet\"}]}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
if((CeleveMatches) == 1) {
Commands.call("summon thaumcraft:cultistcleric ~ ~2 ~ {CustomName:\"嫉妒之主\",HandItems:[{Count:1,id:\"contenttweaker:respect_of_the_lord_of_envy\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:1000000.0},{Name:generic.attackDamage, Base:1000000.0}],Health:1000000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:400,permshields:400}},ArmorItems:[{Count:1,id:\"avaritia:infinity_boots\"},{Count:1,id:\"avaritia:infinity_pants\"},{Count:1,id:\"avaritia:infinity_chestplate\"},{Count:1,id:\"avaritia:infinity_helmet\"}]}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
if((RunandorMatches) == 1) {
Commands.call("summon thaumcraft:cultistcleric ~ ~2 ~ {CustomName:\"暴怒之主\",HandItems:[{Count:1,id:\"contenttweaker:respect_of_the_lord_of_wrath\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:1000000.0},{Name:generic.attackDamage, Base:1000000.0}],Health:1000000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:400,permshields:400}},ArmorItems:[{Count:1,id:\"avaritia:infinity_boots\"},{Count:1,id:\"avaritia:infinity_pants\"},{Count:1,id:\"avaritia:infinity_chestplate\"},{Count:1,id:\"avaritia:infinity_helmet\"}]}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
if((BarathosMatches) == 1) {
Commands.call("summon Item ~ ~10 ~ {Item:{id:\"contenttweaker:oath_of_the_lord_of_gluttony\",Count:1b}}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
if((MysteriumMatches) == 1) {
Commands.call("summon thaumcraft:cultistcleric ~ ~2 ~ {CustomName:\"贪婪之主\",HandItems:[{Count:1,id:\"contenttweaker:respect_of_the_lord_of_greed\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:1000000.0},{Name:generic.attackDamage, Base:1000000.0}],Health:1000000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:400,permshields:400}},ArmorItems:[{Count:1,id:\"avaritia:infinity_boots\"},{Count:1,id:\"avaritia:infinity_pants\"},{Count:1,id:\"avaritia:infinity_chestplate\"},{Count:1,id:\"avaritia:infinity_helmet\"}]}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
if((IcespikesMatches) == 1) {
Commands.call("summon thaumcraft:cultistcleric ~ ~2 ~ {CustomName:\"怠惰之主\",HandItems:[{Count:1,id:\"contenttweaker:respect_of_the_lord_of_sloth\"},{}],HandDropChances:[1.0f,0.0f],Attributes:[{Name:generic.maxHealth, Base:1000000.0},{Name:generic.attackDamage, Base:1000000.0}],Health:1000000f,ForgeCaps:{\"twilightforest:cap_shield\":{tempshields:400,permshields:400}},ArmorItems:[{Count:1,id:\"avaritia:infinity_boots\"},{Count:1,id:\"avaritia:infinity_pants\"},{Count:1,id:\"avaritia:infinity_chestplate\"},{Count:1,id:\"avaritia:infinity_helmet\"}]}", player, world, false, true);
stack.shrink(1);
return "PASS";
}
player.sendChat("没想到你居然能收到这条消息,挺厉害的嘛,为什么会想着更改争竞界的生物群系?");
player.sendChat("嗯,这是给你的好东西");
Commands.call("summon Item ~ ~10 ~ {Item:{id:\"contenttweaker:fading_wool\",Count:1b}}", player, world, false, true);
return "FAIL";
};
oathoftheundeadlords.register();