Skip to content

Commit 0f23cfe

Browse files
committed
loot & go-fish compat
1 parent f0146b3 commit 0f23cfe

16 files changed

+373
-418
lines changed

src/main/java/de/dafuqs/spectrum/compat/gofish/GoFishCompat.java

+17-17
Original file line numberDiff line numberDiff line change
@@ -4,45 +4,45 @@
44
import net.minecraft.component.type.*;
55
import net.minecraft.enchantment.*;
66
import net.minecraft.item.*;
7+
import net.minecraft.loot.*;
78
import net.minecraft.registry.*;
89
import net.minecraft.registry.entry.*;
910
import net.minecraft.util.*;
10-
import net.minecraft.world.*;
11-
12-
import java.util.*;
1311

1412
public class GoFishCompat {
1513

16-
public static final Identifier DEFAULT_CRATES_LOOT_TABLE_ID = Identifier.of("gofish", "gameplay/fishing/crates");
17-
public static final Identifier NETHER_CRATES_LOOT_TABLE_ID = Identifier.of("gofish", "gameplay/fishing/nether/crates");
18-
public static final Identifier END_CRATES_LOOT_TABLE_ID = Identifier.of("gofish", "gameplay/fishing/end/crates");
14+
public static final String MOD_ID = "go-fish";
15+
public static final String NAMESPACE = "gofish";
16+
17+
public static final RegistryKey<LootTable> DEFAULT_CRATES_LOOT_TABLE_ID = lootTableKey("gameplay/fishing/crates");
18+
public static final RegistryKey<LootTable> NETHER_CRATES_LOOT_TABLE_ID = lootTableKey("gameplay/fishing/nether/crates");
19+
public static final RegistryKey<LootTable> END_CRATES_LOOT_TABLE_ID = lootTableKey("gameplay/fishing/end/crates");
20+
21+
public static final RegistryKey<LootTable> NETHER_FISH_LOOT_TABLE_ID = lootTableKey("gameplay/fishing/nether/fish");
22+
public static final RegistryKey<LootTable> END_FISH_LOOT_TABLE_ID = lootTableKey("gameplay/fishing/end/fish");
1923

20-
public static final Identifier NETHER_FISH_LOOT_TABLE_ID = Identifier.of("gofish", "gameplay/fishing/nether/fish");
21-
public static final Identifier END_FISH_LOOT_TABLE_ID = Identifier.of("gofish", "gameplay/fishing/end/fish");
24+
public static final RegistryKey<Enchantment> DEEPFRY_ENCHANTMENT_ID = RegistryKey.of(RegistryKeys.ENCHANTMENT, Identifier.of(NAMESPACE, "deepfry"));
2225

23-
public static final Identifier DEEPFRY_ENCHANTMENT_ID = Identifier.of("gofish", "deepfry");
26+
public static RegistryKey<LootTable> lootTableKey(String id) {
27+
return RegistryKey.of(RegistryKeys.LOOT_TABLE, Identifier.of(NAMESPACE, id));
28+
}
2429

2530
public static boolean isLoaded() {
26-
return FabricLoader.getInstance().isModLoaded("go-fish");
31+
return FabricLoader.getInstance().isModLoaded(MOD_ID);
2732
}
2833

29-
public static boolean hasDeepfry(World world, ItemStack itemStack) {
34+
public static boolean hasDeepfry(ItemStack itemStack) {
3035
if (!isLoaded()) {
3136
return false;
3237
}
3338

3439
ItemEnchantmentsComponent enchantments = itemStack.getEnchantments();
3540
for (RegistryEntry<Enchantment> enchantment : enchantments.getEnchantments()) {
36-
if (isDeepfry(world, enchantment)) {
41+
if (enchantment.matchesKey(DEEPFRY_ENCHANTMENT_ID)) {
3742
return true;
3843
}
3944
}
4045
return false;
4146
}
4247

43-
public static boolean isDeepfry(World world, RegistryEntry<Enchantment> enchantment) {
44-
Identifier id = world.getRegistryManager().get(RegistryKeys.ENCHANTMENT).getId(enchantment.value());
45-
return id != null && id.equals(GoFishCompat.DEEPFRY_ENCHANTMENT_ID);
46-
}
47-
4848
}

src/main/java/de/dafuqs/spectrum/entity/predicates/LizardPredicate.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package de.dafuqs.spectrum.entity.predicates;
22

3-
import com.mojang.serialization.MapCodec;
4-
import com.mojang.serialization.codecs.RecordCodecBuilder;
3+
import com.mojang.serialization.*;
4+
import com.mojang.serialization.codecs.*;
55
import de.dafuqs.spectrum.api.energy.color.*;
66
import de.dafuqs.spectrum.entity.*;
77
import de.dafuqs.spectrum.entity.entity.*;
88
import de.dafuqs.spectrum.entity.variants.*;
99
import net.minecraft.entity.*;
10-
import net.minecraft.predicate.entity.EntitySubPredicate;
10+
import net.minecraft.predicate.entity.*;
1111
import net.minecraft.server.world.*;
1212
import net.minecraft.util.math.*;
1313
import org.jetbrains.annotations.*;

src/main/java/de/dafuqs/spectrum/items/tools/SpectrumFishingRodItem.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public TypedActionResult<ItemStack> use(World world, PlayerEntity user, Hand han
4949
int bigCatchLevel = SpectrumEnchantmentHelper.getLevel(drm, SpectrumEnchantments.BIG_CATCH, itemStack);
5050
int serendipityReelLevel = SpectrumEnchantmentHelper.getLevel(drm, SpectrumEnchantments.SERENDIPITY_REEL, itemStack);
5151
boolean inventoryInsertion = SpectrumEnchantmentHelper.getLevel(drm, SpectrumEnchantments.INVENTORY_INSERTION, itemStack) > 0;
52-
boolean shouldSmeltDrops = shouldSmeltDrops(itemStack, user);
52+
boolean shouldSmeltDrops = shouldSmeltDrops(itemStack);
5353
spawnBobber(user, world, luckOfTheSeaLevel, lureLevel, exuberanceLevel, bigCatchLevel, serendipityReelLevel, inventoryInsertion, shouldSmeltDrops);
5454
}
5555

@@ -66,8 +66,8 @@ public boolean canFishIn(FluidState fluidState) {
6666
return fluidState.isIn(FluidTags.WATER);
6767
}
6868

69-
public boolean shouldSmeltDrops(ItemStack itemStack, PlayerEntity user) {
70-
return EnchantmentHelper.hasAnyEnchantmentsIn(itemStack, SpectrumEnchantmentTags.SMELTS_MORE_LOOT) || GoFishCompat.hasDeepfry(user.getWorld(), itemStack);
69+
public boolean shouldSmeltDrops(ItemStack itemStack) {
70+
return EnchantmentHelper.hasAnyEnchantmentsIn(itemStack, SpectrumEnchantmentTags.SMELTS_MORE_LOOT) || GoFishCompat.hasDeepfry(itemStack);
7171
}
7272

7373
@Override

src/main/java/de/dafuqs/spectrum/loot/SpectrumLootConditionTypes.java

-20
This file was deleted.

src/main/java/de/dafuqs/spectrum/loot/SpectrumLootFunctionTypes.java

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public class SpectrumLootFunctionTypes {
1212
public static LootFunctionType<FermentRandomlyLootFunction> FERMENT_RANDOMLY = register("ferment_randomly", FermentRandomlyLootFunction.CODEC);
1313
public static LootFunctionType<MergeNbtRandomlyLootFunction> MERGE_NBT_RANDOMLY = register("merge_nbt_randomly", MergeNbtRandomlyLootFunction.CODEC);
1414
public static LootFunctionType<FillPotionFillableLootFunction> FILL_POTION_FILLABLE = register("fill_potion_fillable", FillPotionFillableLootFunction.CODEC);
15+
public static LootFunctionType<GrantAdvancementLootFunction> GRANT_ADVANCEMENT = register("grant_advancement", GrantAdvancementLootFunction.CODEC);
1516

1617
private static <T extends LootFunction> LootFunctionType<T> register(String id, MapCodec<T> codec) {
1718
return Registry.register(Registries.LOOT_FUNCTION_TYPE, SpectrumCommon.locate(id), new LootFunctionType<>(codec));

0 commit comments

Comments
 (0)