Skip to content

Commit

Permalink
Added custom stat for trading with goblins
Browse files Browse the repository at this point in the history
  • Loading branch information
MrCrayfish committed Mar 10, 2021
1 parent 07ebe26 commit 11aa477
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 2 deletions.
2 changes: 2 additions & 0 deletions src/main/java/com/mrcrayfish/goblintraders/GoblinTraders.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.mrcrayfish.goblintraders.init.ModEntities;
import com.mrcrayfish.goblintraders.init.ModItems;
import com.mrcrayfish.goblintraders.init.ModSounds;
import com.mrcrayfish.goblintraders.init.ModStats;
import com.mrcrayfish.goblintraders.trades.TradeManager;
import com.mrcrayfish.goblintraders.trades.type.BasicTrade;
import net.minecraft.util.ResourceLocation;
Expand Down Expand Up @@ -37,6 +38,7 @@ private void onClientSetup(FMLClientSetupEvent event)

private void onCommonSetup(FMLCommonSetupEvent event)
{
ModStats.init();
ModEntities.registerEntityTypeAttributes();
TradeManager manager = TradeManager.instance();
manager.registerTrader(ModEntities.GOBLIN_TRADER.get());
Expand Down
29 changes: 29 additions & 0 deletions src/main/java/com/mrcrayfish/goblintraders/init/ModStats.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.mrcrayfish.goblintraders.init;

import com.mrcrayfish.goblintraders.Reference;
import net.minecraft.stats.IStatFormatter;
import net.minecraft.stats.Stats;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.registry.Registry;

/**
* Author: MrCrayfish
*/
public class ModStats
{
public static final ResourceLocation TRADE_WITH_GOBLIN = registerCustom("trade_with_goblin", IStatFormatter.DEFAULT);

public static void init()
{
//Does nothing, just triggers java to load static fields
}

private static ResourceLocation registerCustom(String name, IStatFormatter formatter)
{
String key = Reference.MOD_ID + ":" + name;
ResourceLocation id = new ResourceLocation(key);
Registry.register(Registry.CUSTOM_STAT, key, id);
Stats.CUSTOM.get(id, formatter);
return id;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.mrcrayfish.goblintraders.mixin;

import com.mrcrayfish.goblintraders.entity.AbstractGoblinEntity;
import com.mrcrayfish.goblintraders.init.ModStats;
import net.minecraft.entity.merchant.IMerchant;
import net.minecraft.inventory.container.MerchantResultSlot;
import net.minecraft.util.ResourceLocation;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArg;

/**
* Author: MrCrayfish
*/
@Mixin(MerchantResultSlot.class)
public class MerchantResultSlotMixin
{
@Shadow
@Final
private IMerchant merchant;

@ModifyArg(method = "onTake", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;addStat(Lnet/minecraft/util/ResourceLocation;)V"))
private ResourceLocation modifyAddStat(ResourceLocation stat)
{
if(this.merchant instanceof AbstractGoblinEntity)
{
return ModStats.TRADE_WITH_GOBLIN;
}
return stat;
}
}
3 changes: 2 additions & 1 deletion src/main/resources/assets/goblintraders/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@
"subtitle.goblintraders.goblin_trader.annoyed_grunt": "Annoyed Grunt",
"subtitle.goblintraders.goblin_trader.idle_grunt": "Idle Grunt",
"item.goblintraders.goblin_trader_spawn_egg": "Goblin Trader Spawn Egg",
"item.goblintraders.vein_goblin_trader_spawn_egg": "Vein Goblin Trader Spawn Egg"
"item.goblintraders.vein_goblin_trader_spawn_egg": "Vein Goblin Trader Spawn Egg",
"stat.goblintraders.trade_with_goblin": "Traded with Goblins"
}
3 changes: 2 additions & 1 deletion src/main/resources/goblintraders.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"minVersion": "0.8",
"refmap": "goblintraders.refmap.json",
"mixins": [
"SpawnEggItemMixin"
"SpawnEggItemMixin",
"MerchantResultSlotMixin"
],
"injectors": {
"defaultRequire": 1
Expand Down

0 comments on commit 11aa477

Please sign in to comment.