Skip to content

Commit 029a58b

Browse files
authored
Add files via upload
1 parent dd24d15 commit 029a58b

File tree

12 files changed

+129
-69
lines changed

12 files changed

+129
-69
lines changed

examples/trademachine.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
var TraderTweaker = libcd.require("Tradesmen.TraderTweaker");
2+
3+
TraderTweaker.addTrader("tradesmen:trade_machine",
4+
TraderTweaker.makeTrader()
5+
.texture("minecraft:textures/entity/wandering_trader.png")
6+
.setTrades([[
7+
TraderTweaker.makeTrade().randomPrice(3,7).randomSaleItem().count(3).maxUses(3),
8+
TraderTweaker.makeTrade().randomPrice(3,7).randomSaleItem().count(3).maxUses(3),
9+
TraderTweaker.makeTrade().randomPrice(3,7).randomSaleItem().count(3).maxUses(3),
10+
TraderTweaker.makeTrade().randomPrice(3,7).randomSaleItem().count(3).maxUses(3),
11+
TraderTweaker.makeTrade().randomPrice(3,7).randomSaleItem().count(3).maxUses(3)
12+
],
13+
[
14+
TraderTweaker.makeTrade().item("minecraft:emerald").randomCount(1,10).randomPrice(1,10).randomPriceItem().maxUses(3),
15+
TraderTweaker.makeTrade().item("minecraft:emerald").randomCount(1,10).randomPrice(1,10).randomPriceItem().maxUses(3),
16+
TraderTweaker.makeTrade().item("minecraft:emerald").randomCount(1,10).randomPrice(1,10).randomPriceItem().maxUses(3),
17+
TraderTweaker.makeTrade().item("minecraft:emerald").randomCount(1,10).randomPrice(1,10).randomPriceItem().maxUses(3),
18+
TraderTweaker.makeTrade().item("minecraft:emerald").randomCount(1,10).randomPrice(1,10).randomPriceItem().maxUses(3)
19+
]
20+
],[5,5])
21+
);

src/main/java/mod/linguardium/tradesmen/api/Trader.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package mod.linguardium.tradesmen.api;
22

