11package dev .latvian .mods .kubejs .item ;
22
3+ import dev .latvian .mods .kubejs .KubeJS ;
34import dev .latvian .mods .kubejs .core .component .ItemComponentFunctions ;
45import dev .latvian .mods .kubejs .event .KubeEvent ;
56import dev .latvian .mods .kubejs .typings .Info ;
67import dev .latvian .mods .kubejs .util .TickDuration ;
78import dev .latvian .mods .kubejs .util .registrypredicate .RegistryPredicate ;
9+ import dev .latvian .mods .rhino .Context ;
810import dev .latvian .mods .rhino .util .HideFromJS ;
911import dev .latvian .mods .rhino .util .RemapPrefixForJS ;
1012import it .unimi .dsi .fastutil .objects .Reference2IntOpenHashMap ;
13+ import net .minecraft .core .HolderLookup ;
1114import net .minecraft .core .HolderSet ;
1215import net .minecraft .core .component .DataComponentMap ;
1316import net .minecraft .core .component .DataComponentPatch ;
1619import net .minecraft .core .registries .BuiltInRegistries ;
1720import net .minecraft .core .registries .Registries ;
1821import net .minecraft .tags .BlockTags ;
22+ import net .minecraft .tags .DamageTypeTags ;
1923import net .minecraft .tags .TagKey ;
2024import net .minecraft .util .Util ;
2125import net .minecraft .world .entity .EquipmentSlotGroup ;
3640
3741import java .util .List ;
3842import java .util .function .Consumer ;
39- import java .util .function .Function ;
40- import java .util .function .Predicate ;
41- import java .util .function .ToIntBiFunction ;
42- import java .util .function .ToIntFunction ;
4343
4444import static net .minecraft .world .item .Item .BASE_ATTACK_DAMAGE_ID ;
4545
@@ -55,32 +55,32 @@ public ItemModificationKubeEvent(ModifyDefaultComponentsEvent event) {
5555
5656 @ Info ("""
5757 Modifies items matching the given ingredient.
58-
58+
5959 **NOTE**: tag ingredients are not supported at this time.
6060 """ )
6161 // TODO: item with component filter support?
6262 public void modify (RegistryPredicate <Item > in , Consumer <ItemModifications > c ) {
6363 for (Item item : BuiltInRegistries .ITEM ) {
6464 if (in .test (item .kjs$asHolder ())) {
65- event .modify (item , builder -> c .accept (new ItemModifications (item , builder )));
65+ event .modify (item , ( builder , context , key ) -> c .accept (new ItemModifications (item , builder , context )));
6666 }
6767 }
6868 }
6969
7070 @ RemapPrefixForJS ("kjs$" )
71- public record ItemModifications (Item item , DataComponentMap .Builder patch ) implements ItemComponentFunctions , ItemBehaviorFunctions {
71+ public record ItemModifications (Item item , DataComponentMap .Builder components , HolderLookup . Provider registries ) implements ItemComponentFunctions , ItemBehaviorFunctions {
7272 @ HideFromJS
7373 public static final Reference2IntOpenHashMap <Item > BURN_TIME_OVERRIDES = new Reference2IntOpenHashMap <>();
7474
7575 @ Override
7676 public <T > @ Nullable T get (DataComponentType <? extends T > type ) {
77- return patch .get (type );
77+ return components .get (type );
7878 }
7979
8080 @ Override
8181 @ HideFromJS
8282 public <T > void kjs$override (DataComponentType <T > type , @ Nullable T value ) {
83- patch .set (type , value );
83+ components .set (type , value );
8484 }
8585
8686 @ Override
@@ -89,8 +89,24 @@ public record ItemModifications(Item item, DataComponentMap.Builder patch) imple
8989 kjs$override (DataComponents .ATTRIBUTE_MODIFIERS , modifiers );
9090 }
9191
92+ @ Override
93+ @ HideFromJS
94+ public void kjs$setFireResistant (Context cx ) {
95+ kjs$addDamageResistance (registries .lookupOrThrow (Registries .DAMAGE_TYPE ).get (DamageTypeTags .IS_FIRE ).orElseThrow ());
96+ }
97+
98+ @ Override
99+ @ Deprecated
100+ @ HideFromJS
101+ public void kjs$setFireResistant (Context cx , boolean fireResistant ) {
102+ KubeJS .LOGGER .warn ("kjs$setFireResistant(boolean) is deprecated due to changes in damage resistance, use the no-arg version instead" );
103+ if (fireResistant ) {
104+ kjs$setFireResistant (cx );
105+ }
106+ }
107+
92108 public void removeComponent (DataComponentType <?> type ) {
93- patch .set (type , null );
109+ components .set (type , null );
94110 }
95111
96112 public void setBurnTime (TickDuration i ) {
@@ -103,8 +119,8 @@ public void setCraftingRemainder(Item item) {
103119 }
104120
105121 public void setTier (Consumer <MutableToolMaterial > builder ) {
106- var items = BuiltInRegistries . acquireBootstrapRegistrationLookup ( BuiltInRegistries .ITEM );
107- var blocks = BuiltInRegistries . acquireBootstrapRegistrationLookup ( BuiltInRegistries .BLOCK );
122+ var items = registries . lookupOrThrow ( Registries .ITEM );
123+ var blocks = registries . lookupOrThrow ( Registries .BLOCK );
108124
109125 var material = Util .make (new MutableToolMaterial (ToolMaterial .IRON ), builder ).toToolMaterial ();
110126
0 commit comments