diff --git a/src/main/generated/assets/galacticraft/blockstates/cheese_whiz.json b/src/main/generated/assets/galacticraft/blockstates/cheese_whiz.json new file mode 100644 index 0000000000..df5d0b1780 --- /dev/null +++ b/src/main/generated/assets/galacticraft/blockstates/cheese_whiz.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "galacticraft:block/cheese_whiz" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/galacticraft/lang/en_us.json b/src/main/generated/assets/galacticraft/lang/en_us.json index 3c7d3eb8c3..07c3218837 100644 --- a/src/main/generated/assets/galacticraft/lang/en_us.json +++ b/src/main/generated/assets/galacticraft/lang/en_us.json @@ -15,6 +15,8 @@ "advancement.galacticraft.cheese_and_crackers.title": "It's Like No Cheese I've Ever Tasted...", "advancement.galacticraft.cheese_tax.description": "Give Cheese to a pet Wolf", "advancement.galacticraft.cheese_tax.title": "Cheese Tax", + "advancement.galacticraft.cheese_whiz.description": "Milk a cheese cow", + "advancement.galacticraft.cheese_whiz.title": "Is this cheese?", "advancement.galacticraft.circuit_fabricator.description": "Craft a Circuit Fabricator to make Wafers", "advancement.galacticraft.circuit_fabricator.title": "Fabricated", "advancement.galacticraft.coal_generator.description": "Craft a Coal Generator", @@ -126,6 +128,7 @@ "block.galacticraft.canned_food": "Canned Food", "block.galacticraft.cavernous_vines": "Cavernous Vines", "block.galacticraft.cavernous_vines_plant": "Cavernous Vines Plant", + "block.galacticraft.cheese_whiz": "Cheese Whiz", "block.galacticraft.chiseled_moon_rock_brick": "Chiseled Moon Rock Brick", "block.galacticraft.circuit_fabricator": "Circuit Fabricator", "block.galacticraft.circuit_fabricator.description": "Circuit Fabricator will process basic materials into silicon wafers, used for advanced machines.", @@ -497,6 +500,7 @@ "entity.galacticraft.arch_grey": "Arch Grey", "entity.galacticraft.bubble": "Bubble", "entity.galacticraft.buggy": "Buggy", + "entity.galacticraft.cheese_cow": "Cheese Cow", "entity.galacticraft.comet_cube": "Comet Cube", "entity.galacticraft.evolved_creeper": "Evolved Creeper", "entity.galacticraft.evolved_enderman": "Evolved Enderman", @@ -572,7 +576,9 @@ "item.galacticraft.canvas": "Canvas", "item.galacticraft.carbon_fragments": "Carbon Fragments", "item.galacticraft.cargo_rocket_schematic": "Cargo Rocket Schematic", + "item.galacticraft.cheese_cow_egg": "Cheese Cow Spawn Egg", "item.galacticraft.cheese_cracker": "Cracker with Moon Cheese", + "item.galacticraft.cheese_whiz_bucket": "Cheese Whiz Bucket", "item.galacticraft.cheeseburger": "Cheeseburger", "item.galacticraft.comet_cube_spawn_egg": "Comet Cube Spawn Egg", "item.galacticraft.compressed_aluminum": "Compressed Aluminum", @@ -782,6 +788,7 @@ "stat.galacticraft.safe_landing": "Safe Landings", "subtitles.galacticraft.entity.throwable_meteor_chunk.throw": "Meteor Chunk flies", "tag.item.c.batteries": "Batteries", + "tag.item.c.buckets.cheese_whiz": "Cheese Whiz Buckets", "tag.item.c.buckets.fuel": "Fuel Buckets", "tag.item.c.buckets.oil": "Oil Buckets", "tag.item.c.buckets.sulfuric_acid": "Sulfuric Acid Buckets", diff --git a/src/main/generated/assets/galacticraft/models/item/cheese_cow_egg.json b/src/main/generated/assets/galacticraft/models/item/cheese_cow_egg.json new file mode 100644 index 0000000000..d1aaa9d6ef --- /dev/null +++ b/src/main/generated/assets/galacticraft/models/item/cheese_cow_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} \ No newline at end of file diff --git a/src/main/generated/assets/galacticraft/models/item/cheese_whiz_bucket.json b/src/main/generated/assets/galacticraft/models/item/cheese_whiz_bucket.json new file mode 100644 index 0000000000..cc02969362 --- /dev/null +++ b/src/main/generated/assets/galacticraft/models/item/cheese_whiz_bucket.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "galacticraft:item/cheese_whiz_bucket" + } +} \ No newline at end of file diff --git a/src/main/generated/data/c/tags/item/buckets.json b/src/main/generated/data/c/tags/item/buckets.json index d4cda8eb15..b7389078ec 100644 --- a/src/main/generated/data/c/tags/item/buckets.json +++ b/src/main/generated/data/c/tags/item/buckets.json @@ -2,6 +2,7 @@ "values": [ "#c:buckets/oil", "#c:buckets/fuel", - "#c:buckets/sulfuric_acid" + "#c:sulfuric_acid", + "#c:buckets/cheese_whiz" ] } \ No newline at end of file diff --git a/src/main/generated/data/c/tags/item/buckets/cheese_whiz.json b/src/main/generated/data/c/tags/item/buckets/cheese_whiz.json new file mode 100644 index 0000000000..24fff417d0 --- /dev/null +++ b/src/main/generated/data/c/tags/item/buckets/cheese_whiz.json @@ -0,0 +1,5 @@ +{ + "values": [ + "galacticraft:cheese_whiz_bucket" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/galacticraft/advancement/recipes/moon_cheese_wheel.json b/src/main/generated/data/galacticraft/advancement/recipes/moon_cheese_wheel.json new file mode 100644 index 0000000000..24dbb89b40 --- /dev/null +++ b/src/main/generated/data/galacticraft/advancement/recipes/moon_cheese_wheel.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_cheese_whiz_bucket": { + "conditions": { + "items": [ + { + "items": "galacticraft:cheese_whiz_bucket" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "galacticraft:moon_cheese_wheel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_cheese_whiz_bucket" + ] + ], + "rewards": { + "recipes": [ + "galacticraft:moon_cheese_wheel" + ] + } +} \ No newline at end of file diff --git a/src/main/generated/data/galacticraft/loot_table/entities/cheese_cow.json b/src/main/generated/data/galacticraft/loot_table/entities/cheese_cow.json new file mode 100644 index 0000000000..8833b879e2 --- /dev/null +++ b/src/main/generated/data/galacticraft/loot_table/entities/cheese_cow.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 0.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 0.0 + }, + "enchantment": "minecraft:looting", + "function": "minecraft:enchanted_count_increase" + } + ], + "name": "galacticraft:moon_cheese_curd" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "galacticraft:entities/cheese_cow" +} \ No newline at end of file diff --git a/src/main/generated/data/galacticraft/recipe/compressing/moon_cheese_wheel.json b/src/main/generated/data/galacticraft/recipe/compressing/moon_cheese_wheel.json new file mode 100644 index 0000000000..06efcb321a --- /dev/null +++ b/src/main/generated/data/galacticraft/recipe/compressing/moon_cheese_wheel.json @@ -0,0 +1,12 @@ +{ + "type": "galacticraft:compressing_shapeless", + "ingredients": [ + { + "item": "galacticraft:cheese_whiz_bucket" + } + ], + "result": { + "count": 1, + "id": "galacticraft:moon_cheese_wheel" + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/advancement/galacticraft/cheese_whiz.json b/src/main/generated/data/minecraft/advancement/galacticraft/cheese_whiz.json new file mode 100644 index 0000000000..d217ee4e06 --- /dev/null +++ b/src/main/generated/data/minecraft/advancement/galacticraft/cheese_whiz.json @@ -0,0 +1,40 @@ +{ + "parent": "minecraft:galacticraft/eat_moon_cheese_curd", + "criteria": { + "milk_cheese_cow": { + "conditions": { + "entity": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "type": "galacticraft:cheese_cow" + } + } + ], + "item": { + "items": "minecraft:bucket" + } + }, + "trigger": "minecraft:player_interacted_with_entity" + } + }, + "display": { + "description": { + "translate": "advancement.galacticraft.cheese_whiz.description" + }, + "icon": { + "count": 1, + "id": "galacticraft:moon_cheese_wheel" + }, + "title": { + "translate": "advancement.galacticraft.cheese_whiz.title" + } + }, + "requirements": [ + [ + "milk_cheese_cow" + ] + ], + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/block/replaceable.json b/src/main/generated/data/minecraft/tags/block/replaceable.json index 2602fc067b..b91bd90c1b 100644 --- a/src/main/generated/data/minecraft/tags/block/replaceable.json +++ b/src/main/generated/data/minecraft/tags/block/replaceable.json @@ -2,6 +2,7 @@ "values": [ "galacticraft:crude_oil", "galacticraft:fuel", - "galacticraft:sulfuric_acid" + "galacticraft:sulfuric_acid", + "galacticraft:cheese_whiz" ] } \ No newline at end of file diff --git a/src/main/java/dev/galacticraft/mod/Constant.java b/src/main/java/dev/galacticraft/mod/Constant.java index a6df436adc..5711e5858a 100644 --- a/src/main/java/dev/galacticraft/mod/Constant.java +++ b/src/main/java/dev/galacticraft/mod/Constant.java @@ -294,6 +294,7 @@ interface Block { String FUEL = "fuel"; String CRUDE_OIL = "crude_oil"; String SULFURIC_ACID = "sulfuric_acid"; + String CHEESE_WHIZ = "cheese_whiz"; // Machines String CIRCUIT_FABRICATOR = "circuit_fabricator"; @@ -397,6 +398,8 @@ interface Fluid { String SULFURIC_ACID_STILL = "sulfuric_acid_still"; String OXYGEN_GAS = "oxygen_gas"; String LIQUID_OXYGEN = "liquid_oxygen"; + String CHEESE_WHIZ_STILL = "cheese_whiz_still"; + String CHEESE_WHIZ_FLOWING = "cheese_whiz_flowing"; static ResourceLocation fluidId(String s) { return Constant.id("block/fluid/" + s); @@ -527,6 +530,7 @@ interface Item { String CRUDE_OIL_BUCKET = "crude_oil_bucket"; String FUEL_BUCKET = "fuel_bucket"; String SULFURIC_ACID_BUCKET = "sulfuric_acid_bucket"; + String CHEESE_WHIZ_BUCKET = "cheese_whiz_bucket"; //GC INVENTORY String PARACHUTE = "parachute"; @@ -591,6 +595,8 @@ interface Particle { String FALLING_FUEL = "falling_fuel"; String DRIPPING_SULFURIC_ACID = "dripping_sulfuric_acid"; String FALLING_SULFURIC_ACID = "falling_sulfuric_acid"; + String DRIPPING_CHEESE_WHIZ = "dripping_cheese_whiz"; + String FALLING_CHEESE_WHIZ = "falling_cheese_whiz"; String CRYOGENIC_PARTICLE = "cryogenic_particle"; String LANDER_FLAME = "lander_flame_particle"; @@ -880,6 +886,7 @@ interface Entity { String GAZER = "gazer"; String FALLING_METEOR = "falling_meteor"; String EVOLVED_SKELETON_BOSS = "evolved_skeleton_boss"; + String CHEESE_COW = "cheese_cow"; } interface SpawnEgg { @@ -899,6 +906,7 @@ interface SpawnEgg { String OLI_GRUB = "oli_grub_spawn_egg"; String COMET_CUBE = "comet_cube_spawn_egg"; String GAZER = "gazer_spawn_egg"; + String CHEESE_COW = "cheese_cow_egg"; } interface EntityTexture { @@ -913,6 +921,7 @@ interface EntityTexture { String GAZER = "textures/entity/gazer.png"; String LANDER = "textures/entity/lander.png"; String SKELETON_BOSS = "textures/entity/skeletonboss.png"; + String CHEESE_COW = "textures/entity/cheese_cow/cheese_cow.png"; } interface GearTexture { diff --git a/src/main/java/dev/galacticraft/mod/GalacticraftClient.java b/src/main/java/dev/galacticraft/mod/GalacticraftClient.java index fe4c7638ab..7870306a6b 100644 --- a/src/main/java/dev/galacticraft/mod/GalacticraftClient.java +++ b/src/main/java/dev/galacticraft/mod/GalacticraftClient.java @@ -153,6 +153,7 @@ public void onInitializeClient() { EntityRendererRegistry.register(GCEntityTypes.PARACHEST, ParachestRenderer::new); EntityRendererRegistry.register(GCEntityTypes.THROWABLE_METEOR_CHUNK, ThrownItemRenderer::new); EntityRendererRegistry.register(GCEntityTypes.SKELETON_BOSS, EvolvedSkeletonBossRenderer::new); + EntityRendererRegistry.register(GCEntityTypes.CHEES_COW, CheeseCowEntityRender :: new); GCBlockEntityRenderer.register(); GCClientPacketReceiver.register(); @@ -193,6 +194,8 @@ public void onInitializeClient() { ParticleFactoryRegistry.getInstance().register(GCParticleTypes.FALLING_FUEL, FallingFuelProvider::new); ParticleFactoryRegistry.getInstance().register(GCParticleTypes.DRIPPING_SULFURIC_ACID, DrippingSulfuricAcidProvider::new); ParticleFactoryRegistry.getInstance().register(GCParticleTypes.FALLING_SULFURIC_ACID, FallingSulfuricAcidProvider::new); + ParticleFactoryRegistry.getInstance().register(GCParticleTypes.DRIPPING_CHEESE_WHIZ, DrippingCheeseWhizProvider:: new); + ParticleFactoryRegistry.getInstance().register(GCParticleTypes.FALLING_CHEESE_WHIZ, FallingCheeseWhizProvider:: new); ParticleFactoryRegistry.getInstance().register(GCParticleTypes.CRYOGENIC_PARTICLE, CryoFreezeParticle.Provider::new); ParticleFactoryRegistry.getInstance().register(GCParticleTypes.LANDER_FLAME_PARTICLE, LanderParticle.Provider::new); ParticleFactoryRegistry.getInstance().register(GCParticleTypes.SPARK_PARTICLE, SparksParticle.Provider::new); @@ -216,10 +219,15 @@ public void onInitializeClient() { Constant.Fluid.fluidId(Constant.Fluid.SULFURIC_ACID_STILL), Constant.Fluid.fluidId(Constant.Fluid.SULFURIC_ACID_FLOWING) ); + FluidRenderHandler cheesewhiz = new SimpleFluidRenderHandler( + Constant.Fluid.fluidId(Constant.Fluid.CHEESE_WHIZ_STILL), + Constant.Fluid.fluidId(Constant.Fluid.CHEESE_WHIZ_FLOWING) + ); FluidRenderHandlerRegistry.INSTANCE.register(GCFluids.CRUDE_OIL, GCFluids.FLOWING_CRUDE_OIL, oil); FluidRenderHandlerRegistry.INSTANCE.register(GCFluids.FUEL, GCFluids.FLOWING_FUEL, fuel); FluidRenderHandlerRegistry.INSTANCE.register(GCFluids.SULFURIC_ACID, GCFluids.FLOWING_SULFURIC_ACID, sulfuricAcid); + FluidRenderHandlerRegistry.INSTANCE.register(GCFluids.CHEESE_WHIZ, GCFluids.FLOWING_CHEESE_WHIZ, cheesewhiz); BlockRenderLayerMap.INSTANCE.putFluids(RenderType.translucent(), GCFluids.FUEL, GCFluids.FLOWING_FUEL); BlockRenderLayerMap.INSTANCE.putFluids(RenderType.translucent(), GCFluids.SULFURIC_ACID, GCFluids.FLOWING_SULFURIC_ACID); diff --git a/src/main/java/dev/galacticraft/mod/client/particle/DrippingCheeseWhizProvider.java b/src/main/java/dev/galacticraft/mod/client/particle/DrippingCheeseWhizProvider.java new file mode 100644 index 0000000000..e8dac1b6c6 --- /dev/null +++ b/src/main/java/dev/galacticraft/mod/client/particle/DrippingCheeseWhizProvider.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2019-2025 Team Galacticraft + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package dev.galacticraft.mod.client.particle; + + +import dev.galacticraft.mod.content.GCFluids; +import dev.galacticraft.mod.particle.GCParticleTypes; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.particle.DripParticle; +import net.minecraft.client.particle.Particle; +import net.minecraft.client.particle.ParticleProvider; +import net.minecraft.client.particle.SpriteSet; +import net.minecraft.core.particles.SimpleParticleType; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record DrippingCheeseWhizProvider(SpriteSet spriteProvider) implements ParticleProvider { + @Override + @Nullable + public Particle createParticle(SimpleParticleType particleOptions, ClientLevel clientLevel, double x, double y, double z, double velocityX, double velocityY, double velocityZ) { + var particle = new DripParticle.DripHangParticle(clientLevel, x, y, z, GCFluids.CHEESE_WHIZ, GCParticleTypes.FALLING_CHEESE_WHIZ); + particle.setColor(151f / 255f, 245f / 255f, 70f / 255f); + particle.pickSprite(this.spriteProvider); + return particle; + } +} diff --git a/src/main/java/dev/galacticraft/mod/client/particle/FallingCheeseWhizProvider.java b/src/main/java/dev/galacticraft/mod/client/particle/FallingCheeseWhizProvider.java new file mode 100644 index 0000000000..fb08a3c485 --- /dev/null +++ b/src/main/java/dev/galacticraft/mod/client/particle/FallingCheeseWhizProvider.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2019-2025 Team Galacticraft + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package dev.galacticraft.mod.client.particle; + +import dev.galacticraft.mod.content.GCFluids; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.particle.DripParticle; +import net.minecraft.client.particle.Particle; +import net.minecraft.client.particle.ParticleProvider; +import net.minecraft.client.particle.SpriteSet; +import net.minecraft.core.particles.SimpleParticleType; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record FallingCheeseWhizProvider(SpriteSet spriteProvider) implements ParticleProvider { + @Override + @Nullable + public Particle createParticle(SimpleParticleType particleOptions, ClientLevel clientLevel, double x, double y, double z, double velocityX, double velocityY, double velocityZ) { + var particle = new DripParticle.FallingParticle(clientLevel, x, y, z, GCFluids.CHEESE_WHIZ); + particle.setColor(151f / 255f, 245f / 255f, 70f / 255f); + particle.pickSprite(this.spriteProvider); + return particle; + } +} diff --git a/src/main/java/dev/galacticraft/mod/client/render/entity/CheeseCowEntityRender.java b/src/main/java/dev/galacticraft/mod/client/render/entity/CheeseCowEntityRender.java new file mode 100644 index 0000000000..a6ec8f4d9e --- /dev/null +++ b/src/main/java/dev/galacticraft/mod/client/render/entity/CheeseCowEntityRender.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2019-2025 Team Galacticraft + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package dev.galacticraft.mod.client.render.entity; + +import dev.galacticraft.mod.Constant; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.model.CowModel; +import net.minecraft.client.model.geom.ModelLayers; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.animal.Cow; + +@Environment(EnvType.CLIENT) +public class CheeseCowEntityRender extends MobRenderer > { + private static final ResourceLocation TEXTURE = Constant.id(Constant.EntityTexture.CHEESE_COW); + + public CheeseCowEntityRender(EntityRendererProvider.Context context) { + super(context, new CowModel(context.bakeLayer(ModelLayers.COW)), 0.7F); + } + + public ResourceLocation getTextureLocation(Cow cheese_cow) { + return TEXTURE; + } + +} + diff --git a/src/main/java/dev/galacticraft/mod/content/GCBlocks.java b/src/main/java/dev/galacticraft/mod/content/GCBlocks.java index e72d2bd993..4833c9527a 100644 --- a/src/main/java/dev/galacticraft/mod/content/GCBlocks.java +++ b/src/main/java/dev/galacticraft/mod/content/GCBlocks.java @@ -80,6 +80,11 @@ public class GCBlocks { .noCollission().pushReaction(PushReaction.DESTROY).replaceable().liquid() .strength(50.0F, 50.0F).noLootTable())); + public static final LiquidBlock CHEESE_WHIZ = BLOCKS.register(Constant.Block.CHEESE_WHIZ, + new LiquidBlock(GCFluids.CHEESE_WHIZ, BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_ORANGE) + .noCollission().pushReaction(PushReaction.DESTROY).replaceable().liquid() + .strength(50.0F, 50.0F).noLootTable())); + // DECORATION BLOCKS public static final DecorationSet ALUMINUM_DECORATION = BLOCKS.registerDecoration(Constant.Block.ALUMINUM_DECORATION, BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_WHITE).instrument(NoteBlockInstrument.BASEDRUM).strength(2.0F, 3.0F).requiresCorrectToolForDrops(), 2.5F, 3.0F); public static final DecorationSet BRONZE_DECORATION = BLOCKS.registerDecoration(Constant.Block.BRONZE_DECORATION, BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_ORANGE).instrument(NoteBlockInstrument.BASEDRUM).strength(2.0F, 3.0F).requiresCorrectToolForDrops(), 2.5F, 3.0F); diff --git a/src/main/java/dev/galacticraft/mod/content/GCEntityTypes.java b/src/main/java/dev/galacticraft/mod/content/GCEntityTypes.java index 0c4962a8e6..35cac6677c 100644 --- a/src/main/java/dev/galacticraft/mod/content/GCEntityTypes.java +++ b/src/main/java/dev/galacticraft/mod/content/GCEntityTypes.java @@ -169,6 +169,11 @@ public class GCEntityTypes { public static final EntityType THROWABLE_METEOR_CHUNK = ENTITIES.register(Constant.Item.THROWABLE_METEOR_CHUNK, EntityType.Builder.of(ThrowableMeteorChunkEntity::new, MobCategory.MISC) .sized(0.25F, 0.25F) .build()); + + public static final EntityType CHEES_COW = ENTITIES.register(Entity.CHEESE_COW, EntityType.Builder.of(CheeseCowEntity::new, MobCategory.CREATURE) + .sized(1.0F, 1.0F) + .build()); + // Bosses public static final EntityType SKELETON_BOSS = ENTITIES.register(Entity.EVOLVED_SKELETON_BOSS, EntityType.Builder.of(SkeletonBoss::new, MobCategory.MONSTER) .sized(1.5F, 4.0F) @@ -196,5 +201,6 @@ public static void register() { FabricDefaultAttributeRegistry.register(GREY, GreyEntity.createAttributes()); FabricDefaultAttributeRegistry.register(ARCH_GREY, ArchGreyEntity.createAttributes()); FabricDefaultAttributeRegistry.register(SKELETON_BOSS, SkeletonBoss.createAttributes().add(GcApiEntityAttributes.CAN_BREATHE_IN_SPACE, 1.0D)); + FabricDefaultAttributeRegistry.register(CHEES_COW, CheeseCowEntity.createAttributes().add(GcApiEntityAttributes.CAN_BREATHE_IN_SPACE, 1.0D).add(Attributes.MOVEMENT_SPEED, 0.2D)); } } diff --git a/src/main/java/dev/galacticraft/mod/content/GCFluids.java b/src/main/java/dev/galacticraft/mod/content/GCFluids.java index dca59df007..cf1411685e 100644 --- a/src/main/java/dev/galacticraft/mod/content/GCFluids.java +++ b/src/main/java/dev/galacticraft/mod/content/GCFluids.java @@ -39,6 +39,8 @@ public class GCFluids { public static final FlowingFluid FLOWING_FUEL = new FuelFluid.Flowing(); public static final FlowingFluid SULFURIC_ACID = new SulfuricAcidFluid.Still(); public static final FlowingFluid FLOWING_SULFURIC_ACID = new SulfuricAcidFluid.Flowing(); + public static final FlowingFluid CHEESE_WHIZ = new CheeseWhizFluid.Still(); + public static final FlowingFluid FLOWING_CHEESE_WHIZ = new CheeseWhizFluid.Flowing(); public static final Fluid LIQUID_OXYGEN = new OxygenFluid(); @@ -50,6 +52,8 @@ public static void register() { register(Constant.Fluid.SULFURIC_ACID_STILL, SULFURIC_ACID); register(Constant.Fluid.SULFURIC_ACID_FLOWING, FLOWING_SULFURIC_ACID); register(Constant.Fluid.LIQUID_OXYGEN, LIQUID_OXYGEN); + register(Constant.Fluid.CHEESE_WHIZ_STILL, CHEESE_WHIZ); + register(Constant.Fluid.CHEESE_WHIZ_FLOWING, FLOWING_CHEESE_WHIZ); } public static void registerFluidVariantAttributes() { @@ -77,6 +81,12 @@ public static void registerFluidVariantAttributes() { 500, true )); + FluidVariantAttributes.register(CHEESE_WHIZ, new GCFluidAttribute( + Component.translatable(GCBlocks.CHEESE_WHIZ.getDescriptionId()) + .setStyle(Constant.Text.YELLOW_STYLE), + FluidConstants.LAVA_VISCOSITY, + true + )); } private static void register(String id, Fluid fluid) { diff --git a/src/main/java/dev/galacticraft/mod/content/entity/CheeseCowEntity.java b/src/main/java/dev/galacticraft/mod/content/entity/CheeseCowEntity.java new file mode 100644 index 0000000000..bc1cbcf062 --- /dev/null +++ b/src/main/java/dev/galacticraft/mod/content/entity/CheeseCowEntity.java @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2019-2025 Team Galacticraft + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package dev.galacticraft.mod.content.entity; + +import dev.galacticraft.api.entity.attribute.GcApiEntityAttributes; +import dev.galacticraft.mod.content.GCEntityTypes; +import dev.galacticraft.mod.content.item.GCItems; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.AgeableMob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.animal.Cow; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemUtils; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.Nullable; + +public class CheeseCowEntity extends Cow { + public CheeseCowEntity(EntityType entityType, Level level) { + super(entityType, level); + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(GcApiEntityAttributes.CAN_BREATHE_IN_SPACE, 1.0D) + .add(Attributes.MOVEMENT_SPEED, 0.2); + } + + @Override + public InteractionResult mobInteract(Player player, InteractionHand interactionHand) { + ItemStack itemStack = player.getItemInHand(interactionHand); + if (itemStack.is(Items.BUCKET) && !this.isBaby()) { + player.playSound(SoundEvents.COW_MILK, 1.0F, 1.0F); + ItemStack itemStack2 = ItemUtils.createFilledResult(itemStack, player, GCItems.CHEESE_WHIZ_BUCKET.getDefaultInstance()); + player.setItemInHand(interactionHand, itemStack2); + return InteractionResult.sidedSuccess(this.level().isClientSide); + } else { + return super.mobInteract(player, interactionHand); + } + } + + @Nullable + public CheeseCowEntity getBreedOffspring(ServerLevel serverLevel, AgeableMob ageableMob) { + return GCEntityTypes.CHEES_COW.create(serverLevel); + } +} diff --git a/src/main/java/dev/galacticraft/mod/content/fluid/CheeseWhizFluid.java b/src/main/java/dev/galacticraft/mod/content/fluid/CheeseWhizFluid.java new file mode 100644 index 0000000000..0917627b42 --- /dev/null +++ b/src/main/java/dev/galacticraft/mod/content/fluid/CheeseWhizFluid.java @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2019-2025 Team Galacticraft + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package dev.galacticraft.mod.content.fluid; + +import dev.galacticraft.mod.content.GCBlocks; +import dev.galacticraft.mod.content.GCFluids; +import dev.galacticraft.mod.content.item.GCItems; +import dev.galacticraft.mod.particle.GCParticleTypes; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.material.Fluid; + +public abstract class CheeseWhizFluid extends BasicFluid{ + protected CheeseWhizFluid(){super (true, true,0, 5,30,100.0F);} + + @Override + public Fluid getFlowing() { + return GCFluids.FLOWING_CHEESE_WHIZ; + } + + @Override + public Fluid getSource() { + return GCFluids.CHEESE_WHIZ; + } + + @Override + public ParticleOptions getDripParticle() { + return GCParticleTypes.DRIPPING_CHEESE_WHIZ; + } + + @Override + public Item getBucket() { + return GCItems.CHEESE_WHIZ_BUCKET; + } + + @Override + protected LiquidBlock getBlock() { + return GCBlocks.CHEESE_WHIZ; + } + + public static class Still extends CheeseWhizFluid { + @Override + public boolean isStill() { + return true; + } + } + + public static class Flowing extends CheeseWhizFluid { + @Override + public boolean isStill() { + return false; + } + } +} diff --git a/src/main/java/dev/galacticraft/mod/content/item/GCCreativeModeTabs.java b/src/main/java/dev/galacticraft/mod/content/item/GCCreativeModeTabs.java index e515972051..d5001e7829 100644 --- a/src/main/java/dev/galacticraft/mod/content/item/GCCreativeModeTabs.java +++ b/src/main/java/dev/galacticraft/mod/content/item/GCCreativeModeTabs.java @@ -491,6 +491,7 @@ public class GCCreativeModeTabs { output.accept(CRUDE_OIL_BUCKET); output.accept(FUEL_BUCKET); output.accept(SULFURIC_ACID_BUCKET); + output.accept(CHEESE_WHIZ_BUCKET); }) .build(); @@ -531,6 +532,7 @@ public static void registerSpawnEggs() { content.addAfter(ItemStack.EMPTY, OLI_GRUB_SPAWN_EGG); content.addAfter(ItemStack.EMPTY, GREY_SPAWN_EGG); content.addAfter(ItemStack.EMPTY, ARCH_GREY_SPAWN_EGG); + content.addAfter(ItemStack.EMPTY, CHEESE_COW_SPAWN_EGG); }); } diff --git a/src/main/java/dev/galacticraft/mod/content/item/GCItems.java b/src/main/java/dev/galacticraft/mod/content/item/GCItems.java index 5439079cb4..d4ad73f65f 100644 --- a/src/main/java/dev/galacticraft/mod/content/item/GCItems.java +++ b/src/main/java/dev/galacticraft/mod/content/item/GCItems.java @@ -279,6 +279,7 @@ public class GCItems { public static final Item CRUDE_OIL_BUCKET = ITEMS.register(Constant.Item.CRUDE_OIL_BUCKET, new BucketItem(GCFluids.CRUDE_OIL, new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); public static final Item FUEL_BUCKET = ITEMS.register(Constant.Item.FUEL_BUCKET, new BucketItem(GCFluids.FUEL, new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); public static final Item SULFURIC_ACID_BUCKET = ITEMS.register(Constant.Item.SULFURIC_ACID_BUCKET, new BucketItem(GCFluids.SULFURIC_ACID, new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); + public static final Item CHEESE_WHIZ_BUCKET = ITEMS.register(Constant.Item.CHEESE_WHIZ_BUCKET, new BucketItem(GCFluids.CHEESE_WHIZ, new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1)) ); // CANNED FOOD public static final CannedFoodItem EMPTY_CAN = ITEMS.register(Constant.Item.EMPTY_CAN, new CannedFoodItem(new Item.Properties().food(null))); @@ -301,6 +302,7 @@ public class GCItems { public static final Item OLI_GRUB_SPAWN_EGG = ITEMS.register(Constant.SpawnEgg.OLI_GRUB, new SpawnEggItem(GCEntityTypes.OLI_GRUB, 0xd4dd7e, 0xa4bf63, new Item.Properties())); public static final Item GREY_SPAWN_EGG = ITEMS.register(Constant.SpawnEgg.GREY, new SpawnEggItem(GCEntityTypes.GREY, 0x656463, 0x769e41, new Item.Properties())); public static final Item ARCH_GREY_SPAWN_EGG = ITEMS.register(Constant.SpawnEgg.ARCH_GREY, new SpawnEggItem(GCEntityTypes.ARCH_GREY, 0x656463, 0x2d8563, new Item.Properties())); + public static final Item CHEESE_COW_SPAWN_EGG = ITEMS.register(Constant.SpawnEgg.CHEESE_COW, new SpawnEggItem(GCEntityTypes.CHEES_COW, 0xffa500,0Xcc8400, new Item.Properties())); private static Item registerGeneric(String id) { return ITEMS.register(id, new Item(new Item.Properties())); @@ -310,6 +312,7 @@ public static void register() { DispenserBlock.registerBehavior(FUEL_BUCKET, DispenserBlock.DISPENSER_REGISTRY.get(Items.WATER_BUCKET)); DispenserBlock.registerBehavior(CRUDE_OIL_BUCKET, DispenserBlock.DISPENSER_REGISTRY.get(Items.WATER_BUCKET)); DispenserBlock.registerBehavior(SULFURIC_ACID_BUCKET, DispenserBlock.DISPENSER_REGISTRY.get(Items.WATER_BUCKET)); + DispenserBlock.registerBehavior(CHEESE_WHIZ_BUCKET, DispenserBlock.DISPENSER_REGISTRY.get(Items.WATER_BUCKET)); DispenserBlock.registerBehavior(MOON_VILLAGER_SPAWN_EGG, DispenserBlock.DISPENSER_REGISTRY.get(Items.CREEPER_SPAWN_EGG)); DispenserBlock.registerBehavior(EVOLVED_ZOMBIE_SPAWN_EGG, DispenserBlock.DISPENSER_REGISTRY.get(Items.CREEPER_SPAWN_EGG)); @@ -327,5 +330,6 @@ public static void register() { DispenserBlock.registerBehavior(OLI_GRUB_SPAWN_EGG, DispenserBlock.DISPENSER_REGISTRY.get(Items.CREEPER_SPAWN_EGG)); DispenserBlock.registerBehavior(GREY_SPAWN_EGG, DispenserBlock.DISPENSER_REGISTRY.get(Items.CREEPER_SPAWN_EGG)); DispenserBlock.registerBehavior(ARCH_GREY_SPAWN_EGG, DispenserBlock.DISPENSER_REGISTRY.get(Items.CREEPER_SPAWN_EGG)); + DispenserBlock.registerBehavior(CHEESE_COW_SPAWN_EGG, DispenserBlock.DISPENSER_REGISTRY.get(Items.CREEPER_SPAWN_EGG)); } } diff --git a/src/main/java/dev/galacticraft/mod/data/GCEntityLoot.java b/src/main/java/dev/galacticraft/mod/data/GCEntityLoot.java index 8175229d3c..7bfceb068b 100644 --- a/src/main/java/dev/galacticraft/mod/data/GCEntityLoot.java +++ b/src/main/java/dev/galacticraft/mod/data/GCEntityLoot.java @@ -24,6 +24,7 @@ import dev.galacticraft.mod.content.GCEntityTypes; import dev.galacticraft.mod.content.GCRegistry; +import dev.galacticraft.mod.content.item.GCItems; import dev.galacticraft.mod.data.loot.GCEntityLootSubProvider; import dev.galacticraft.mod.tag.GCItemTags; import net.minecraft.advancements.critereon.EntityPredicate; @@ -248,6 +249,18 @@ public void generate() { .add(LootItem.lootTableItem(Items.WITHER_SKELETON_SKULL)) ) ); + add(GCEntityTypes.CHEES_COW, + LootTable.lootTable() + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add( + LootItem.lootTableItem(GCItems.MOON_CHEESE_CURD) + .apply(SetItemCountFunction.setCount(UniformGenerator.between(0.0F, 3.0F))) + .apply(EnchantedCountIncreaseFunction.lootingMultiplier(this.lookup, UniformGenerator.between(0.0F, 6.0F))) + ) + ) + ); } @Override diff --git a/src/main/java/dev/galacticraft/mod/data/GCTranslationProvider.java b/src/main/java/dev/galacticraft/mod/data/GCTranslationProvider.java index cf852a6788..7db2b6ce2f 100644 --- a/src/main/java/dev/galacticraft/mod/data/GCTranslationProvider.java +++ b/src/main/java/dev/galacticraft/mod/data/GCTranslationProvider.java @@ -125,6 +125,7 @@ protected void generateBlockTranslations() { this.block(GCBlocks.CRUDE_OIL, "Crude Oil"); this.block(GCBlocks.FUEL, "Fuel"); this.block(GCBlocks.SULFURIC_ACID, "Sulfuric Acid"); + this.block(GCBlocks.CHEESE_WHIZ, "Cheese Whiz"); // DECORATION BLOCKS this.decorationSet(GCBlocks.ALUMINUM_DECORATION, "Aluminum Decoration"); @@ -526,6 +527,7 @@ protected void generateItemTranslations() { this.item(GCItems.CRUDE_OIL_BUCKET, "Oil Bucket"); this.item(GCItems.FUEL_BUCKET, "Fuel Bucket"); this.item(GCItems.SULFURIC_ACID_BUCKET, "Sulfuric Acid Bucket"); + this.item(GCItems.CHEESE_WHIZ_BUCKET, "Cheese Whiz Bucket"); // GALACTICRAFT INVENTORY this.item(GCItems.PARACHUTE, "Parachute"); @@ -624,6 +626,7 @@ protected void generateItemTranslations() { this.item(GCItems.OLI_GRUB_SPAWN_EGG, "Oli Grub Spawn Egg"); this.item(GCItems.GREY_SPAWN_EGG, "Grey Spawn Egg"); this.item(GCItems.ARCH_GREY_SPAWN_EGG, "Arch Grey Spawn Egg"); + this.item(GCItems.CHEESE_COW_SPAWN_EGG, "Cheese Cow Spawn Egg"); } protected void generateTagTranslations() { @@ -764,6 +767,7 @@ protected void generateTagTranslations() { this.tag(GCItemTags.OIL_BUCKETS, "Oil Buckets"); this.tag(GCItemTags.FUEL_BUCKETS, "Fuel Buckets"); this.tag(GCItemTags.SULFURIC_ACID_BUCKETS, "Sulfuric Acid Buckets"); + this.tag(GCItemTags.CHEESE_WHIZ_BUCKET, "Cheese Whiz Buckets"); } protected void generateGasTranslations() { @@ -812,6 +816,7 @@ protected void generateEntityTranslations() { this.entity(GCEntityTypes.ROCKET, "Rocket"); this.entity(GCEntityTypes.RUMBLER, "Rumbler"); this.entity(GCEntityTypes.THROWABLE_METEOR_CHUNK, "Meteor Chunk"); + this.entity(GCEntityTypes.CHEES_COW, "Cheese Cow"); } protected void generateCelestialBodyTranslations() { @@ -1235,6 +1240,7 @@ protected void generateAdvancementsTranslations() { this.advancement(Advancements.EAT_MOON_CHEESE_CURD, "Wensleydale? Stilton?", "Eat Moon Cheese Curd"); this.advancement(Advancements.CHEESE_AND_CRACKERS, "It's Like No Cheese I've Ever Tasted...", "Eat cheese and crackers"); this.advancement(Advancements.CHEESE_TAX, "Cheese Tax", "Give Cheese to a pet Wolf"); + this.advancement(Advancements.CHEESE_WHIZ, "Is this cheese?", "Milk a cheese cow"); this.advancement(Advancements.THROW_METEOR_CHUNK, "Nice to Meteor You", "Hit a mob with a Throwable Meteor Chunk"); this.advancement(Advancements.SPACE_STATION, "Space Station", "Create your own Space Station!"); this.advancement(Advancements.MOON_DUNGEON, "Worse than a Wither", "Find an Evolved Skeleton Boss in a Moon Dungeon"); diff --git a/src/main/java/dev/galacticraft/mod/data/advancements/GCAdvancementProvider.java b/src/main/java/dev/galacticraft/mod/data/advancements/GCAdvancementProvider.java index 6030b7cc25..eb061ef396 100644 --- a/src/main/java/dev/galacticraft/mod/data/advancements/GCAdvancementProvider.java +++ b/src/main/java/dev/galacticraft/mod/data/advancements/GCAdvancementProvider.java @@ -25,6 +25,7 @@ import dev.galacticraft.api.component.GCItemSubPredicates; import dev.galacticraft.mod.Constant; import dev.galacticraft.mod.content.GCBlocks; +import dev.galacticraft.mod.content.GCEntityTypes; import dev.galacticraft.mod.content.advancements.critereon.*; import dev.galacticraft.mod.content.item.GCItems; import dev.galacticraft.mod.tag.GCDamageTypeTags; @@ -488,6 +489,23 @@ public void generateAdvancement(HolderLookup.Provider registries, Consumer LIQUID_OXYGEN = commonTag("oxygen"); public static final TagKey OXYGEN = galacticraftTag("oxygen"); public static final TagKey NON_BREATHABLE = galacticraftTag("non_breathable"); + public static final TagKey CHEESE_WHIZ = galacticraftTag("cheese_whiz"); public static TagKey commonTag(String path) { return TagKey.create(Registries.FLUID, ResourceLocation.fromNamespaceAndPath(Constant.COMMON_NAMESPACE, path)); diff --git a/src/main/java/dev/galacticraft/mod/tag/GCItemTags.java b/src/main/java/dev/galacticraft/mod/tag/GCItemTags.java index fcf29cc6d7..acd2c4492f 100644 --- a/src/main/java/dev/galacticraft/mod/tag/GCItemTags.java +++ b/src/main/java/dev/galacticraft/mod/tag/GCItemTags.java @@ -150,6 +150,7 @@ public class GCItemTags { public static final TagKey OIL_BUCKETS = commonTag("buckets/oil"); public static final TagKey FUEL_BUCKETS = commonTag("buckets/fuel"); public static final TagKey SULFURIC_ACID_BUCKETS = commonTag("buckets/sulfuric_acid"); + public static final TagKey CHEESE_WHIZ_BUCKET = commonTag( "buckets/cheese_whiz"); public static final TagKey SLABS = galacticraftTag("slabs"); public static final TagKey STAIRS = galacticraftTag("stairs"); diff --git a/src/main/java/dev/galacticraft/mod/util/Translations.java b/src/main/java/dev/galacticraft/mod/util/Translations.java index 515d93ebbd..1a8a8aef9e 100644 --- a/src/main/java/dev/galacticraft/mod/util/Translations.java +++ b/src/main/java/dev/galacticraft/mod/util/Translations.java @@ -52,6 +52,7 @@ interface Advancements { String EAT_MOON_CHEESE_CURD = "advancement.galacticraft.eat_moon_cheese_curd"; String CHEESE_AND_CRACKERS = "advancement.galacticraft.cheese_and_crackers"; String CHEESE_TAX = "advancement.galacticraft.cheese_tax"; + String CHEESE_WHIZ = "advancement.galacticraft.cheese_whiz"; String THROW_METEOR_CHUNK = "advancement.galacticraft.throw_meteor_chunk"; String SPACE_STATION = "advancement.galacticraft.space_station"; String MOON_DUNGEON = "advancement.galacticraft.moon_dungeon"; diff --git a/src/main/resources/assets/galacticraft/models/block/cheese_whiz.json b/src/main/resources/assets/galacticraft/models/block/cheese_whiz.json new file mode 100644 index 0000000000..565e37a75f --- /dev/null +++ b/src/main/resources/assets/galacticraft/models/block/cheese_whiz.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "galacticraft:block/fluid/cheese_whiz_still" + } +} diff --git a/src/main/resources/assets/galacticraft/particles/driping_cheese_whiz.json b/src/main/resources/assets/galacticraft/particles/driping_cheese_whiz.json new file mode 100644 index 0000000000..6a657af29b --- /dev/null +++ b/src/main/resources/assets/galacticraft/particles/driping_cheese_whiz.json @@ -0,0 +1,5 @@ +{ + "textures": [ + "minecraft:drip_hang" + ] +} diff --git a/src/main/resources/assets/galacticraft/particles/falling_cheese_whiz.json b/src/main/resources/assets/galacticraft/particles/falling_cheese_whiz.json new file mode 100644 index 0000000000..520ad48bf0 --- /dev/null +++ b/src/main/resources/assets/galacticraft/particles/falling_cheese_whiz.json @@ -0,0 +1,5 @@ +{ + "textures": [ + "minecraft:drip_fall" + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/galacticraft/textures/block/fluid/cheese_whiz_flowing.png b/src/main/resources/assets/galacticraft/textures/block/fluid/cheese_whiz_flowing.png new file mode 100644 index 0000000000..17d6efa728 Binary files /dev/null and b/src/main/resources/assets/galacticraft/textures/block/fluid/cheese_whiz_flowing.png differ diff --git a/src/main/resources/assets/galacticraft/textures/block/fluid/cheese_whiz_flowing.png.mcmeta b/src/main/resources/assets/galacticraft/textures/block/fluid/cheese_whiz_flowing.png.mcmeta new file mode 100644 index 0000000000..7e77c64858 --- /dev/null +++ b/src/main/resources/assets/galacticraft/textures/block/fluid/cheese_whiz_flowing.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/galacticraft/textures/block/fluid/cheese_whiz_still.png b/src/main/resources/assets/galacticraft/textures/block/fluid/cheese_whiz_still.png new file mode 100644 index 0000000000..a3b2df4c28 Binary files /dev/null and b/src/main/resources/assets/galacticraft/textures/block/fluid/cheese_whiz_still.png differ diff --git a/src/main/resources/assets/galacticraft/textures/block/fluid/cheese_whiz_still.png.mcmeta b/src/main/resources/assets/galacticraft/textures/block/fluid/cheese_whiz_still.png.mcmeta new file mode 100644 index 0000000000..f6730e30a9 --- /dev/null +++ b/src/main/resources/assets/galacticraft/textures/block/fluid/cheese_whiz_still.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/galacticraft/textures/entity/cheese_cow/cheese_cow.png b/src/main/resources/assets/galacticraft/textures/entity/cheese_cow/cheese_cow.png new file mode 100644 index 0000000000..39c694cb95 Binary files /dev/null and b/src/main/resources/assets/galacticraft/textures/entity/cheese_cow/cheese_cow.png differ diff --git a/src/main/resources/assets/galacticraft/textures/item/cheese_whiz_bucket.png b/src/main/resources/assets/galacticraft/textures/item/cheese_whiz_bucket.png new file mode 100644 index 0000000000..5e75f009c0 Binary files /dev/null and b/src/main/resources/assets/galacticraft/textures/item/cheese_whiz_bucket.png differ