9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-28 11:39:07 +00:00

Patch dolphin, generify trades, move to dir, trades list repl. one

This commit is contained in:
CocoTheOwner
2021-08-06 11:33:12 +02:00
parent a3889fe369
commit a1110a847d
4 changed files with 43 additions and 25 deletions

View File

@@ -34,7 +34,7 @@ import com.volmit.iris.engine.object.carve.IrisCaveFluid;
import com.volmit.iris.engine.object.carve.IrisCaveLayer;
import com.volmit.iris.engine.object.carve.IrisCaverns;
import com.volmit.iris.engine.object.deposits.IrisDepositGenerator;
import com.volmit.iris.engine.object.entity.IrisEntityVillagerOverride;
import com.volmit.iris.engine.object.villager.IrisVillagerOverride;
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
import com.volmit.iris.engine.object.feature.IrisFeaturePotential;
import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructure;
@@ -332,7 +332,7 @@ public class IrisDimension extends IrisRegistrant {
private KList<IrisBiomeMutation> mutations = new KList<>();
@Desc("Cartographer map trade overrides")
private IrisEntityVillagerOverride patchCartographers = new IrisEntityVillagerOverride().setDisableTrade(false);
private IrisVillagerOverride patchCartographers = new IrisVillagerOverride().setDisableTrade(false);
private final transient AtomicCache<Position2> parallaxSize = new AtomicCache<>();
private final transient AtomicCache<CNG> rockLayerGenerator = new AtomicCache<>();

View File

@@ -1,8 +1,10 @@
package com.volmit.iris.engine.object.entity;
package com.volmit.iris.engine.object.villager;
import com.volmit.iris.engine.object.annotations.ArrayType;
import com.volmit.iris.engine.object.annotations.DependsOn;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.util.collection.KList;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -18,7 +20,7 @@ import org.bukkit.inventory.ItemStack;
@Desc("Override cartographer map trades with others or disable the trade altogether")
@Data
@EqualsAndHashCode(callSuper = false)
public class IrisEntityVillagerOverride {
public class IrisVillagerOverride {
@Desc("""
Disable the trade altogether.
If a cartographer villager gets a new explorer map trade:
@@ -33,10 +35,17 @@ public class IrisEntityVillagerOverride {
The items to override the cartographer trade with.
By default, this is 3 emeralds + 3 glass blocks -> 1 spyglass.
Can trade 3 to 5 times""")
private IrisEntityVillagerOverrideItems items = new IrisEntityVillagerOverrideItems()
@ArrayType(min = 1, type = IrisVillagerTrade.class)
private KList<IrisVillagerTrade> items = new KList<>(new IrisVillagerTrade()
.setIngredient1(new ItemStack(Material.EMERALD, 3))
.setIngredient2(new ItemStack(Material.GLASS, 3))
.setResult(new ItemStack(Material.SPYGLASS))
.setMinTrades(3)
.setMaxTrades(5);
.setMaxTrades(5));
public KList<IrisVillagerTrade> getValidItems(){
KList<IrisVillagerTrade> valid = new KList<>();
getItems().stream().filter(IrisVillagerTrade::isValidItems).forEach(valid::add);
return valid.size() == 0 ? null : valid;
}
}

View File

@@ -1,8 +1,9 @@
package com.volmit.iris.engine.object.entity;
package com.volmit.iris.engine.object.villager;
import com.volmit.iris.engine.object.annotations.*;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -10,6 +11,7 @@ import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.MerchantRecipe;
import java.util.List;
@@ -19,10 +21,10 @@ import java.util.List;
@AllArgsConstructor
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
@Desc("Override cartographer map trades with these items. ")
@Desc("Represents a villager trade.")
@Data
@EqualsAndHashCode(callSuper = false)
public class IrisEntityVillagerOverrideItems {
public class IrisVillagerTrade {
@Required
@RegistryListItemType
@@ -78,4 +80,13 @@ public class IrisEntityVillagerOverrideItems {
public int getAmount() {
return RNG.r.i(minTrades, maxTrades);
}
/**
* @return the trade as a merchant recipe
*/
public MerchantRecipe convert(){
MerchantRecipe recipe = new MerchantRecipe(getResult(), getAmount());
recipe.setIngredients(getIngredients());
return recipe;
}
}