Skip to content

Commit 85cff62

Browse files
committed
Mythril Drill rework
- Drill no longer needs to be activated - Fuel is no longer consumed over time - One fuel is consumed per block broken - Increased max fuel capacity to 4000 - Fuel per Morkite: 10 -> 20 - Increased invisible durability reduction: 30% -> 60% chance of ignoring damage - yes this has always been a thing while the drill is active - Buffed upgrades: - Golden Luck Bonus: 1 -> 2 Luck - Golden Luck Gold Drop chance: 2.5% -> 3.33% - Aqua Affinity Air: 24 -> 60 ticks air restored when mining an ore - Regrowth: Will slowly increase fuel (NEW)
1 parent be69699 commit 85cff62

File tree

8 files changed

+103
-121
lines changed

8 files changed

+103
-121
lines changed

src/main/java/nourl/mythicmetals/MythicMetalsClient.java

+17-5
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@
1414
import net.minecraft.client.MinecraftClient;
1515
import net.minecraft.client.item.ModelPredicateProviderRegistry;
1616
import net.minecraft.client.network.AbstractClientPlayerEntity;
17-
import net.minecraft.client.render.*;
17+
import net.minecraft.client.render.OverlayTexture;
18+
import net.minecraft.client.render.RenderLayer;
19+
import net.minecraft.client.render.TexturedRenderLayers;
20+
import net.minecraft.client.render.VertexConsumer;
1821
import net.minecraft.client.render.block.entity.BlockEntityRendererFactories;
1922
import net.minecraft.client.render.entity.feature.FeatureRendererContext;
2023
import net.minecraft.client.render.entity.model.PlayerEntityModel;
@@ -34,19 +37,28 @@
3437
import net.minecraft.util.shape.VoxelShape;
3538
import net.minecraft.util.shape.VoxelShapes;
3639
import net.minecraft.world.World;
37-
import nourl.mythicmetals.armor.*;
40+
import nourl.mythicmetals.armor.CelestiumElytra;
41+
import nourl.mythicmetals.armor.HallowedArmor;
42+
import nourl.mythicmetals.armor.MythicArmor;
3843
import nourl.mythicmetals.blocks.MythicBlocks;
3944
import nourl.mythicmetals.client.CarmotShieldHudHandler;
4045
import nourl.mythicmetals.client.models.MythicModelHandler;
4146
import nourl.mythicmetals.client.rendering.*;
4247
import nourl.mythicmetals.compat.IsometricArmorStandExporter;
43-
import nourl.mythicmetals.component.*;
48+
import nourl.mythicmetals.component.DrillComponent;
49+
import nourl.mythicmetals.component.GoldFoldedComponent;
50+
import nourl.mythicmetals.component.MythicDataComponents;
51+
import nourl.mythicmetals.component.PrometheumComponent;
4452
import nourl.mythicmetals.data.MythicTags;
4553
import nourl.mythicmetals.entity.MythicEntities;
4654
import nourl.mythicmetals.item.tools.*;
47-
import nourl.mythicmetals.misc.*;
55+
import nourl.mythicmetals.misc.BlockBreaker;
56+
import nourl.mythicmetals.misc.RegistryHelper;
57+
import nourl.mythicmetals.misc.ShieldUsePredicate;
58+
import nourl.mythicmetals.misc.UsefulSingletonForColorUtil;
4859
import nourl.mythicmetals.mixin.WorldRendererInvoker;
4960
import nourl.mythicmetals.registry.RegisterBlockEntityTypes;
61+
5062
import java.util.ArrayList;
5163
import java.util.Calendar;
5264

