Skip to content

Commit 1ac4a32

Browse files
committed
Food Properties
1 parent d9a835c commit 1ac4a32

File tree

4 files changed

+74
-2
lines changed

4 files changed

+74
-2
lines changed

src/main/java/dev/klash/caramel/items/CaramelFactory.java

+13
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
import com.samjakob.spigui.item.ItemBuilder;
44
import dev.klash.caramel.Caramel;
55
import dev.klash.caramel.CaramelUtility;
6+
import org.bukkit.Material;
67
import org.bukkit.NamespacedKey;
78
import org.bukkit.inventory.ItemStack;
89
import org.bukkit.inventory.meta.ItemMeta;
10+
import org.bukkit.inventory.meta.components.FoodComponent;
911
import org.bukkit.persistence.PersistentDataType;
1012

1113
public class CaramelFactory {
@@ -16,6 +18,17 @@ public static ItemStack build(CaramelItem item) {
1618
m.displayName(item.getDetails().itemName());
1719
m.setCustomModelData(item.getDetails().modelData());
1820

21+
if(item.getDetails().food() != null) {
22+
FoodComponent food = m.getFood();
23+
food.setCanAlwaysEat(item.getDetails().food().canAlwaysEat());
24+
food.setNutrition(item.getDetails().food().nutrition());
25+
food.setSaturation(item.getDetails().food().saturation());
26+
food.setEatSeconds(item.getDetails().food().eatTime());
27+
for(FoodEffectProperties fep : item.getDetails().food().effects()) {
28+
food.addEffect(fep.effect(), fep.chance());
29+
}
30+
m.setFood(food);
31+
}
1932

2033
m.getPersistentDataContainer().set(Caramel.getInstance().isCaramelKey, PersistentDataType.BOOLEAN, true);
2134
m.getPersistentDataContainer().set(Caramel.getInstance().caramelIDKey, PersistentDataType.STRING, item.getDetails().id());

src/main/java/dev/klash/caramel/items/CaramelItemDetail.java

+8-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import java.util.List;
77

8-
public record CaramelItemDetail(String id, Component itemName, List<String> lore, int defaultStack, int modelData, Material itemBase) {
8+
public record CaramelItemDetail(String id, Component itemName, List<String> lore, int defaultStack, int modelData, Material itemBase, FoodProperties food) {
99

1010
public static class Builder {
1111
private String id;
@@ -14,6 +14,7 @@ public static class Builder {
1414
private int defaultStack;
1515
private int modelData;
1616
private Material itemBase;
17+
private FoodProperties food = null;
1718

1819
public Builder id(String id) {
1920
this.id = id;
@@ -35,6 +36,11 @@ public Builder defaultStack(int defaultStack) {
3536
return this;
3637
}
3738

39+
public Builder food(FoodProperties food) {
40+
this.food = food;
41+
return this;
42+
}
43+
3844
public Builder modelData(int modelData) {
3945
this.modelData = modelData;
4046
return this;
@@ -46,7 +52,7 @@ public Builder itemBase(Material itemBase) {
4652
}
4753

4854
public CaramelItemDetail build() {
49-
return new CaramelItemDetail(id, itemName, lore, defaultStack, modelData, itemBase);
55+
return new CaramelItemDetail(id, itemName, lore, defaultStack, modelData, itemBase, food);
5056
}
5157
}
5258

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package dev.klash.caramel.items;
2+
3+
import org.bukkit.potion.PotionEffect;
4+
5+
public record FoodEffectProperties(PotionEffect effect, float chance) {
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package dev.klash.caramel.items;
2+
3+
public record FoodProperties(int saturation, int nutrition, boolean canAlwaysEat, float eatTime, FoodEffectProperties... effects) {
4+
public static class Builder {
5+
private int saturation = -1;
6+
private int nutrition = -1;
7+
private boolean canAlwaysEat = false;
8+
private int eatTime = 32;
9+
private FoodEffectProperties[] effects = new FoodEffectProperties[0];
10+
11+
public Builder saturation(int saturation) {
12+
this.saturation = saturation;
13+
return this;
14+
}
15+
16+
public Builder nutrition(int nutrition) {
17+
this.nutrition = nutrition;
18+
return this;
19+
}
20+
21+
public Builder canAlwaysEat(boolean canAlwaysEat) {
22+
this.canAlwaysEat = canAlwaysEat;
23+
return this;
24+
}
25+
26+
public Builder eatTime(int eatTime) {
27+
this.eatTime = eatTime;
28+
return this;
29+
}
30+
31+
public Builder effects(FoodEffectProperties... effects) {
32+
this.effects = effects;
33+
return this;
34+
}
35+
36+
public FoodProperties build() {
37+
if(nutrition == -1 || saturation == -1) {
38+
throw new IllegalStateException("Nutrition and saturation must be set on Caramel food properties");
39+
}
40+
return new FoodProperties(saturation, nutrition, canAlwaysEat, eatTime, effects);
41+
}
42+
}
43+
44+
public static Builder builder() {
45+
return new Builder();
46+
}
47+
}

0 commit comments

Comments
 (0)