Skip to content

Commit

Permalink
fix: customize to dragon loot
Browse files Browse the repository at this point in the history
- some loot didnt account for lightning dragon
- flesh was not customized
  • Loading branch information
SiverDX authored and TheBv committed Dec 26, 2023
1 parent 85dc599 commit eb41da6
Show file tree
Hide file tree
Showing 9 changed files with 71 additions and 55 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"values": [
"#minecraft:dirt",
"#forge:stone",
"#forge:cobblestone",
"#iceandfire:dragon_environment_blocks",
"minecraft:grass_block"
]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"values": [
"iceandfire:fire_dragon_blood",
"iceandfire:ice_dragon_blood",
"iceandfire:lightning_dragon_blood"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"values": [
"iceandfire:fire_dragon_heart",
"iceandfire:ice_dragon_heart",
"iceandfire:lightning_dragon_heart",
"iceandfire:hydra_heart"
"iceandfire:lightning_dragon_heart"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ public class IafItemTags extends ItemTagsProvider {
// Logic
public static TagKey<Item> MAKE_ITEM_DROPS_FIREIMMUNE = createKey("make_item_drops_fireimmune");

public static TagKey<Item> DRAGON_BLOODS = createKey("dragon_bloods");
public static TagKey<Item> DRAGON_HEARTS = createKey("dragon_hearts");

public static TagKey<Item> BREED_AMPITHERE = createKey("breed_ampithere");
public static TagKey<Item> BREED_HIPPOCAMPUS = createKey("breed_hippocampus");
public static TagKey<Item> BREED_HIPPOGRYPH = createKey("breed_hippogryph");
Expand Down Expand Up @@ -93,6 +96,11 @@ protected void addTags(HolderLookup.Provider provider) {
.add(IafItemRegistry.DRAGONSTEEL_LIGHTNING_SHOVEL.get())
.add(IafItemRegistry.DRAGONSTEEL_LIGHTNING_HOE.get());

tag(DRAGON_BLOODS)
.add(IafItemRegistry.FIRE_DRAGON_BLOOD.get())
.add(IafItemRegistry.ICE_DRAGON_BLOOD.get())
.add(IafItemRegistry.LIGHTNING_DRAGON_BLOOD.get());

tag(Tags.Items.INGOTS)
// .add(IafItemRegistry.COPPER_INGOT.get())
.add(IafItemRegistry.GHOST_INGOT.get())
Expand Down Expand Up @@ -236,11 +244,10 @@ protected void addTags(HolderLookup.Provider provider) {
.addTag(SCALES_DRAGON_ICE)
.addTag(SCALES_DRAGON_LIGHTNING);

tag(createKey("hearts"))
tag(DRAGON_HEARTS)
.add(IafItemRegistry.FIRE_DRAGON_HEART.get())
.add(IafItemRegistry.ICE_DRAGON_HEART.get())
.add(IafItemRegistry.LIGHTNING_DRAGON_HEART.get())
.add(IafItemRegistry.HYDRA_HEART.get());
.add(IafItemRegistry.LIGHTNING_DRAGON_HEART.get());

IafItemRegistry.ITEMS.getEntries().forEach(registryObject -> {
Item item = registryObject.get();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1325,11 +1325,13 @@ public boolean isAlive() {

}

protected abstract ItemLike getHeartItem();
public abstract ItemLike getHeartItem();

protected abstract Item getBloodItem();
public abstract Item getBloodItem();

protected ItemStack getSkull() {
public abstract Item getFleshItem();

public ItemStack getSkull() {
return ItemStack.EMPTY;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -252,11 +252,6 @@ public void riderShootFire(Entity controller) {
}
}

@Override
protected ItemLike getHeartItem() {
return IafItemRegistry.FIRE_DRAGON_HEART.get();
}

@Override
protected float getBlockSpeedFactor() {
// Disable soul sand slow down
Expand Down Expand Up @@ -563,12 +558,22 @@ protected void spawnBabyParticles() {
}

@Override
protected ItemStack getSkull() {
public ItemStack getSkull() {
return new ItemStack(IafItemRegistry.DRAGON_SKULL_FIRE.get());
}

@Override
protected Item getBloodItem() {
public Item getBloodItem() {
return IafItemRegistry.FIRE_DRAGON_BLOOD.get();
}

@Override
public Item getFleshItem() {
return IafItemRegistry.FIRE_DRAGON_FLESH.get();
}

@Override
public ItemLike getHeartItem() {
return IafItemRegistry.FIRE_DRAGON_HEART.get();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -679,7 +679,7 @@ public SoundEvent getBabyFireSound() {
}

@Override
protected ItemStack getSkull() {
public ItemStack getSkull() {
return new ItemStack(IafItemRegistry.DRAGON_SKULL_ICE.get());
}

Expand All @@ -694,12 +694,17 @@ public Item getSummoningCrystal() {
}

@Override
protected Item getBloodItem() {
public Item getBloodItem() {
return IafItemRegistry.ICE_DRAGON_BLOOD.get();
}

@Override
protected ItemLike getHeartItem() {
public Item getFleshItem() {
return IafItemRegistry.ICE_DRAGON_FLESH.get();
}

@Override
public ItemLike getHeartItem() {
return IafItemRegistry.ICE_DRAGON_HEART.get();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -319,12 +319,17 @@ public void riderShootFire(Entity controller) {
}

@Override
protected Item getBloodItem() {
public Item getBloodItem() {
return IafItemRegistry.LIGHTNING_DRAGON_BLOOD.get();
}

@Override
protected ItemLike getHeartItem() {
public Item getFleshItem() {
return IafItemRegistry.LIGHTNING_DRAGON_FLESH.get();
}

@Override
public ItemLike getHeartItem() {
return IafItemRegistry.LIGHTNING_DRAGON_HEART.get();
}

Expand Down Expand Up @@ -530,7 +535,7 @@ protected void spawnBabyParticles() {
}

@Override
protected ItemStack getSkull() {
public ItemStack getSkull() {
return new ItemStack(IafItemRegistry.DRAGON_SKULL_LIGHTNING.get());
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.github.alexthe666.iceandfire.loot;

import com.github.alexthe666.iceandfire.entity.DragonType;
import com.github.alexthe666.iceandfire.datagen.tags.IafItemTags;
import com.github.alexthe666.iceandfire.entity.EntityDragonBase;
import com.github.alexthe666.iceandfire.item.*;
import com.google.gson.JsonDeserializationContext;
Expand All @@ -14,53 +14,39 @@
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition;
import org.jetbrains.annotations.NotNull;

import java.util.Random;

public class CustomizeToDragon extends LootItemConditionalFunction {

public CustomizeToDragon(LootItemCondition[] conditionsIn) {
super(conditionsIn);
}

@Override
protected @NotNull ItemStack run(ItemStack stack, @NotNull LootContext context) {
if (!stack.isEmpty() && context.getParamOrNull(LootContextParams.THIS_ENTITY) instanceof EntityDragonBase) {
Random random = new Random();
EntityDragonBase dragon = (EntityDragonBase) context.getParamOrNull(LootContextParams.THIS_ENTITY);
if (dragon == null) {
return stack;
}

protected @NotNull ItemStack run(final ItemStack stack, @NotNull final LootContext context) {
if (!stack.isEmpty() && context.getParamOrNull(LootContextParams.THIS_ENTITY) instanceof EntityDragonBase dragon) {
if (stack.getItem() == IafItemRegistry.DRAGON_BONE.get()) {
stack.setCount(1 + random.nextInt(1 + (dragon.getAgeInDays() / 25)));
stack.setCount(1 + dragon.getRandom().nextInt(1 + (dragon.getAgeInDays() / 25)));
return stack;
}
if (stack.getItem() instanceof ItemDragonScales) {
stack.setCount(dragon.getAgeInDays() / 25 + random.nextInt(1 + (dragon.getAgeInDays() / 5)));
} else if (stack.getItem() instanceof ItemDragonScales) {
stack.setCount(dragon.getAgeInDays() / 25 + dragon.getRandom().nextInt(1 + (dragon.getAgeInDays() / 5)));
return new ItemStack(dragon.getVariantScale(dragon.getVariant()), stack.getCount());
}
else if (stack.getItem() instanceof ItemDragonEgg) {
} else if (stack.getItem() instanceof ItemDragonEgg) {
if (dragon.shouldDropLoot()) {
return new ItemStack(dragon.getVariantEgg(dragon.getVariant()), stack.getCount());
} else {
stack.setCount(1 + random.nextInt(1 + (dragon.getAgeInDays() / 5)));
stack.setCount(1 + dragon.getRandom().nextInt(1 + (dragon.getAgeInDays() / 5)));
return new ItemStack(dragon.getVariantScale(dragon.getVariant()), stack.getCount());
}
}
else if (stack.getItem() instanceof ItemDragonFlesh) {
stack.setCount(1 + random.nextInt(1 + (dragon.getAgeInDays() / 25)));
return new ItemStack(stack.getItem(), stack.getCount());
}
else if (stack.getItem() instanceof ItemDragonSkull) {
ItemStack stack1 = new ItemStack(dragon.dragonType == DragonType.FIRE ? IafItemRegistry.DRAGON_SKULL_FIRE.get() : IafItemRegistry.DRAGON_SKULL_ICE.get(), stack.getCount());
stack1.setTag(stack.getTag());
return stack1;
}
if (stack.getItem() == IafItemRegistry.FIRE_DRAGON_BLOOD.get() || stack.getItem() == IafItemRegistry.ICE_DRAGON_BLOOD.get()) {
return new ItemStack(dragon.dragonType == DragonType.FIRE ? IafItemRegistry.FIRE_DRAGON_BLOOD.get() : IafItemRegistry.ICE_DRAGON_BLOOD.get(), stack.getCount());
}
else if (stack.getItem() == IafItemRegistry.FIRE_DRAGON_HEART.get() || stack.getItem() == IafItemRegistry.ICE_DRAGON_HEART.get()) {
return new ItemStack(dragon.dragonType == DragonType.FIRE ? IafItemRegistry.FIRE_DRAGON_HEART.get() : IafItemRegistry.ICE_DRAGON_HEART.get(), stack.getCount());
} else if (stack.getItem() instanceof ItemDragonFlesh) {
return new ItemStack(dragon.getFleshItem(), 1 + dragon.getRandom().nextInt(1 + (dragon.getAgeInDays() / 25)));
} else if (stack.getItem() instanceof ItemDragonSkull) {
ItemStack skull = dragon.getSkull();
skull.setCount(stack.getCount());
skull.setTag(stack.getTag());
return skull;
} else if (stack.is(IafItemTags.DRAGON_BLOODS)) {
return new ItemStack(dragon.getBloodItem(), stack.getCount());
} else if (stack.is(IafItemTags.DRAGON_HEARTS)) {
return new ItemStack(dragon.getHeartItem(), stack.getCount());
}
}
return stack;
Expand All @@ -71,7 +57,6 @@ else if (stack.getItem() == IafItemRegistry.FIRE_DRAGON_HEART.get() || stack.get
return IafLootRegistry.CUSTOMIZE_TO_DRAGON;
}


public static class Serializer extends LootItemConditionalFunction.Serializer<CustomizeToDragon> {
public Serializer() {
super();
Expand Down

0 comments on commit eb41da6

Please sign in to comment.