2020-01-26 19:26:50 +01:00
|
|
|
package de.ellpeck.naturesaura.compat;
|
|
|
|
|
|
|
|
import com.google.common.collect.ImmutableMap;
|
|
|
|
import de.ellpeck.naturesaura.NaturesAura;
|
2020-01-29 00:40:28 +01:00
|
|
|
import de.ellpeck.naturesaura.data.ItemTagProvider;
|
2020-02-07 15:22:30 +01:00
|
|
|
import de.ellpeck.naturesaura.items.ModItems;
|
2024-03-12 19:04:56 +01:00
|
|
|
import net.minecraft.core.HolderLookup;
|
|
|
|
import net.minecraft.data.PackOutput;
|
2021-12-19 16:35:03 +01:00
|
|
|
import net.minecraft.resources.ResourceLocation;
|
2020-09-22 16:16:25 +02:00
|
|
|
import net.minecraft.tags.ItemTags;
|
2021-12-19 16:35:03 +01:00
|
|
|
import net.minecraft.world.item.Item;
|
|
|
|
import net.minecraft.world.item.ItemStack;
|
2024-03-12 19:04:56 +01:00
|
|
|
import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent;
|
|
|
|
import net.neoforged.neoforge.common.data.ExistingFileHelper;
|
|
|
|
import net.neoforged.neoforge.data.event.GatherDataEvent;
|
2020-09-22 03:17:02 +02:00
|
|
|
import top.theillusivec4.curios.api.CuriosCapability;
|
2024-03-12 19:04:56 +01:00
|
|
|
import top.theillusivec4.curios.api.CuriosDataProvider;
|
2021-03-30 16:22:40 +02:00
|
|
|
import top.theillusivec4.curios.api.SlotContext;
|
2020-09-22 16:16:25 +02:00
|
|
|
import top.theillusivec4.curios.api.type.capability.ICurio;
|
2020-01-26 19:26:50 +01:00
|
|
|
|
|
|
|
import java.util.Map;
|
2024-03-12 19:04:56 +01:00
|
|
|
import java.util.concurrent.CompletableFuture;
|
2020-01-26 19:26:50 +01:00
|
|
|
|
|
|
|
public class CuriosCompat implements ICompat {
|
2020-09-22 03:17:02 +02:00
|
|
|
|
2020-09-22 16:16:25 +02:00
|
|
|
private static final Map<Item, String> TYPES = ImmutableMap.<Item, String>builder()
|
|
|
|
.put(ModItems.EYE, "charm")
|
|
|
|
.put(ModItems.EYE_IMPROVED, "charm")
|
|
|
|
.put(ModItems.AURA_CACHE, "belt")
|
|
|
|
.put(ModItems.AURA_TROVE, "belt")
|
|
|
|
.put(ModItems.SHOCKWAVE_CREATOR, "necklace")
|
|
|
|
.put(ModItems.DEATH_RING, "ring")
|
2020-01-26 19:26:50 +01:00
|
|
|
.build();
|
|
|
|
|
|
|
|
@Override
|
2024-03-12 19:04:56 +01:00
|
|
|
public void addCapabilities(RegisterCapabilitiesEvent event) {
|
|
|
|
for (var item : CuriosCompat.TYPES.keySet()) {
|
|
|
|
event.registerItem(CuriosCapability.ITEM, (s, c) -> new ICurio() {
|
|
|
|
@Override
|
|
|
|
public void curioTick(SlotContext slotContext) {
|
|
|
|
s.getItem().inventoryTick(s, slotContext.entity().level(), slotContext.entity(), -1, false);
|
|
|
|
}
|
2020-10-19 21:26:32 +02:00
|
|
|
|
2024-03-12 19:04:56 +01:00
|
|
|
@Override
|
|
|
|
public ItemStack getStack() {
|
|
|
|
return s;
|
|
|
|
}
|
2020-10-19 21:26:32 +02:00
|
|
|
|
2024-03-12 19:04:56 +01:00
|
|
|
@Override
|
|
|
|
public boolean canEquipFromUse(SlotContext slotContext) {
|
|
|
|
return true;
|
|
|
|
}
|
2020-10-19 21:26:32 +02:00
|
|
|
|
2020-01-26 19:26:50 +01:00
|
|
|
@Override
|
2024-03-12 19:04:56 +01:00
|
|
|
public boolean canSync(SlotContext slotContext) {
|
|
|
|
return true;
|
2020-01-26 19:26:50 +01:00
|
|
|
}
|
2024-03-12 19:04:56 +01:00
|
|
|
}, item);
|
2020-01-26 19:26:50 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-03-12 19:04:56 +01:00
|
|
|
@Override
|
|
|
|
public void gatherData(GatherDataEvent event) {
|
|
|
|
event.getGenerator().addProvider(event.includeServer(), new CuriosProvider(event.getGenerator().getPackOutput(), event.getExistingFileHelper(), event.getLookupProvider()));
|
|
|
|
}
|
|
|
|
|
2020-01-26 19:26:50 +01:00
|
|
|
@Override
|
|
|
|
public void addItemTags(ItemTagProvider provider) {
|
2022-06-27 15:24:04 +02:00
|
|
|
for (var entry : CuriosCompat.TYPES.entrySet()) {
|
2022-03-04 15:59:04 +01:00
|
|
|
var tag = ItemTags.create(new ResourceLocation("curios", entry.getValue()));
|
2021-12-19 16:35:03 +01:00
|
|
|
provider.tag(tag).add(entry.getKey());
|
2020-09-22 16:16:25 +02:00
|
|
|
}
|
|
|
|
}
|
2024-03-12 19:04:56 +01:00
|
|
|
|
|
|
|
private static class CuriosProvider extends CuriosDataProvider {
|
|
|
|
|
|
|
|
public CuriosProvider(PackOutput output, ExistingFileHelper fileHelper, CompletableFuture<HolderLookup.Provider> registries) {
|
|
|
|
super(NaturesAura.MOD_ID, output, fileHelper, registries);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void generate(HolderLookup.Provider provider, ExistingFileHelper existingFileHelper) {
|
|
|
|
for (var type : CuriosCompat.TYPES.values()) {
|
|
|
|
this.createSlot(type);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2020-01-26 19:26:50 +01:00
|
|
|
}
|