本篇教程由作者设定使用 CC BY-NC-SA 协议。
首先声明本教程所有解释权归作者所有,本教程诞生的原因为刀哥要)没错,仅此而已
以下每个一级标题均称为该模块,请自行对应
Baubles Integration(饰品)
该模块部分依赖于COT存在
Player Expansion(玩家扩展)
Method: baublesInventory
返回这个玩家的IBaublesInventory;
Method: isBaubleEquipped(IItemStack bauble)
返回饰品的插槽号,若未寻找到则返回-1
IBaublesInventory(饰品栏背包)
导包
import mods.ctintegration.baubles.IBaubleInventory;
Method: isItemValidForSlot(int slot, IItemStack item, IEntityLivingBase living)
返回布尔值,作用为检测某个实体的某个槽位是否是某个饰品
Method: isItemValid(int slot, IItemStack item)
返回布尔值,作用为某个槽位是否是某个饰品
Method: getSlotCount()
返回int,作用为获取插槽数量(饰品栏添加了7个,若有其他模组添加了,则获取的数量会发生变化)
Method: getStackInSlot(int slot)
返回IItemStack,作用为获取某个插槽的饰品
Creating a bauble item(自定义饰品)
需要cot
BaubleItemRepresentation扩展了ItemRepresentation,因此所有可用于contenttweaker物品构建的方法也可用于它。
提供了以下方法:
方法名称 | 函数的表示 | 描述 |
String baubleType | 无 | 必须是“AMULET”护身符、“RING”指环、“BELT”腰带、“TRINKET”任意、“HEAD”头部、“BODY”身体、“CHARM”坠饰之一。如果未设置,则默认为TRINKET |
BaubleEventHandler.CanEquip canEquip | function(IItemStack bauble, IEntityLivingBase wearer) | 确定饰品是否可以装备 |
BaubleEventHandler.CanUnequip canUnequip | function(IItemStack bauble, IEntityLivingBase wearer) | 确定饰品是否不可以装备 |
BaubleEventHandler.OnWornTick onWornTick | function(IItemStack bauble, IEntityLivingBase wearer) | 佩戴饰品时每t调用 |
BaubleEventHandler.OnEquipped onEquipped | function(IItemStack bauble, IEntityLivingBase wearer) | 当饰品装备时调用(注意只会触发一次!) |
BaubleEventHandler.OnUnequipped onUnequipped | function(IItemStack bauble, IEntityLivingBase wearer) | 当饰品未装备时调用(也就是从饰品栏中拿下来)(注意只会触发一次!) |
BaubleEventHandler.WillAutoSync willAutoSync | function(IItemStack bauble, IEntityLivingBase wearer) | 暂且未知 |
BaubleEventHandler.GetBaubleType getBaubleType | function(IItemStack bauble) | 注意:这优先于 baubleType 属性,如果设置了这个属性,baubleType 将被忽略!(简称没啥用) |
事例
事实上跟物品没啥区别,毕竟饰品也是物品
#loader contenttweaker
import mods.contenttweaker.VanillaFactory;
import mods.ctintegration.baubles.IBaubleInventory;
import crafttweaker.player.IPlayer;
var baubleTest = VanillaFactory.createBaubleItem("test_bauble");
baubleTest.rarity = "rare";//设置物品珍惜度
baubleTest.onWornTick = function(bauble, wearer) {//佩戴饰品时每t调用
if(wearer instanceof IPlayer) {
var player as IPlayer = wearer;
player.xp + 1;
}
};
baubleTest.onUnequipped = function(bauble, wearer) {//当饰品未装备时调用(也就是从饰品栏中拿下来)
if(wearer instanceof IPlayer) {
var player as IPlayer = wearer;
player.xp - 1;
if(player.baublesInventory.getStackInSlot(5).definition.id == "asasasa:lalalala"){//判断其他槽位的饰品
player.xp + 5;//能做出类似穿戴两个特定饰品,获得更强效果
}
}
};
baubleTest.onEquipped = function(bauble, wearer) {//当饰品装备时调用
if(wearer instanceof IPlayer) {
var player as IPlayer = wearer;
player.xp + 1;
}
};
baubleTest.baubleType = "TRINKET";//饰品类型
baubleTest.register();
FTBMoney Integration(ftbq任务)
Player Expansion(玩家扩展)
获取 | 返回类型 | 设置 | 设置参数 | 描述 |
ftbMoney | long | ftbMoney | long | 获取玩家的ftb货币 |
事例
print(player.ftbMoney);//就打印货币的数量,我相信很好理解
BloodMagic Integration(血魔法2)
Soul Network(意志网络/灵魂网络)
使用soulNetwork以在IPlayer上调用
方法 | 描述 |
public void add(int amount, int maximum) | 增加意志(在地狱魂石) |
public void add(ITextComponent description, int amount, int maximum) | 增加意志(在地狱魂石) |
public void syphon(ITextComponent description, int amount, @Optional boolean skipEvent) | 吸取意志 |
public void hurtPlayer(IPlayer player, float syphon) | 不懂 |
public IPlayer getCachedPlayer() | 不懂 |
public void clear() | 删除所有意志 |
获取 | 返回类型 | 设置 | 设置参数 | 描述 |
orbTier | int | orbTier | int | 无 |
currentEssence | int | currentEssence | int | LP(气血宝珠里的) |
事例
player.soulNetwork.currentEssence -= 5;//玩家的LP减5
player.soulNetwork.clear() -= 5;//玩家的所有意志清零
ProjectE Integration(等价交换)
导包
import mods.ctintegration.projecte.EMCManager;
Methods
方法 | 描述 |
static void mapEMC() | ProjectE 通常在服务器启动时映射 emc 值,这比 CraftTweaker 注册其配方时要晚得多。如果要在事件之外获取 EMC 值,则必须首先调用此方法以强制 ProjectE 映射 EMC 值。否则,每件物品将获得 0 EMC。确保不要多次使用它,因为映射 EMC 需要很长时间,尤其是在大型模组包上。 |
static long getEMC(IItemStack item) | 获取物品的EMC。如果要在事件之外使用它,则必须先调用mapEMC。 |
static long getEMCSellValue(IItemStack item) | 获取物品的卖出的EMC,具体取决于 ProjectE 配置。也与上面一样,请先调用 mapEMC。 |
static boolean isEMCSet(IItemStack item) | 如果已设置物品的 EMC 值,则返回true,反之false |
static void setEMC(IItemStack item, long value) | 设置项目的 EMC。注意: 如果在设置同一物品的EMC值后获得该值,则仍会获得旧值,除非您在设置该物品的EMC之后和获取之前再次调用 mapEMC()。 |
static void setEMC(IIngredient ingredient, long value) | 为IIngredient中的所有项目设置 EMC |
IItemStack expansion
方法 | 返回类型 | 设置 | 设置参数 | 描述 |
emc | long | emc | long | 买多少 |
emcSellValue | long | - | - | 卖多少 |
Player Expansion(玩家扩展)
获取 | 返回类型 | 设置 | 设置参数 | 描述 |
personalEMC | long | personalEMC | long | 获取和设置玩家的EMC |
事例
1.
print("emc: " + <minecraft:gold_ingot>.emc); //打印 0
<minecraft:gold_ingot>.emc = 6666;
print("emc: " + <minecraft:gold_ingot>.emc); //打印 0,但会在进入世界的时候将EMC设置为6666
2.
EMCManager.mapEMC();
print("emc: " + <minecraft:gold_ingot>.emc); //打印 2048,因为原本就是2048
<minecraft:gold_ingot>.emc = 6666;
print("emc: " + <minecraft:gold_ingot>.emc); //打印 2048,但会在进入世界的时候将EMC设置为6666
3.
EMCManager.mapEMC();
print("emc: " + <minecraft:gold_ingot>.emc); //打印 2048,因为原本就是2048
<minecraft:gold_ingot>.emc = 6666;
EMCManager.mapEMC(); //记住不要用太多!!!
print("emc: " + <minecraft:gold_ingot>.emc); //打印 6666
ScalingHealth Integration(难度模组扩展)
导包
import mods.ctintegration.scalinghealth.DifficultyManager;
Methods
方法 | 描述 |
static void setDifficulty(IPlayer player, double value) | 为玩家设置难度 |
static void addDifficulty(IPlayer player, double value) | 为玩家增加难度 |
static void addDifficulty(IPlayer player, double value, boolean affectWorldDifficulty) | 为玩家设置难度,布尔值决定是否影响世界难度 |
static double getDifficulty(IPlayer player) | 获取玩家难度 |
static double getWorldDifficulty(IWorld world) | 获取世界难度 |
static void setWorldDifficulty(IWorld world, double value) | 设置世界难度 |
static void addWorldDifficulty(IWorld world, double value) | 增加世界难度 |
static IDate getLastTimePlayed(IPlayer player) | 获取玩家日期 |
static float getMaxHealth(IPlayer player) | 获取玩家最大生命 |
static void setMaxHealth(IPlayer player, float value) | 设置玩家最大生命 |
static void addMaxHealth(IPlayer player, float value) | 增加玩家最大生命 |
static double getAreaDifficulty(IPlayer player) | 获取区块难度 |
static double getAreaDifficulty(IWorld world, IBlockPos pos) | 获取区块难度 |
Player Expansion(玩家扩展)
获取 | 返回类型 | 设置 | 设置参数 | 描述 |
scalingHealthMaxHealth | double | scalingHealthMaxHealth | double | 获取或设定玩家的最大生命 |
difficulty | double | difficulty | double | 获取或设定玩家的难度 |
areaDifficulty | double | - | - | 获取玩家所在区块的难度 |
lastTimePlayed | double | - | - | 获取玩家日期 |
IWorld Expansion(世界扩展)
获取 | 返回类型 | 设置 | 设置参数 | 描述 |
worldDifficulty | double | worldDifficulty | double | 世界难度 |
Energy Storage(储能)
本接口允许您操作能量(FE或RF)存储的物品。 您可以通过调用IItemStack#energy来获取它的实例。在执行此操作之前,请务必检查它是否是储能!
方法 | 描述 |
int receiveEnergy(int maxReceive, @Optional boolean simulate) | 为存储的物品增加能量。返回增加的能量的量(比如你给A这个物品增加100RF,那么也会返回100)。 |
int extractEnergy(int maxExtract, @Optional boolean simulate) | 从存储的物品中减少能量。返回已移除的能量的量(比如你给B这个物品减少10086RF,那么也会返回10086)。 |
int getEnergyStored() | 返回当前存储的物品的能量的量。好绕。。。 |
int getMaxEnergyStored() | 返回当前存储的物品的最大能量的量。 |
boolean canExtract() | 如果此存储的物品可以提取能量,则返回true,反之false |
boolean canReceive() | 如果此存储的物品可以接收能量,则返回true,反之false |
Vanilla Expansion(原版扩展)
Player Expansion(玩家扩展)
方法 | 描述 |
void addExperience(int amount) | 增加经验点数,而不是等级 |
void removeExperience(int amount) | 移除经验点数 |
int getTotalXP() | 返回玩家拥有的总经验值 |
void playSound(String soundResourceLocation, float volume, float pitch) | 注意:客户端和服务器播放器具有不同的行为。有关详细信息,请参阅forge如何处理声音事件。检查世界是否为服务端,以确定它在哪一边播放。 |
sendPlaySoundPacket(String soundResourceLocation, String soundCategory, Position3f pos, float volume, float pitch) | 使玩家在其客户端上播放声音 |
boolean isPlayerMP() | 如果 IPlayer 的内部对象是 EntityPlayerMP(服务端玩家)的实例,则返回 true。 |
IAdvancementProgress getAdvancementProgress(IAdvancement advancement) | 获取升级的进度。请注意,玩家必须是 EntityPlayerMP 的实例,否则将返回 null。 |
EntityPlayerMP保证!world.remote就行了
IWorld Expansion(世界扩展)
方法 | 描述 |
void setOrCreateGameRule(String key, String value) | 有关更多游戏规则操作,请安装CraftTweaker Utils,这只是其中缺少的功能 |
void playSound(String soundResourceLocation, String soundCategory, Position3f location, float volume, float pitch, @Optional boolean distanceDelay) | 播放声音 |
IItemStack Expansion(物品扩展)
方法 | 描述 |
IData asData(IItemStack itemStack) (Also a ZenCaster) | 将 ItemStack 序列化为其 NBT 形式 |
IItemStack fromData(IData data) | 从 NBT 反序列化 |
boolean isEnergyStorage(IItemStack itemStack) | 如果物品能够存储能量,则返回 true |
获取 | 返回类型 | 描述 |
energy | IEnergyStorage | 从项目堆栈中获取 IEnergyStorage 实例。如果物品不是能量容器,将产生错误。 |
IServer Expansion(服务器扩展)
获取 | 返回类型 | 描述 |
players | IPlayer[] | 返回服务器上的所有玩家 |
playerCount | int | 返回服务器上的玩家数量 |
maxPlayers | int | 返回服务器的最大玩家数量 |
后记
我尽量不断更,缓慢的补全