33
import com.google.common.collect.ImmutableMap;
4-
import com.google.common.collect.Lists;
54
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
65
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
76
import mod.linguardium.tradesmen.api.objects.ParseColor;
87
import mod.linguardium.tradesmen.api.objects.tradeObject;
9-
import net.minecraft.client.util.math.Vector3f;
108
import net.minecraft.text.LiteralText;
119
import net.minecraft.text.Text;
1210
import net.minecraft.text.TranslatableText;
@@ -37,12 +35,7 @@ private static Int2ObjectMap<TradeOffers.Factory[]> copyToFastUtilMap(ImmutableM
3735
public Boolean isTiered = false;
3836
public List<String> allowedWorlds = new ArrayList<>();
3937
public boolean godMode;
40-
/*public Trader(String name, String TextureId, String clothesTextureId, Vector3f clothesColor, String hatTextureId, Vector3f hatColor, String animal, List<List<TradeOffers.Factory>> trades) {
41-
this(name,clothesTextureId,clothesTextureId,clothesColor,hatTextureId,hatColor,animal,trades, Lists.newArrayList(3,1),false);
42-
}
43-
public Trader(String name, String TextureId, String clothesTextureId, Vector3f clothesColor, String hatTextureId, Vector3f hatColor, String animal, List<List<TradeOffers.Factory>> trades, List<Integer> tradeCount) {
44-
this(name,clothesTextureId,clothesTextureId,clothesColor,hatTextureId,hatColor,animal,trades, tradeCount,false);
45-
}*/
38+
4639

4740
public Trader(String name, String TextureId, String clothesTextureId, float[] clothesColor, String hatTextureId, float[] hatColor, String animal, List<List<TradeOffers.Factory>> trades, List<Integer> tradeCount, Boolean tiered) {
4841
this.name = new TranslatableText(name);
@@ -155,4 +148,6 @@ private void assignTrades(List<List<TradeOffers.Factory>> trades, List<Integer>
155148
/* public void setCounts(List<Integer> tradeCounts) {
156149
this.tierTradeCount=tradeCounts;
157150
}*/
151+
152+
158153
}

src/main/java/mod/linguardium/tradesmen/api/TraderTweaker.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,13 @@
44
import blue.endless.jankson.JsonObject;
55
import io.github.cottonmc.libcd.api.CDSyntaxError;
66
import io.github.cottonmc.libcd.api.tweaker.Tweaker;
7-
import jdk.internal.jline.internal.Nullable;
87
import mod.linguardium.tradesmen.Tradesmen;
98
import mod.linguardium.tradesmen.api.objects.tradeObject;
10-
import net.minecraft.client.util.math.Vector3f;
119
import net.minecraft.resource.ResourceManager;
12-
import net.minecraft.resource.ResourceNotFoundException;
13-
import net.minecraft.village.TradeOffers;
1410
import org.apache.logging.log4j.Level;
1511

16-
import java.util.ArrayList;
17-
import java.util.Collections;
18-
import java.util.List;
1912
import java.util.concurrent.Executor;
2013

21-
import static mod.linguardium.tradesmen.api.objects.ObjectConversion.toJavaObject;
22-
2314
public class TraderTweaker implements Tweaker {
2415

2516
public static final TraderTweaker INSTANCE = new TraderTweaker();
@@ -88,4 +79,5 @@ public tradeObject makeTrade(Object item, Object price, int count, int maxUses,
8879
.experience(experience);
8980
return retObj;
9081
}
82+
9183
}

src/main/java/mod/linguardium/tradesmen/api/TradesmenManager.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,9 @@
1717
import net.minecraft.util.math.MathHelper;
1818
import net.minecraft.util.registry.Registry;
1919
import net.minecraft.world.GameRules;
20-
import net.minecraft.world.Heightmap;
2120
import net.minecraft.world.SpawnHelper;
2221
import net.minecraft.world.World;
2322
import net.minecraft.world.biome.Biomes;
24-
import net.minecraft.world.dimension.DimensionType;
2523
import net.minecraft.world.poi.PointOfInterestStorage;
2624
import net.minecraft.world.poi.PointOfInterestType;
2725
import org.apache.logging.log4j.Level;

src/main/java/mod/linguardium/tradesmen/api/TradesmenTradeOffers.java

Lines changed: 65 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.google.common.collect.Lists;
44
import net.minecraft.block.Block;
5-
import net.minecraft.client.util.math.Vector3f;
65
import net.minecraft.enchantment.Enchantment;
76
import net.minecraft.enchantment.EnchantmentHelper;
87
import net.minecraft.enchantment.InfoEnchantment;
@@ -30,6 +29,14 @@ public static class SellItemFactory implements TradeOffers.Factory {
3029
private int maxUses;
3130
private int experience;
3231
private float multiplier;
32+
private int randomCostMin=1;
33+
private int randomCostMax=64;
34+
private boolean randomCost=false;
35+
private boolean randomCount=false;
36+
private boolean randomSaleItem=false;
37+
private boolean randomPriceItem=false;
38+
private int randomCountMin=1;
39+
private int randomCountMax=64;
3340

3441
public SellItemFactory(SellItemFactory from) {
3542
this.sell = from.sell;
@@ -56,14 +63,26 @@ public SellItemFactory(ItemStack itemStack, int price, int maxUses, int experien
5663
}
5764

5865
public SellItemFactory(ItemStack itemStack, int price, int maxUses, int experience, float multiplier) {
59-
this(itemStack,new ItemStack(Items.EMERALD, price), maxUses,experience,multiplier);
66+
this(itemStack,new ItemStack[]{new ItemStack(Items.EMERALD, price),ItemStack.EMPTY}, maxUses,experience,multiplier);
6067
}
6168
public SellItemFactory(ItemStack itemStack, ItemStack price, int maxUses, int experience) {
62-
this(itemStack,price, maxUses,experience,0.05F);
69+
this(itemStack,new ItemStack[]{price,ItemStack.EMPTY}, maxUses,experience,0.05F);
6370
}
6471

65-
public SellItemFactory(ItemStack itemStack, ItemStack price, int maxUses, int experience, float multiplier) {
66-
this(itemStack,new ItemStack[]{price,ItemStack.EMPTY},maxUses,experience,multiplier);
72+
public SellItemFactory(ItemStack itemStack, ItemStack[] price, int randomCostMin, int randomCostMax, boolean randomCost, boolean randomCount, int randomCountMin, int randomCountMax, boolean randomSaleItem, boolean randomPriceItem, int maxUses, int experience, float multiplier) {
73+
this.sell = itemStack;
74+
this.price = price;
75+
this.maxUses = maxUses;
76+
this.experience = experience;
77+
this.multiplier = multiplier;
78+
this.randomCost=randomCost;
79+
this.randomCount=randomCount;
80+
this.randomCostMin=randomCostMin;
81+
this.randomCostMax=randomCostMax;
82+
this.randomCountMin=randomCountMin;
83+
this.randomCountMax=randomCountMax;
84+
this.randomSaleItem = randomSaleItem;
85+
this.randomPriceItem = randomPriceItem;
6786
}
6887
public SellItemFactory(ItemStack itemStack, ItemStack[] price, int maxUses, int experience, float multiplier) {
6988
this.sell = itemStack;
@@ -74,8 +93,34 @@ public SellItemFactory(ItemStack itemStack, ItemStack[] price, int maxUses, int
7493
}
7594

7695
public TradeOffer create(Entity entity, Random random) {
77-
return new TradeOffer(this.price[0],this.price[1],
78-
this.sell, this.maxUses, this.experience, this.multiplier);
96+
ItemStack price0 = this.price[0].copy();
97+
int priceCount =price0.getCount();
98+
if (priceCount <1)
99+
priceCount=1;
100+
101+
if (randomPriceItem) {
102+
103+
price0=new ItemStack(Registry.ITEM.get(random.nextInt((int)Registry.ITEM.stream().count())),priceCount);
104+
}
105+
if (price0.isEmpty()) {
106+
price0 = new ItemStack(Items.EMERALD,priceCount);
107+
}
108+
if (this.randomCost) {
109+
price0.setCount(random.nextInt((randomCostMax+1)-randomCostMin)+randomCostMin);
110+
}
111+
ItemStack saleItem = this.sell.copy();
112+
int saleCount =saleItem.getCount();
113+
if (saleCount <1)
114+
saleCount=1;
115+
116+
if (randomSaleItem) {
117+
saleItem=new ItemStack(Registry.ITEM.get(random.nextInt((int)Registry.ITEM.stream().count())),saleCount);
118+
}
119+
if (randomCount) {
120+
saleItem.setCount(random.nextInt((randomCountMax+1)-randomCountMin)+randomCostMin);
121+
}
122+
return new TradeOffer(price0,this.price[1],
123+
saleItem, this.maxUses, this.experience, this.multiplier);
79124
}
80125
}
81126
public static class SellPotionHoldingItemFactory implements TradeOffers.Factory {
@@ -118,8 +163,8 @@ public EnchantBookFactory(ItemStack[] price, int maxUses, int experience, float
118163
this.priceMultiplier=priceMultiplier;
119164
this.randomCost=false;
120165
}
121-
public EnchantBookFactory(ItemStack priceItem, int min, int max, boolean doubleTreasureCost, int maxUses, int experience, float priceMultiplier) {
122-
this.price[1] = priceItem;
166+
public EnchantBookFactory(ItemStack[] price, int min, int max, boolean doubleTreasureCost, int maxUses, int experience, float priceMultiplier) {
167+
this.price = price;
123168
this.experience=experience;
124169
this.randomCostMin=min;
125170
this.randomCostMax=max;
@@ -134,10 +179,13 @@ public TradeOffer create(Entity entity, Random random) {
134179
ItemStack itemStack = EnchantedBookItem.forEnchantment(new InfoEnchantment(enchantment, enchantmentLevel));
135180
int cost = 0;
136181
ItemStack price0 = price[0].copy();
182+
if (price0.isEmpty()) {
183+
price0=new ItemStack(Items.EMERALD);
184+
}
137185
if (randomCost) {
138186
cost = randomCostMin + random.nextInt(5+enchantmentLevel*10)+3*enchantmentLevel;
139187
cost = Math.min(Math.max(cost,randomCostMin),randomCostMax);
140-
price0=new ItemStack(Items.EMERALD,cost);
188+
price0.setCount(cost);
141189
}
142190
if (doubleTreasureCost) {
143191
if (enchantment.isTreasure()) {
@@ -169,11 +217,11 @@ public SellEnchantedItemFactory(ItemStack item, ItemStack[] price, boolean treas
169217
this.priceMultiplier = multiplier;
170218
this.treasure=treasure;
171219
}
172-
public SellEnchantedItemFactory(ItemStack item, ItemStack price, int min, int max, boolean treasure, int maxUses, int experience, float multiplier) {
220+
public SellEnchantedItemFactory(ItemStack item, ItemStack[] price, int min, int max, boolean treasure, int maxUses, int experience, float multiplier) {
173221
this.item = item;
174222
this.randomCostMin=min;
175223
this.randomCostMax=max;
176-
this.price[1]=price;
224+
this.price=price;
177225
this.maxUses = maxUses;
178226
this.experience = experience;
179227
this.priceMultiplier = multiplier;
@@ -184,12 +232,13 @@ public TradeOffer create(Entity entity, Random random) {
184232
ItemStack enchantedItem = this.item.copy();
185233
int enchantPower = 5 + random.nextInt(15); // power level
186234
enchantedItem = EnchantmentHelper.enchant(random, enchantedItem, enchantPower, this.treasure);
187-
ItemStack price0;
235+
ItemStack price0=price[0];
236+
if (price0.isEmpty()) {
237+
price0=new ItemStack(Items.EMERALD);
238+
}
188239
if (randomCost) {
189240
int cost = Math.min(this.randomCostMin + enchantPower, randomCostMax);
190-
price0 = new ItemStack(Items.EMERALD, cost);
191-
}else{
192-
price0 = price[0].copy();
241+
price0.setCount(cost);
193242
}
194243
return new TradeOffer(price0, price[1].copy(), enchantedItem, this.maxUses, this.experience, this.priceMultiplier);
195244
}

src/main/java/mod/linguardium/tradesmen/api/objects/ObjectConversion.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,8 @@
22

33
import com.google.common.collect.Lists;
44
import com.google.common.collect.Maps;
5-
65
import jdk.nashorn.api.scripting.ScriptObjectMirror;
7-
import net.fabricmc.loader.util.sat4j.core.Vec;
8-
import net.minecraft.client.util.math.Vector3f;
96

10-
import java.io.InvalidObjectException;
117
import java.util.List;
128
import java.util.Map;
139

src/main/java/mod/linguardium/tradesmen/api/objects/ParseColor.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package mod.linguardium.tradesmen.api.objects;
22

3-
import jdk.nashorn.internal.runtime.ScriptObject;
43
import net.minecraft.client.util.math.Vector3f;
54

65
import java.io.InvalidObjectException;

0 commit comments

Comments
 (0)