aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/re/jag/parquet/mixin/SellMapFactoryMixin.java
blob: 9ff91f6bb199ba50e2812ac844bd6f76ec642cbe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package re.jag.parquet.mixin;

import net.minecraft.entity.Entity;
import net.minecraft.item.FilledMapItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.item.map.MapIcon;
import net.minecraft.item.map.MapState;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.text.LiteralText;
import net.minecraft.util.math.BlockPos;
import net.minecraft.village.TradeOffer;
import net.minecraft.village.TradeOffers;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow;

import java.util.Random;

// No longer activated, but left here, just in case
// Update: Turns out Mojang sets bugs to fixed with dice

@Mixin(targets="net.minecraft.village.TradeOffers$SellMapFactory")
public class SellMapFactoryMixin implements TradeOffers.Factory {
    @Shadow
    private int price;
    @Shadow
    private MapIcon.Type iconType;
    @Shadow
    private int maxUses;
    @Shadow
    private int experience;

    @Overwrite
    public TradeOffer create(Entity entity, Random random) {
        if (!(entity.world instanceof ServerWorld)) {
            return null;
        } else {
            ServerWorld serverWorld = (ServerWorld) entity.world;
            BlockPos blockPos = new BlockPos(0,0,0);
            ItemStack itemStack = FilledMapItem.createMap(serverWorld, blockPos.getX(), blockPos.getZ(), (byte)2, true, true);
            FilledMapItem.fillExplorationMap(serverWorld, itemStack);
            MapState.addDecorationsNbt(itemStack, blockPos, "+", this.iconType);
            itemStack.setCustomName(new LiteralText("Mojang-award for code quality"));
            return new TradeOffer(new ItemStack(Items.EMERALD, this.price), new ItemStack(Items.COMPASS), itemStack, this.maxUses, this.experience, 0.2F);
        }
    }
}