Clean repo for open source release
Remove build artifacts, dev tool configs, unused dependencies, and third-party source dumps. Add proper README, update .gitignore, clean up Makefile.
This commit is contained in:
137
src/main/java/com/tiedup/remake/entities/MerchantTrade.java
Normal file
137
src/main/java/com/tiedup/remake/entities/MerchantTrade.java
Normal file
@@ -0,0 +1,137 @@
|
||||
package com.tiedup.remake.entities;
|
||||
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.Items;
|
||||
|
||||
/**
|
||||
* Represents a single trade offer from a Kidnapper Merchant.
|
||||
*
|
||||
* Price is in gold ingots and/or gold nuggets.
|
||||
* Example: 3x Gold Ingot + 5x Gold Nugget for 1x Ropes
|
||||
*/
|
||||
public class MerchantTrade {
|
||||
|
||||
private final ItemStack item;
|
||||
private final int ingotPrice;
|
||||
private final int nuggetPrice;
|
||||
|
||||
public MerchantTrade(ItemStack item, int ingotPrice, int nuggetPrice) {
|
||||
this.item = item.copy();
|
||||
this.ingotPrice = Math.max(0, ingotPrice);
|
||||
this.nuggetPrice = Math.max(0, nuggetPrice);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the player can afford this trade with the given stacks.
|
||||
*
|
||||
* @param ingots Stack of gold ingots (or empty)
|
||||
* @param nuggets Stack of gold nuggets (or empty)
|
||||
* @return true if player has enough gold
|
||||
*/
|
||||
public boolean canAfford(ItemStack ingots, ItemStack nuggets) {
|
||||
int ingotCount = ingots.is(Items.GOLD_INGOT) ? ingots.getCount() : 0;
|
||||
int nuggetCount = nuggets.is(Items.GOLD_NUGGET)
|
||||
? nuggets.getCount()
|
||||
: 0;
|
||||
|
||||
return ingotCount >= ingotPrice && nuggetCount >= nuggetPrice;
|
||||
}
|
||||
|
||||
/**
|
||||
* Consume the payment from the given stacks.
|
||||
* MUST call canAfford() before this!
|
||||
*
|
||||
* @param ingots Stack of gold ingots
|
||||
* @param nuggets Stack of gold nuggets
|
||||
*/
|
||||
public void consumePayment(ItemStack ingots, ItemStack nuggets) {
|
||||
if (ingots.is(Items.GOLD_INGOT)) {
|
||||
ingots.shrink(ingotPrice);
|
||||
}
|
||||
if (nuggets.is(Items.GOLD_NUGGET)) {
|
||||
nuggets.shrink(nuggetPrice);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the item being sold.
|
||||
* @return Copy of the item stack
|
||||
*/
|
||||
public ItemStack getItem() {
|
||||
return item.copy();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get display name of the item.
|
||||
*/
|
||||
public Component getItemName() {
|
||||
return item.getHoverName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get ingot price.
|
||||
*/
|
||||
public int getIngotPrice() {
|
||||
return ingotPrice;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get nugget price.
|
||||
*/
|
||||
public int getNuggetPrice() {
|
||||
return nuggetPrice;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get formatted price display.
|
||||
* Examples:
|
||||
* - "5 gold + 12 nuggets"
|
||||
* - "3 gold"
|
||||
* - "8 nuggets"
|
||||
*/
|
||||
public Component getPriceDisplay() {
|
||||
if (ingotPrice > 0 && nuggetPrice > 0) {
|
||||
return Component.literal(
|
||||
ingotPrice + " gold + " + nuggetPrice + " nuggets"
|
||||
);
|
||||
} else if (ingotPrice > 0) {
|
||||
return Component.literal(ingotPrice + " gold");
|
||||
} else if (nuggetPrice > 0) {
|
||||
return Component.literal(nuggetPrice + " nuggets");
|
||||
} else {
|
||||
return Component.literal("Free");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Save this trade to NBT.
|
||||
*/
|
||||
public CompoundTag save() {
|
||||
CompoundTag tag = new CompoundTag();
|
||||
tag.put("Item", item.save(new CompoundTag()));
|
||||
tag.putInt("IngotPrice", ingotPrice);
|
||||
tag.putInt("NuggetPrice", nuggetPrice);
|
||||
return tag;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load a trade from NBT.
|
||||
*/
|
||||
public static MerchantTrade load(CompoundTag tag) {
|
||||
ItemStack item = ItemStack.of(tag.getCompound("Item"));
|
||||
int ingotPrice = tag.getInt("IngotPrice");
|
||||
int nuggetPrice = tag.getInt("NuggetPrice");
|
||||
return new MerchantTrade(item, ingotPrice, nuggetPrice);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return (
|
||||
item.getHoverName().getString() +
|
||||
" for " +
|
||||
getPriceDisplay().getString()
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user