@@ -212,7 +224,7 @@ private void registerModelPredicates() {
212224

213225
ModelPredicateProviderRegistry.register(
214226
MythicTools.MYTHRIL_DRILL, RegistryHelper.id("is_active"),
215-
(stack, world, entity, seed) -> stack.getOrDefault(MythicDataComponents.DRILL, DrillComponent.DEFAULT).isActive() ? 0 : 1
227+
(stack, world, entity, seed) -> stack.getOrDefault(MythicDataComponents.DRILL, DrillComponent.DEFAULT).hasFuel() ? 0 : 1
216228
);
217229

218230
registerMidasPredicates(MythicTools.MIDAS_GOLD_SWORD);

src/main/java/nourl/mythicmetals/component/DrillComponent.java

+16-14
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,36 @@
22

33
import io.wispforest.endec.Endec;
44
import io.wispforest.endec.impl.StructEndecBuilder;
5-
import io.wispforest.owo.ui.core.Color;
65
import net.minecraft.item.*;
76
import net.minecraft.item.tooltip.TooltipAppender;
87
import net.minecraft.item.tooltip.TooltipType;
98
import net.minecraft.text.Style;
109
import net.minecraft.text.Text;
1110
import net.minecraft.util.Formatting;
1211
import net.minecraft.util.Util;
12+
import net.minecraft.util.math.MathHelper;
1313
import nourl.mythicmetals.blocks.MythicBlocks;
1414
import nourl.mythicmetals.item.MythicItems;
1515
import nourl.mythicmetals.misc.UsefulSingletonForColorUtil;
1616
import java.util.HashMap;
1717
import java.util.Map;
1818
import java.util.function.Consumer;
1919

20-
public record DrillComponent(int fuel, boolean isActive) implements TooltipAppender {
20+
public record DrillComponent(int fuel) implements TooltipAppender {
2121
public static final Endec<DrillComponent> ENDEC = StructEndecBuilder.of(
2222
Endec.INT.fieldOf("fuel", DrillComponent::fuel),
23-
Endec.BOOLEAN.fieldOf("is_active", DrillComponent::isActive),
2423
DrillComponent::new
2524
);
26-
public static final DrillComponent DEFAULT = new DrillComponent(0, false);
25+
public static final DrillComponent DEFAULT = new DrillComponent(0);
2726

2827
/**
29-
* A fully fueled drill should last 30 minutes
28+
* One fuel lets you break one block with all the Drill perks
3029
*/
31-
public static final int MAX_FUEL = 1000;
30+
public static final int MAX_FUEL = 4000;
3231
/**
3332
* Each piece of Morkite will fuel the drill by this constant worth of units
3433
*/
35-
public static final int FUEL_CONSTANT = 10;
34+
public static final int FUEL_CONSTANT = 20;
3635

3736
/**
3837
* Map used to store the different types of drill upgrades
@@ -47,22 +46,25 @@ public record DrillComponent(int fuel, boolean isActive) implements TooltipAppen
4746
map.put(Items.AIR, "empty");
4847
});
4948

50-
public boolean hasFuel() {
51-
return this.fuel > 0;
49+
50+
public DrillComponent reduce(int fuel) {
51+
return new DrillComponent(MathHelper.clamp(fuel - 1, 0, MAX_FUEL));
5252
}
5353

54-
public static DrillComponent toggleActiveState(DrillComponent component) {
55-
return new DrillComponent(component.fuel(), !component.isActive());
54+
public DrillComponent increase(int fuel) {
55+
return new DrillComponent(MathHelper.clamp(fuel + 1, 0, MAX_FUEL));
56+
}
57+
58+
public boolean hasFuel() {
59+
return this.fuel > 0;
5660
}
5761

5862
@Override
5963
public void appendTooltip(Item.TooltipContext context, Consumer<Text> tooltip, TooltipType type) {
6064

6165
// Activation Status
62-
if (this.isActive) {
66+
if (this.hasFuel()) {
6367
tooltip.accept(Text.translatable("tooltip.mythril_drill.activated").formatted(Formatting.AQUA));
64-
} else {
65-
tooltip.accept(Text.translatable("tooltip.mythril_drill.deactivated").setStyle(Style.EMPTY.withColor(Color.ofRgb(0x622622).rgb()).withFormatting(Formatting.ITALIC)));
6668
}
6769
if (this.fuel == 0) {
6870
tooltip.accept(Text.translatable("tooltip.mythril_drill.refuel").setStyle(Style.EMPTY.withColor(Formatting.GRAY)));

src/main/java/nourl/mythicmetals/data/MythicTags.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import net.minecraft.enchantment.Enchantment;
55
import net.minecraft.item.Item;
66
import net.minecraft.registry.RegistryKeys;
7-
import net.minecraft.registry.entry.RegistryEntryList;
87
import net.minecraft.registry.tag.TagKey;
98
import net.minecraft.world.biome.Biome;
109
import nourl.mythicmetals.misc.RegistryHelper;
@@ -31,6 +30,7 @@ public class MythicTags {
3130
public static final TagKey<Biome> OSMIUM_BIOMES = TagKey.of(RegistryKeys.BIOME, RegistryHelper.id("osmium_biomes"));
3231
public static final TagKey<Biome> MYTHIC_ORE_BIOMES = TagKey.of(RegistryKeys.BIOME, RegistryHelper.id("mythic_ore_biomes"));
3332
public static final TagKey<Enchantment> SILK_TOUCH_LIKE = TagKey.of(RegistryKeys.ENCHANTMENT, RegistryHelper.id("silk_touch_like"));
33+
public static final TagKey<Block> MINEABLE_MYTHRIL_DRILL = TagKey.of(RegistryKeys.BLOCK, RegistryHelper.id("mineable/mythril_drill"));
3434
}
3535

3636

src/main/java/nourl/mythicmetals/item/tools/MythicTools.java

+17-5
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,30 @@
55
import net.fabricmc.loader.api.FabricLoader;
66
import net.minecraft.component.DataComponentTypes;
77
import net.minecraft.component.type.PotionContentsComponent;
8-
import net.minecraft.entity.*;
8+
import net.minecraft.entity.EntityType;
9+
import net.minecraft.entity.EquipmentSlot;
10+
import net.minecraft.entity.LivingEntity;
911
import net.minecraft.entity.passive.FrogEntity;
1012
import net.minecraft.entity.player.PlayerEntity;
11-
import net.minecraft.item.*;
13+
import net.minecraft.item.Item;
14+
import net.minecraft.item.ItemStack;
15+
import net.minecraft.item.MinecartItem;
16+
import net.minecraft.item.SwordItem;
1217
import net.minecraft.potion.Potion;
1318
import net.minecraft.registry.Registries;
14-
import net.minecraft.util.*;
19+
import net.minecraft.util.ActionResult;
20+
import net.minecraft.util.Hand;
21+
import net.minecraft.util.Identifier;
22+
import net.minecraft.util.Rarity;
1523
import nourl.mythicmetals.MythicMetals;
1624
import nourl.mythicmetals.armor.AquariumToolSet;
1725
import nourl.mythicmetals.component.*;
18-
import nourl.mythicmetals.item.*;
26+
import nourl.mythicmetals.item.RedAegisSword;
27+
import nourl.mythicmetals.item.RuniteArrowItem;
28+
import nourl.mythicmetals.item.StarPlatinumArrowItem;
29+
import nourl.mythicmetals.item.TippedRuniteArrowItem;
1930
import nourl.mythicmetals.misc.RegistryHelper;
31+
2032
import java.lang.reflect.Field;
2133
import java.util.HashMap;
2234
import java.util.Map;
@@ -142,7 +154,7 @@ public class MythicTools implements SimpleFieldProcessingSubject<ToolSet> {
142154
.group(MythicMetals.TABBED_GROUP).tab(2)
143155
.rarity(Rarity.UNCOMMON)
144156
.attributeModifiers(createAttributeModifiers(3, 1.5f))
145-
.component(MythicDataComponents.DRILL, new DrillComponent(0, false))
157+
.component(MythicDataComponents.DRILL, new DrillComponent(0))
146158
.component(MythicDataComponents.UPGRADES, UpgradeComponent.empty(2))
147159
);
148160
public static final Item PLATINUM_WATCH = new Item(new OwoItemSettings().group(MythicMetals.TABBED_GROUP).tab(2));

0 commit comments

Comments
 (0)