Skip to content

Commit 90a871e

Browse files
authored
Merge branch 'GregTechCEu:1.20.1' into 1.20.1
2 parents 0719eef + 75d87ca commit 90a871e

File tree

22 files changed

+425
-84
lines changed

22 files changed

+425
-84
lines changed

settings.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ dependencyResolutionManagement {
1818

1919
// Mod Dependencies Versions
2020
// Common
21-
def jeiVersion = "15.2.0.27"
21+
def jeiVersion = "15.8.0.11"
2222
def reiVersion = "12.1.725"
2323
def emiVersion = "1.0.30"
2424
def ae2Version = "15.0.18"
@@ -44,7 +44,7 @@ dependencyResolutionManagement {
4444
def vineFlowerVersion = "1.+"
4545
def macheteVersion = "1.+"
4646
def configurationVersion = "2.2.0"
47-
def ldLibVersion = "1.0.25.p"
47+
def ldLibVersion = "1.0.26"
4848
def mixinextrasVersion = "0.2.0"
4949
def shimmerVersion = "0.2.4"
5050

src/generated/resources/assets/gtceu/lang/en_ud.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3794,6 +3794,8 @@
37943794
"gtceu.tooltip.fluid_pipe_hold_shift": "oɟuI ʇuǝɯuıɐʇuoƆ pınןℲ ʍoɥs oʇ ⟘ℲIHS pןoHㄥ§",
37953795
"gtceu.tooltip.hold_ctrl": "oɟuı ǝɹoɯ ɹoɟ Ꞁᴚ⟘Ɔ pןoHㄥ§",
37963796
"gtceu.tooltip.hold_shift": "oɟuı ǝɹoɯ ɹoɟ ⟘ℲIHS pןoHㄥ§",
3797+
"gtceu.tooltip.potion.each": "buıuǝddɐɥ ɟo ǝɔuɐɥɔ ɹ§%s%%ɐ§ ɐ ɥʇıʍ sʞɔıʇ ɹ§%sɔ§ ɹoɟ ɹ§%s %sǝ§ ",
3798+
"gtceu.tooltip.potion.header": ":sʇɔǝɟɟǝ suıɐʇuoƆ9§",
37973799
"gtceu.tooltip.tool_fluid_hold_shift": "oɟuI ןoo⟘ puɐ ʇuǝɯuıɐʇuoƆ pınןℲ ʍoɥs oʇ ⟘ℲIHS pןoHㄥ§",
37983800
"gtceu.top.allow_output_input": "ʇnduI ʍoןןⱯ",
37993801
"gtceu.top.auto_output": "ʇndʇnO oʇnⱯ",

src/generated/resources/assets/gtceu/lang/en_us.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3794,6 +3794,8 @@
37943794
"gtceu.tooltip.fluid_pipe_hold_shift": "§7Hold SHIFT to show Fluid Containment Info",
37953795
"gtceu.tooltip.hold_ctrl": "§7Hold CTRL for more info",
37963796
"gtceu.tooltip.hold_shift": "§7Hold SHIFT for more info",
3797+
"gtceu.tooltip.potion.each": " §e%s %s§r for §c%s§r ticks with a §a%s%%§r chance of happening",
3798+
"gtceu.tooltip.potion.header": "§6Contains effects:",
37973799
"gtceu.tooltip.tool_fluid_hold_shift": "§7Hold SHIFT to show Fluid Containment and Tool Info",
37983800
"gtceu.top.allow_output_input": "Allow Input",
37993801
"gtceu.top.auto_output": "Auto Output",

src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/HazardProperty.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
import com.gregtechceu.gtceu.api.data.chemical.material.stack.UnificationEntry;
66
import com.gregtechceu.gtceu.api.data.medicalcondition.MedicalCondition;
77
import com.gregtechceu.gtceu.api.data.tag.TagPrefix;
8+
import com.gregtechceu.gtceu.api.item.GTBucketItem;
89
import com.gregtechceu.gtceu.api.item.TagPrefixItem;
910
import com.gregtechceu.gtceu.api.item.armor.ArmorComponentItem;
10-
import com.gregtechceu.gtceu.api.item.forge.GTBucketItem;
1111
import com.gregtechceu.gtceu.config.ConfigHolder;
1212
import com.gregtechceu.gtceu.data.recipe.CustomTags;
1313

src/main/java/com/gregtechceu/gtceu/api/item/ComponentItem.java

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import net.minecraft.MethodsReturnNonnullByDefault;
1515
import net.minecraft.core.NonNullList;
1616
import net.minecraft.network.chat.Component;
17+
import net.minecraft.sounds.SoundEvent;
1718
import net.minecraft.world.InteractionHand;
1819
import net.minecraft.world.InteractionResult;
1920
import net.minecraft.world.InteractionResultHolder;
@@ -23,10 +24,12 @@
2324
import net.minecraft.world.entity.ai.attributes.Attribute;
2425
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
2526
import net.minecraft.world.entity.player.Player;
27+
import net.minecraft.world.food.FoodProperties;
2628
import net.minecraft.world.item.CreativeModeTab;
2729
import net.minecraft.world.item.Item;
2830
import net.minecraft.world.item.ItemStack;
2931
import net.minecraft.world.item.TooltipFlag;
32+
import net.minecraft.world.item.UseAnim;
3033
import net.minecraft.world.item.context.UseOnContext;
3134
import net.minecraft.world.item.crafting.RecipeType;
3235
import net.minecraft.world.item.enchantment.Enchantment;
@@ -212,6 +215,16 @@ public ItemStack finishUsingItem(ItemStack stack, Level level, LivingEntity livi
212215
return stack;
213216
}
214217

218+
@Override
219+
public UseAnim getUseAnimation(ItemStack stack) {
220+
for (IItemComponent component : components) {
221+
if (component instanceof IInteractionItem interactionItem) {
222+
return interactionItem.getUseAnimation(stack);
223+
}
224+
}
225+
return super.getUseAnimation(stack);
226+
}
227+
215228
@Override
216229
public InteractionResult onItemUseFirst(ItemStack itemStack, UseOnContext context) {
217230
for (IItemComponent component : components) {
@@ -345,12 +358,52 @@ public int getBurnTime(ItemStack itemStack, @Nullable RecipeType<?> recipeType)
345358
return burnTime;
346359
}
347360

361+
@Override
362+
public @Nullable FoodProperties getFoodProperties(ItemStack stack, @Nullable LivingEntity entity) {
363+
for (IItemComponent component : components) {
364+
if (component instanceof IEdibleItem foodBehavior) {
365+
return foodBehavior.getFoodProperties(stack, entity);
366+
}
367+
}
368+
return super.getFoodProperties(stack, entity);
369+
}
370+
371+
@Override
372+
public boolean isEdible() {
373+
for (IItemComponent component : components) {
374+
if (component instanceof IEdibleItem foodBehavior) {
375+
return foodBehavior.isEdible();
376+
}
377+
}
378+
return super.isEdible();
379+
}
380+
381+
@Override
382+
public SoundEvent getEatingSound() {
383+
for (IItemComponent component : components) {
384+
if (component instanceof IEdibleItem foodBehavior) {
385+
return foodBehavior.getEatingSound();
386+
}
387+
}
388+
return super.getEatingSound();
389+
}
390+
391+
@Override
392+
public SoundEvent getDrinkingSound() {
393+
for (IItemComponent component : components) {
394+
if (component instanceof IEdibleItem foodBehavior) {
395+
return foodBehavior.getDrinkingSound();
396+
}
397+
}
398+
return super.getDrinkingSound();
399+
}
400+
348401
public void burnTime(int burnTime) {
349402
this.burnTime = burnTime;
350403
}
351404

352405
/**
353-
* Attempts to get an fully charged variant of this electric item
406+
* Attempts to get a fully charged variant of this electric item
354407
*
355408
* @param chargeAmount amount of charge
356409
* @return charged electric item stack

src/main/java/com/gregtechceu/gtceu/api/item/forge/GTBucketItem.java renamed to src/main/java/com/gregtechceu/gtceu/api/item/GTBucketItem.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.gregtechceu.gtceu.api.item.forge;
1+
package com.gregtechceu.gtceu.api.item;
22

33
import com.gregtechceu.gtceu.api.data.chemical.material.Material;
44
import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey;

src/main/java/com/gregtechceu/gtceu/api/item/component/FilteredFluidContainer.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,8 @@ public static FilteredFluidContainer create(int capacity, boolean allowPartialFi
4040
@Override
4141
public @NotNull <T> LazyOptional<T> getCapability(ItemStack itemStack, @NotNull Capability<T> cap) {
4242
if (cap == ForgeCapabilities.FLUID_HANDLER_ITEM) {
43-
return ForgeCapabilities.FLUID_HANDLER_ITEM.orEmpty(cap, LazyOptional.of(() -> {
44-
return new FilteredFluidHandlerItemStack(itemStack, capacity, filter);
45-
}));
43+
return ForgeCapabilities.FLUID_HANDLER_ITEM.orEmpty(cap,
44+
LazyOptional.of(() -> new FilteredFluidHandlerItemStack(itemStack, capacity, filter)));
4645
}
4746
return LazyOptional.empty();
4847
}
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package com.gregtechceu.gtceu.api.item.component;
2+
3+
import com.gregtechceu.gtceu.utils.GTUtil;
4+
5+
import net.minecraft.network.chat.Component;
6+
import net.minecraft.sounds.SoundEvent;
7+
import net.minecraft.world.entity.LivingEntity;
8+
import net.minecraft.world.entity.player.Player;
9+
import net.minecraft.world.food.FoodProperties;
10+
import net.minecraft.world.item.ItemStack;
11+
import net.minecraft.world.item.TooltipFlag;
12+
import net.minecraft.world.item.UseAnim;
13+
import net.minecraft.world.level.Level;
14+
15+
import org.jetbrains.annotations.Nullable;
16+
17+
import java.util.List;
18+
import java.util.function.Supplier;
19+
20+
/**
21+
* Simple {@link IEdibleItem} implementation.
22+
*
23+
* @author GateGuardian
24+
* @date : 2024/7/22
25+
*/
26+
public class FoodStats implements IEdibleItem, IInteractionItem, IAddInformation {
27+
28+
protected final FoodProperties properties;
29+
30+
protected final boolean isDrink;
31+
32+
@Nullable
33+
protected final Supplier<ItemStack> containerItem;
34+
35+
public FoodStats(FoodProperties properties, boolean isDrink, @Nullable Supplier<ItemStack> containerItem) {
36+
this.properties = properties;
37+
this.isDrink = isDrink;
38+
this.containerItem = containerItem;
39+
}
40+
41+
@Override
42+
public FoodProperties getFoodProperties(ItemStack stack, @Nullable LivingEntity entity) {
43+
return properties;
44+
}
45+
46+
@Override
47+
public boolean isEdible() {
48+
return true;
49+
}
50+
51+
@Override
52+
public SoundEvent getEatingSound() {
53+
return isDrink ? getDrinkingSound() : IEdibleItem.super.getEatingSound();
54+
}
55+
56+
@Override
57+
public UseAnim getUseAnimation(ItemStack stack) {
58+
return isDrink ? UseAnim.DRINK : UseAnim.EAT;
59+
}
60+
61+
@Override
62+
public void appendHoverText(ItemStack stack, @Nullable Level level, List<Component> tooltipComponents,
63+
TooltipFlag isAdvanced) {
64+
GTUtil.addPotionTooltip(properties.getEffects(), tooltipComponents);
65+
}
66+
67+
@Override
68+
public ItemStack finishUsingItem(ItemStack food, Level level, LivingEntity livingEntity) {
69+
Player player = livingEntity instanceof Player ? (Player) livingEntity : null;
70+
var stack = livingEntity.eat(level, food);
71+
if (containerItem != null && (player == null || !player.getAbilities().instabuild)) {
72+
var container = containerItem.get();
73+
if (stack.isEmpty()) {
74+
return container;
75+
}
76+
77+
if (player != null) {
78+
if (!player.getInventory().add(container)) {
79+
player.drop(container, true);
80+
}
81+
}
82+
}
83+
return stack;
84+
}
85+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.gregtechceu.gtceu.api.item.component;
2+
3+
import net.minecraft.sounds.SoundEvent;
4+
import net.minecraft.sounds.SoundEvents;
5+
import net.minecraft.world.entity.LivingEntity;
6+
import net.minecraft.world.food.FoodProperties;
7+
import net.minecraft.world.item.ItemStack;
8+
9+
import org.jetbrains.annotations.Nullable;
10+
11+
public interface IEdibleItem {
12+
13+
FoodProperties getFoodProperties(ItemStack stack, @Nullable LivingEntity entity);
14+
15+
boolean isEdible();
16+
17+
default SoundEvent getEatingSound() {
18+
return SoundEvents.GENERIC_EAT;
19+
}
20+
21+
default SoundEvent getDrinkingSound() {
22+
return SoundEvents.GENERIC_DRINK;
23+
}
24+
}

src/main/java/com/gregtechceu/gtceu/api/item/component/IInteractionItem.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import net.minecraft.world.entity.player.Player;
88
import net.minecraft.world.item.Item;
99
import net.minecraft.world.item.ItemStack;
10+
import net.minecraft.world.item.UseAnim;
1011
import net.minecraft.world.item.context.UseOnContext;
1112
import net.minecraft.world.level.Level;
1213

@@ -17,6 +18,10 @@
1718
*/
1819
public interface IInteractionItem extends IItemComponent {
1920

21+
default InteractionResult onItemUseFirst(ItemStack itemStack, UseOnContext context) {
22+
return InteractionResult.PASS;
23+
}
24+
2025
default InteractionResult useOn(UseOnContext context) {
2126
return InteractionResult.PASS;
2227
}
@@ -39,8 +44,8 @@ default ItemStack finishUsingItem(ItemStack stack, Level level, LivingEntity liv
3944
return stack.isEdible() ? livingEntity.eat(level, stack) : stack;
4045
}
4146

42-
default InteractionResult onItemUseFirst(ItemStack itemStack, UseOnContext context) {
43-
return InteractionResult.PASS;
47+
default UseAnim getUseAnimation(ItemStack stack) {
48+
return stack.getItem().isEdible() ? UseAnim.EAT : UseAnim.NONE;
4449
}
4550

4651
default boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) {

0 commit comments

Comments
 (0)