diff --git a/src/main/java/mc/duzo/timeless/suit/ironman/mk42/MarkFortyTwoSuit.java b/src/main/java/mc/duzo/timeless/suit/ironman/mk42/MarkFortyTwoSuit.java new file mode 100644 index 00000000..032c1ad7 --- /dev/null +++ b/src/main/java/mc/duzo/timeless/suit/ironman/mk42/MarkFortyTwoSuit.java @@ -0,0 +1,73 @@ +package mc.duzo.timeless.suit.ironman.mk42; + +import mc.duzo.timeless.Timeless; +import mc.duzo.timeless.power.PowerList; +import mc.duzo.timeless.power.PowerRegistry; +import mc.duzo.timeless.suit.client.ClientSuit; +import mc.duzo.timeless.suit.client.render.SuitModel; +import mc.duzo.timeless.suit.ironman.IronManSuit; +import mc.duzo.timeless.suit.ironman.client.GenericIronManModel; +import mc.duzo.timeless.suit.set.SetRegistry; +import mc.duzo.timeless.suit.set.SuitSet; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.util.Identifier; + +import java.util.function.Supplier; + +public class MarkFortyTwoSuit extends IronManSuit { + private final PowerList powers; + + public MarkFortyTwoSuit() { + super("mark_forty_two"); + + this.powers = PowerList.of(PowerRegistry.SENTRY, PowerRegistry.BOOSTED_FLIGHT, PowerRegistry.HOVER, PowerRegistry.MASK_TOGGLE, PowerRegistry.JARVIS); + } + + @Override + public SuitSet getSet() { + return SetRegistry.MARK_FORTY_TWO; + } + + @Override + public PowerList getPowers() { + return this.powers; + } + + @Environment(EnvType.CLIENT) + @Override + protected ClientSuit createClient() { + return new ClientSuit(this) { + @Override + public Supplier model() { + return () -> new GenericIronManModel() { // todo - this has its own model, see heroes-assets in discord. + private ClientSuit parent; + + @Override + public ClientSuit getSuit() { + if (this.parent == null) { + this.parent = SetRegistry.MARK_FORTY_TWO.suit().toClient(); + } + + return this.parent; + } + }; + } + }; + } + + @Override + public int getFlightSpeed(boolean hasBoost) { + return 45; + } + + @Override + public float getHoverScale() { + return 0.75f; + } + + @Override + public Identifier getMaskAnimation(boolean isOpening) { + return new Identifier(Timeless.MOD_ID, "ironman_generic_mask_" + (isOpening ? "open" : "close")); + } +} diff --git a/src/main/java/mc/duzo/timeless/suit/set/SetRegistry.java b/src/main/java/mc/duzo/timeless/suit/set/SetRegistry.java index dfea107e..9a3c73e5 100644 --- a/src/main/java/mc/duzo/timeless/suit/set/SetRegistry.java +++ b/src/main/java/mc/duzo/timeless/suit/set/SetRegistry.java @@ -1,5 +1,6 @@ package mc.duzo.timeless.suit.set; +import mc.duzo.timeless.suit.ironman.mk42.MarkFortyTwoSuit; import mc.duzo.timeless.suit.moonknight.item.MoonKnightSuitItem; import mc.duzo.timeless.suit.moonknight.jake.JakeSuit; import mc.duzo.timeless.suit.moonknight.marc.MarcSuit; @@ -27,6 +28,7 @@ public static T register(T suit) { return Registry.register(REGISTRY, suit.id(), suit); } + public static SuitSet MARK_FORTY_TWO; public static SuitSet MARK_SEVEN; public static SuitSet MARK_FIVE; public static SuitSet MARK_THREE; @@ -38,6 +40,7 @@ public static T register(T suit) { public static void init() { // Iron Man + MARK_FORTY_TWO = register(new RegisteringSuitSet(new MarkFortyTwoSuit(), IronManSuitItem::new)); MARK_SEVEN = register(new RegisteringSuitSet(new MarkSevenSuit(), IronManSuitItem::new)); MARK_FIVE = register(new RegisteringSuitSet(new MarkFiveSuit(), IronManSuitItem::new)); MARK_THREE = register(new RegisteringSuitSet(new MarkThreeSuit(), IronManSuitItem::new)); diff --git a/src/main/resources/assets/timeless/textures/suit/iron_man_mark_forty_two.png b/src/main/resources/assets/timeless/textures/suit/iron_man_mark_forty_two.png new file mode 100644 index 00000000..9b50087d Binary files /dev/null and b/src/main/resources/assets/timeless/textures/suit/iron_man_mark_forty_two.png differ