Add modder facing API for Villager Career level trades. Ref: #2854
This commit is contained in:
parent
5445f96327
commit
d5b93bf262
2 changed files with 51 additions and 9 deletions
|
@ -120,16 +120,24 @@
|
|||
this.field_175562_bw = 1;
|
||||
}
|
||||
|
||||
@@ -552,7 +596,7 @@
|
||||
@@ -552,13 +596,11 @@
|
||||
|
||||
int i = this.field_175563_bv - 1;
|
||||
int j = this.field_175562_bw - 1;
|
||||
- EntityVillager.ITradeList[][] aentityvillager$itradelist1 = aentityvillager$itradelist[i];
|
||||
+ EntityVillager.ITradeList[][] aentityvillager$itradelist1 = this.getProfessionForge().getCareer(i).getTrades();
|
||||
+ java.util.List<EntityVillager.ITradeList> trades = this.getProfessionForge().getCareer(i).getTrades(j);
|
||||
|
||||
if (j >= 0 && j < aentityvillager$itradelist1.length)
|
||||
- if (j >= 0 && j < aentityvillager$itradelist1.length)
|
||||
+ if (trades != null)
|
||||
{
|
||||
@@ -647,9 +691,14 @@
|
||||
- EntityVillager.ITradeList[] aentityvillager$itradelist2 = aentityvillager$itradelist1[j];
|
||||
-
|
||||
- for (EntityVillager.ITradeList entityvillager$itradelist : aentityvillager$itradelist2)
|
||||
+ for (EntityVillager.ITradeList entityvillager$itradelist : trades)
|
||||
{
|
||||
entityvillager$itradelist.func_179401_a(this.field_70963_i, this.field_70146_Z);
|
||||
}
|
||||
@@ -647,9 +689,14 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -145,7 +153,7 @@
|
|||
textcomponenttranslation.func_150256_b().func_150209_a(this.func_174823_aP());
|
||||
textcomponenttranslation.func_150256_b().func_179989_a(this.func_110124_au().toString());
|
||||
|
||||
@@ -708,7 +757,7 @@
|
||||
@@ -708,7 +755,7 @@
|
||||
public IEntityLivingData func_180482_a(DifficultyInstance p_180482_1_, IEntityLivingData p_180482_2_)
|
||||
{
|
||||
p_180482_2_ = super.func_180482_a(p_180482_1_, p_180482_2_);
|
||||
|
|
|
@ -12,11 +12,14 @@
|
|||
|
||||
package net.minecraftforge.fml.common.registry;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import org.apache.commons.lang3.Validate;
|
||||
|
@ -224,7 +227,8 @@ public class VillagerRegistry
|
|||
private VillagerProfession profession;
|
||||
private String name;
|
||||
private int id;
|
||||
private ITradeList[][] trades;
|
||||
private List<List<ITradeList>> trades = Lists.newArrayList();
|
||||
private List<List<ITradeList>> imm = Lists.newArrayList();
|
||||
|
||||
public VillagerCareer(VillagerProfession parent, String name)
|
||||
{
|
||||
|
@ -238,14 +242,44 @@ public class VillagerRegistry
|
|||
return this.name;
|
||||
}
|
||||
|
||||
public ITradeList[][] getTrades()
|
||||
|
||||
public VillagerCareer addTrade(int level, ITradeList... trades)
|
||||
{
|
||||
return this.trades;
|
||||
if (level <= 0)
|
||||
throw new IllegalArgumentException("Levels start at 1");
|
||||
|
||||
List<ITradeList> levelTrades = level <= this.trades.size() ? this.trades.get(level - 1) : null;
|
||||
if (levelTrades == null)
|
||||
{
|
||||
List<ITradeList> tmp = null;
|
||||
while (this.trades.size() < level)
|
||||
{
|
||||
tmp = Lists.newArrayList();
|
||||
this.trades.add(tmp);
|
||||
this.imm.add(Collections.unmodifiableList(tmp));
|
||||
}
|
||||
levelTrades = tmp;
|
||||
}
|
||||
if (levelTrades == null) //Not sure how this could happen, but screw it
|
||||
{
|
||||
levelTrades = Lists.newArrayList();
|
||||
this.trades.set(level - 1, levelTrades);
|
||||
this.imm.set(level - 1, Collections.unmodifiableList(levelTrades));
|
||||
}
|
||||
for (ITradeList t : trades)
|
||||
levelTrades.add(t);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public List<ITradeList> getTrades(int level)
|
||||
{
|
||||
return level >= 0 && level < this.imm.size() ? this.imm.get(level) : null;
|
||||
}
|
||||
private VillagerCareer init(EntityVillager.ITradeList[][] trades)
|
||||
{
|
||||
this.trades = trades;
|
||||
for (int x = 0; x < trades.length; x++)
|
||||
this.trades.add(Lists.newArrayList(trades[x]));
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue