Skip to content

Commit a4cea10

Browse files
Infinite spray can. Is there more to say? It's a spray can, that's infinite, yk this already. (#32)
* Infinite spray can. * Delete run/server.properties * Fixed up some lang.
1 parent fc3d38a commit a4cea10

18 files changed

Lines changed: 863 additions & 58 deletions

File tree

run/server.properties

Lines changed: 0 additions & 58 deletions
This file was deleted.

src/generated/resources/assets/gtmutils/lang/en_ud.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
11
{
2+
"behaviour.paintspray.infinite.fluid_storage": "ᗺɯ %s / %sɟ§ :ʇuıɐԀq§",
3+
"behaviour.paintspray.infinite.status.color": "%sɟ§ :ǝpoWㄥ§",
4+
"behaviour.paintspray.infinite.status.solvent": "ʇuǝʌןoS",
5+
"behaviour.paintspray.infinite.tooltip.current_color": "%s :ɹoןoƆ ʇuǝɹɹnƆ",
6+
"behaviour.paintspray.infinite.tooltip.info": "˙ʇuıɐd oʇㄥ§ ʞɔıןɔ-ʇɥbıᴚǝ§",
7+
"behaviour.paintspray.infinite.tooltip.info_1": "˙ʇuıɐd uıɐɥɔ oʇㄥ§ ʞɔoןq ǝןqɐʇuıɐd uo ʞɔıןɔ-ʇɥbıᴚ + ʇɟıɥSǝ§",
8+
"behaviour.paintspray.infinite.tooltip.info_2": "˙nuǝW uoıʇɔǝןǝS ɹoןoƆ uǝdo oʇㄥ§ ʞɔıןɔ-ʇɥbıᴚ + ʇɟıɥSǝ§",
9+
"behaviour.paintspray.infinite.tooltip.solvent": ")buıuɐǝןƆ( ʇuǝʌןoSq§ :ǝpoWㄥ§",
10+
"behaviour.paintspray.solvent.short": "ʇuǝʌןoS",
211
"block.gtmutils.enlarged_stocking_bus.desc.0": "ʞɹoʍʇǝu ƎW ǝɥʇ ɯoɹɟ ʎןʇɔǝɹıp sɯǝʇı sǝʌǝıɹʇǝᴚ",
312
"block.gtmutils.enlarged_stocking_bus.desc.1": "ʇsıן buıʞɔoʇs ǝbɹɐן-ɐɹʇxƎ",
413
"block.gtmutils.enlarged_stocking_bus.desc.2": "sɯǝʇı ƎW ʇuɐpunqɐ ʇsoɯ ǝɥʇ ɥʇıʍ ʇsıן ǝɥʇ ןןıɟ uɐɔ ןןnԀ-oʇnⱯ",
@@ -72,6 +81,7 @@
7281
"config.gtmutils.option.enlargedStockingSizeRows": "sʍoᴚǝzıSbuıʞɔoʇSpǝbɹɐןuǝ",
7382
"config.gtmutils.option.expandedBuffersEnabled": "pǝןqɐuƎsɹǝɟɟnᗺpǝpuɐdxǝ",
7483
"config.gtmutils.option.features": "sǝɹnʇɐǝɟ",
84+
"config.gtmutils.option.infiniteSprayCanEnabled": "pǝןqɐuƎuɐƆʎɐɹdSǝʇıuıɟuı",
7585
"config.gtmutils.option.omnibreakerEnabled": "pǝןqɐuƎɹǝʞɐǝɹqıuɯo",
7686
"config.gtmutils.option.omnibreakerEnergyCapacity": "ʎʇıɔɐdɐƆʎbɹǝuƎɹǝʞɐǝɹqıuɯo",
7787
"config.gtmutils.option.omnibreakerTier": "ɹǝı⟘ɹǝʞɐǝɹqıuɯo",
@@ -95,6 +105,7 @@
95105
"gtmutils.multiblock.pterb_machine.coolant_usage": "puoɔǝs ɹǝd %s ɟo qɯ%s suıɐɹᗡɔ§",
96106
"gtmutils.pterb.current_frequency": "%s :ʎɔuǝnbǝɹɟ ʇuǝɹɹnƆ",
97107
"gtmutils.pterb_machine.invalid_frequency": "¡0 ʎɔuǝnbǝɹɟ uo ʞɹoʍ ʇou ןןıʍ s⟘ⱯM",
108+
"gui.gtmutils.color_select.title": "ɹoןoƆ ʇɔǝןǝS",
98109
"item.gtceu.tool.ev_buzzsaw": ")ΛƎ( ʍɐszznᗺ %s",
99110
"item.gtceu.tool.ev_chainsaw": ")ΛƎ( ʍɐsuıɐɥƆ %s",
100111
"item.gtceu.tool.ev_screwdriver": ")ΛƎ( ɹǝʌıɹpʍǝɹɔS ɔıɹʇɔǝןƎ %s",
@@ -125,6 +136,7 @@
125136
"item.gtmutils.cupronickel_credit": "ʇıpǝɹƆ ןǝʞɔıuoɹdnƆ",
126137
"item.gtmutils.doge_coin": "uıoƆ ǝboᗡ",
127138
"item.gtmutils.gold_credit": "ʇıpǝɹƆ pןo⅁",
139+
"item.gtmutils.infinite_spray_can": "uɐƆ ʎɐɹdS ǝʇıuıɟuI",
128140
"item.gtmutils.luv_power_unit": "ʇıu∩ ɹǝʍoԀ ΛnꞀ",
129141
"item.gtmutils.naquadah_credit": "ʇıpǝɹƆ ɥɐpɐnbɐN",
130142
"item.gtmutils.neutronium_credit": "ʇıpǝɹƆ ɯnıuoɹʇnǝN",
@@ -134,6 +146,8 @@
134146
"item.gtmutils.silver_credit": "ʇıpǝɹƆ ɹǝʌןıS",
135147
"item.gtmutils.zpm_power_unit": "ʇıu∩ ɹǝʍoԀ WԀZ",
136148
"itemGroup.gtmutils.creative_tab": "sǝıʇıןıʇ∩ uɹǝpoW ɥɔǝ⟘bǝɹ⅁",
149+
"key.categories.gtmutils": "sןıʇ∩ W⟘⅁",
150+
"key.gtmutils.spray_can_menu": "nuǝW ןɐıpɐᴚ uɐƆ ʎɐɹdS uǝdO",
137151
"material.gtmutils.quantum_coolant": "ʇuɐןooƆ ɯnʇuɐnὉ",
138152
"tooltip.omnibreaker.can_break_anything": "¡⅁NIH⟘ʎNⱯ ǝuıɯ-ɐʇsuı uɐɔ ɹǝʞɐǝɹq-ıuɯO ǝɥ⟘",
139153
"tooltip.omnibreaker.charge_status": "∩Ǝ %s / ∩Ǝ %s :ʎbɹǝuƎ",

src/generated/resources/assets/gtmutils/lang/en_us.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
11
{
2+
"behaviour.paintspray.infinite.fluid_storage": "§bPaint: §f%s / %s mB",
3+
"behaviour.paintspray.infinite.status.color": "§7Mode: §f%s",
4+
"behaviour.paintspray.infinite.status.solvent": "Solvent",
5+
"behaviour.paintspray.infinite.tooltip.current_color": "Current Color: %s",
6+
"behaviour.paintspray.infinite.tooltip.info": "§eRight-click §7to paint.",
7+
"behaviour.paintspray.infinite.tooltip.info_1": "§eShift + Right-click on paintable block §7to chain paint.",
8+
"behaviour.paintspray.infinite.tooltip.info_2": "§eShift + Right-click §7to open Color Selection Menu.",
9+
"behaviour.paintspray.infinite.tooltip.solvent": "§7Mode: §bSolvent (Cleaning)",
10+
"behaviour.paintspray.solvent.short": "Solvent",
211
"block.gtmutils.enlarged_stocking_bus.desc.0": "Retrieves items directly from the ME network",
312
"block.gtmutils.enlarged_stocking_bus.desc.1": "Extra-large stocking list",
413
"block.gtmutils.enlarged_stocking_bus.desc.2": "Auto-Pull can fill the list with the most abundant ME items",
@@ -72,6 +81,7 @@
7281
"config.gtmutils.option.enlargedStockingSizeRows": "enlargedStockingSizeRows",
7382
"config.gtmutils.option.expandedBuffersEnabled": "expandedBuffersEnabled",
7483
"config.gtmutils.option.features": "features",
84+
"config.gtmutils.option.infiniteSprayCanEnabled": "infiniteSprayCanEnabled",
7585
"config.gtmutils.option.omnibreakerEnabled": "omnibreakerEnabled",
7686
"config.gtmutils.option.omnibreakerEnergyCapacity": "omnibreakerEnergyCapacity",
7787
"config.gtmutils.option.omnibreakerTier": "omnibreakerTier",
@@ -95,6 +105,7 @@
95105
"gtmutils.multiblock.pterb_machine.coolant_usage": "§cDrains %smb of %s per second",
96106
"gtmutils.pterb.current_frequency": "Current frequency: %s",
97107
"gtmutils.pterb_machine.invalid_frequency": "WATs will not work on frequency 0!",
108+
"gui.gtmutils.color_select.title": "Select Color",
98109
"item.gtceu.tool.ev_buzzsaw": "%s Buzzsaw (EV)",
99110
"item.gtceu.tool.ev_chainsaw": "%s Chainsaw (EV)",
100111
"item.gtceu.tool.ev_screwdriver": "%s Electric Screwdriver (EV)",
@@ -125,6 +136,7 @@
125136
"item.gtmutils.cupronickel_credit": "Cupronickel Credit",
126137
"item.gtmutils.doge_coin": "Doge Coin",
127138
"item.gtmutils.gold_credit": "Gold Credit",
139+
"item.gtmutils.infinite_spray_can": "Infinite Spray Can",
128140
"item.gtmutils.luv_power_unit": "LuV Power Unit",
129141
"item.gtmutils.naquadah_credit": "Naquadah Credit",
130142
"item.gtmutils.neutronium_credit": "Neutronium Credit",
@@ -134,6 +146,8 @@
134146
"item.gtmutils.silver_credit": "Silver Credit",
135147
"item.gtmutils.zpm_power_unit": "ZPM Power Unit",
136148
"itemGroup.gtmutils.creative_tab": "GregTech Modern Utilities",
149+
"key.categories.gtmutils": "GTM Utils",
150+
"key.gtmutils.spray_can_menu": "Open Spray Can Radial Menu",
137151
"material.gtmutils.quantum_coolant": "Quantum Coolant",
138152
"tooltip.omnibreaker.can_break_anything": "The Omni-breaker can insta-mine ANYTHING!",
139153
"tooltip.omnibreaker.charge_status": "Energy: %s EU / %s EU",
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"parent": "minecraft:item/handheld",
3+
"textures": {
4+
"layer0": "gtmutils:item/tools/infinite_spray_can"
5+
}
6+
}

src/main/java/net/neganote/gtutilities/GregTechModernUtilities.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@
1717
import net.minecraft.world.item.Items;
1818
import net.minecraftforge.api.distmarker.Dist;
1919
import net.minecraftforge.api.distmarker.OnlyIn;
20+
import net.minecraftforge.client.event.RegisterGuiOverlaysEvent;
2021
import net.minecraftforge.common.MinecraftForge;
2122
import net.minecraftforge.eventbus.api.IEventBus;
2223
import net.minecraftforge.eventbus.api.SubscribeEvent;
2324
import net.minecraftforge.fml.common.Mod;
2425
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
2526
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
2627
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
28+
import net.neganote.gtutilities.client.renderer.SprayCanHudOverlay;
2729
import net.neganote.gtutilities.client.renderer.UtilShaders;
2830
import net.neganote.gtutilities.common.data.UtilPlaceholders;
2931
import net.neganote.gtutilities.common.item.UtilItems;
@@ -34,6 +36,7 @@
3436
import net.neganote.gtutilities.common.tools.UtilToolConnection;
3537
import net.neganote.gtutilities.config.UtilConfig;
3638
import net.neganote.gtutilities.datagen.UtilDatagen;
39+
import net.neganote.gtutilities.network.UtilsNetwork;
3740

3841
import com.tterrag.registrate.util.entry.RegistryEntry;
3942
import org.apache.logging.log4j.LogManager;
@@ -108,6 +111,7 @@ public static ResourceLocation id(String path) {
108111

109112
private void commonSetup(final FMLCommonSetupEvent event) {
110113
event.enqueueWork(() -> {
114+
UtilsNetwork.init();
111115
LOGGER.info("Hello from common setup! This is *after* registries are done, so we can do this:");
112116
LOGGER.info("Look, I found a {}!", Items.DIAMOND);
113117
});
@@ -133,6 +137,17 @@ public void clientSetup(final FMLClientSetupEvent event) {
133137
});
134138
}
135139

140+
@Mod.EventBusSubscriber(modid = GregTechModernUtilities.MOD_ID,
141+
bus = Mod.EventBusSubscriber.Bus.MOD,
142+
value = Dist.CLIENT)
143+
public static class ClientModBusEvents {
144+
145+
@SubscribeEvent
146+
public static void registerGuiOverlays(RegisterGuiOverlaysEvent event) {
147+
event.registerAboveAll("spray_can_info", SprayCanHudOverlay.HUD_SPRAY_CAN);
148+
}
149+
}
150+
136151
// You MUST have this for custom materials.
137152
// Remember to register them not to GT's namespace, but your own.
138153
private void addMaterialRegistries(MaterialRegistryEvent event) {
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package net.neganote.gtutilities.client.event;
2+
3+
import net.minecraft.client.Minecraft;
4+
import net.minecraft.sounds.SoundEvents;
5+
import net.minecraft.world.InteractionHand;
6+
import net.minecraft.world.item.ItemStack;
7+
import net.minecraft.world.phys.HitResult;
8+
import net.minecraftforge.api.distmarker.Dist;
9+
import net.minecraftforge.client.event.InputEvent;
10+
import net.minecraftforge.event.TickEvent;
11+
import net.minecraftforge.eventbus.api.SubscribeEvent;
12+
import net.minecraftforge.fml.common.Mod;
13+
import net.neganote.gtutilities.GregTechModernUtilities;
14+
import net.neganote.gtutilities.client.gui.screen.ColorRadialMenuScreen;
15+
import net.neganote.gtutilities.client.keybind.UtilKeybinds;
16+
import net.neganote.gtutilities.common.item.InfiniteSprayCanItem;
17+
import net.neganote.gtutilities.network.UtilsNetwork;
18+
import net.neganote.gtutilities.network.packet.SelectColorPacket;
19+
20+
@Mod.EventBusSubscriber(modid = GregTechModernUtilities.MOD_ID,
21+
bus = Mod.EventBusSubscriber.Bus.FORGE,
22+
value = Dist.CLIENT)
23+
public class ClientTickHandler {
24+
25+
@SubscribeEvent
26+
public static void onClientTick(TickEvent.ClientTickEvent event) {
27+
if (event.phase != TickEvent.Phase.END) return;
28+
29+
Minecraft mc = Minecraft.getInstance();
30+
if (mc.player == null || mc.level == null) return;
31+
32+
if (UtilKeybinds.SPRAY_CAN_MENU.consumeClick()) {
33+
ItemStack stack = mc.player.getMainHandItem();
34+
if (stack.getItem() instanceof InfiniteSprayCanItem) {
35+
mc.setScreen(new ColorRadialMenuScreen(InteractionHand.MAIN_HAND));
36+
}
37+
}
38+
}
39+
40+
@SubscribeEvent
41+
public static void onMouseScroll(InputEvent.MouseScrollingEvent event) {
42+
Minecraft mc = Minecraft.getInstance();
43+
44+
if (mc.player == null || mc.screen != null) return;
45+
46+
if (mc.options.keyShift.isDown()) {
47+
ItemStack stack = mc.player.getMainHandItem();
48+
if (stack.getItem() instanceof InfiniteSprayCanItem) {
49+
double scrollDelta = event.getScrollDelta();
50+
51+
event.setCanceled(true);
52+
53+
int currentColor = stack.getOrCreateTag().getInt("color");
54+
if (!stack.getOrCreateTag().contains("color")) currentColor = -1;
55+
56+
int direction = scrollDelta > 0 ? 1 : -1;
57+
int nextColor = currentColor + direction;
58+
59+
if (nextColor < -1) nextColor = 15;
60+
if (nextColor > 15) nextColor = -1;
61+
62+
UtilsNetwork.CHANNEL.sendToServer(new SelectColorPacket(InteractionHand.MAIN_HAND, nextColor));
63+
64+
mc.player.playSound(SoundEvents.UI_BUTTON_CLICK.value(), 0.1f, 1.5f + (nextColor * 0.05f));
65+
}
66+
}
67+
}
68+
69+
@SubscribeEvent
70+
public static void onRightClick(InputEvent.InteractionKeyMappingTriggered event) {
71+
Minecraft mc = Minecraft.getInstance();
72+
if (mc.player == null) return;
73+
74+
if (!event.isUseItem()) return;
75+
ItemStack stack = mc.player.getMainHandItem();
76+
if (!(stack.getItem() instanceof InfiniteSprayCanItem)) return;
77+
78+
if (!mc.player.isShiftKeyDown()) return;
79+
if (mc.hitResult == null || mc.hitResult.getType() != HitResult.Type.MISS) return;
80+
81+
event.setCanceled(true);
82+
mc.setScreen(new ColorRadialMenuScreen(InteractionHand.MAIN_HAND));
83+
}
84+
}

0 commit comments

Comments
 (0)