Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/data/java/galena/oreganized/data/OBlockStates.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@ protected void registerStatesAndModels() {
meltableTrapdoor(OBlocks.LEAD_TRAPDOOR);
meltableBars(OBlocks.LEAD_BARS);

sturdyLever(OBlocks.STURDY_LEVER);
sturdyButton(OBlocks.STURDY_BUTTON);

OBlocks.WAXED_CONCRETE_POWDER.forEach((color, block) -> {
var unwaxed = ColorCompat.getColoredBlock("concrete_powder", color);
waxedBlock(block, unwaxed);
Expand Down
6 changes: 6 additions & 0 deletions src/data/java/galena/oreganized/data/OBlockTags.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package galena.oreganized.data;

import com.simibubi.create.AllTags;
import galena.oreganized.ModCompat;
import galena.oreganized.Oreganized;
import galena.oreganized.index.DyeColors;
Expand Down Expand Up @@ -95,8 +96,10 @@ protected void addTags(HolderLookup.Provider provider) {
tag(BlockTags.DOORS).add(OBlocks.LEAD_DOOR.get());
OBlocks.SILVER_TRAPDOORS.all().forEach(it -> tag(BlockTags.TRAPDOORS).add(it.get()));
tag(BlockTags.TRAPDOORS).add(OBlocks.LEAD_TRAPDOOR.get());
tag(BlockTags.BUTTONS).add(OBlocks.STURDY_BUTTON.get());
tag(BlockTags.SMALL_FLOWERS).add(OBlocks.WHITE_DATURA.get());
tag(BlockTags.SMALL_FLOWERS).add(OBlocks.PURPLE_DATURA.get());

// Forge
tag(Tags.Blocks.ORES).addTags(OTags.Blocks.ORES_SILVER, OTags.Blocks.ORES_LEAD);
tag(Tags.Blocks.ORE_RATES_SINGULAR).addTags(OTags.Blocks.ORES_SILVER, OTags.Blocks.ORES_LEAD);
Expand Down Expand Up @@ -293,5 +296,8 @@ protected void addTags(HolderLookup.Provider provider) {

tag(OTags.Blocks.BOMB_BREAKABLE).add(OBlocks.SHRAPNEL_BOMB.get());
tag(OTags.Blocks.CANNON_TNTS).add(OBlocks.SHRAPNEL_BOMB.get());

// Create
tag(AllTags.AllBlockTags.WRENCH_PICKUP.tag).add(OBlocks.STURDY_LEVER.get());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
import net.neoforged.neoforge.common.data.ExistingFileHelper;
import org.jetbrains.annotations.NotNull;

public class ODamageTags extends TagsProvider<DamageType> {
public class ODamageTypeTags extends TagsProvider<DamageType> {

public ODamageTags(PackOutput output, CompletableFuture<HolderLookup.Provider> future, @Nullable ExistingFileHelper helper) {
public ODamageTypeTags(PackOutput output, CompletableFuture<HolderLookup.Provider> future, @Nullable ExistingFileHelper helper) {
super(output, Registries.DAMAGE_TYPE, future, Oreganized.MOD_ID, helper);
}

Expand All @@ -26,6 +26,7 @@ public ODamageTags(PackOutput output, CompletableFuture<HolderLookup.Provider> f

@Override
protected void addTags(HolderLookup.Provider provider) {
tag(DamageTypeTags.IS_FIRE).add(ODamageSources.MOLTEN_LEAD);
tag(DamageTypeTags.NO_KNOCKBACK).add(ODamageSources.MOLTEN_LEAD);
}
}
2 changes: 2 additions & 0 deletions src/data/java/galena/oreganized/data/OItemTags.java
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,8 @@ protected void addTags(HolderLookup.Provider provider) {
OBlocks.SILVER_TRAPDOORS.all().forEach(it -> tag(ItemTags.TRAPDOORS).add(it.asItem()));
tag(ItemTags.TRAPDOORS).add(OBlocks.LEAD_TRAPDOOR.asItem());

tag(ItemTags.BUTTONS).add(OBlocks.STURDY_BUTTON.asItem());

tag(ItemTags.AXES).add(OItems.ELECTRUM_AXE.get());
tag(ItemTags.PICKAXES).add(OItems.ELECTRUM_PICKAXE.get());
tag(ItemTags.SWORDS).add(OItems.ELECTRUM_SWORD.get());
Expand Down
6 changes: 3 additions & 3 deletions src/data/java/galena/oreganized/data/OLang.java
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,9 @@ protected void addTranslations() {

add("item.oreganized.smithing_template.electrum_upgrade.additions_slot_description", "Add Electrum Ingot");

add("death.attack.lead_bolt", "%1$s was shot %2$s");
add("death.attack.lead_bolt.item", "%1$s was shot %2$s using %3$s");
add("death.attack.molten_lead", "%1$s refused to let go of the soaring hot metal");
add("death.attack.lead_bolt", "%1$s was shot by %2$s");
add("death.attack.lead_bolt.item", "%1$s was shot by %2$s using %3$s");
add("death.attack.molten_lead", "%1$s refused to let go of the searing hot metal");

add("attribute.oreganized.kinetic_damage", "Kinetic Damage");

Expand Down
3 changes: 3 additions & 0 deletions src/data/java/galena/oreganized/data/OLootTables.java
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,9 @@ protected void generate() {
LootItem.lootTableItem(OBlocks.LEAD_BARS.get())
)))));

dropSelf(OBlocks.STURDY_LEVER);
dropSelf(OBlocks.STURDY_BUTTON);

OBlocks.CRYSTAL_GLASS.forEach((c, b) -> dyed(c, () -> dropAsSilk(b)));
OBlocks.CRYSTAL_GLASS_PANES.forEach((c, b) -> dyed(c, () -> dropAsSilk(b)));
OBlocks.WAXED_CONCRETE_POWDER.forEach((c, b) -> dyed(c, () -> dropSelf(b)));
Expand Down
16 changes: 16 additions & 0 deletions src/data/java/galena/oreganized/data/ORecipes.java
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,22 @@ protected void buildRecipes(RecipeOutput consumer) {

makeBars(OBlocks.LEAD_BARS, OTags.Items.INGOTS_LEAD).save(consumer);

ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, OBlocks.STURDY_LEVER.get())
.define('#', Items.LEVER)
.define('X', OTags.Items.INGOTS_LEAD)
.pattern("X")
.pattern("#")
.unlockedBy("has_lead", has(OTags.Items.INGOTS_LEAD))
.save(consumer);

ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, OBlocks.STURDY_BUTTON.get())
.define('#', ItemTags.STONE_BUTTONS)
.define('X', OTags.Items.INGOTS_LEAD)
.pattern("X")
.pattern("#")
.unlockedBy("has_lead", has(OTags.Items.INGOTS_LEAD))
.save(consumer);

ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, OItems.SCRIBE.get())
.define('A', Items.AMETHYST_SHARD)
.define('S', OTags.Items.INGOTS_SILVER)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public static void gatherData(GatherDataEvent event) {
CompletableFuture<HolderLookup.Provider> lookupProvider = datapackProvider.getRegistryProvider();
generator.addProvider(server, datapackProvider);
generator.addProvider(server, new OBiomeTags(output, lookupProvider, helper));
generator.addProvider(server, new ODamageTags(output, lookupProvider, helper));
generator.addProvider(server, new ODamageTypeTags(output, lookupProvider, helper));
generator.addProvider(server, new OPaintingVariantTags(output, lookupProvider, helper));
generator.addProvider(server, new ODataMaps(output, lookupProvider));

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package galena.oreganized.data.provider;

import static galena.oreganized.Oreganized.MOD_ID;
import static net.neoforged.neoforge.client.model.generators.ModelProvider.BLOCK_FOLDER;

import com.teamabnormals.blueprint.core.data.client.BlueprintBlockStateProvider;
Expand All @@ -11,7 +10,6 @@
import galena.oreganized.content.block.CrystalGlassPaneBlock;
import galena.oreganized.content.block.GargoyleBlock;
import galena.oreganized.content.block.IMeltableBlock;
import galena.oreganized.content.block.LeadDoorBlock;
import galena.oreganized.content.block.MoltenLeadCauldronBlock;
import java.util.Arrays;
import java.util.List;
Expand All @@ -22,9 +20,11 @@
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.ButtonBlock;
import net.minecraft.world.level.block.CrossCollisionBlock;
import net.minecraft.world.level.block.DoorBlock;
import net.minecraft.world.level.block.IronBarsBlock;
import net.minecraft.world.level.block.LeverBlock;
import net.minecraft.world.level.block.PipeBlock;
import net.minecraft.world.level.block.RedstoneLampBlock;
import net.minecraft.world.level.block.RotatedPillarBlock;
Expand All @@ -42,8 +42,8 @@

public abstract class OBlockStateProvider extends BlueprintBlockStateProvider {

public OBlockStateProvider(PackOutput output, ExistingFileHelper help) {
super(output, MOD_ID, help);
protected OBlockStateProvider(PackOutput output, ExistingFileHelper help) {
super(output, Oreganized.MOD_ID, help);
}

protected ResourceLocation blockTexture(String name) {
Expand Down Expand Up @@ -233,24 +233,21 @@ public <T extends DoorBlock & IMeltableBlock> void meltableDoor(DeferredBlock<T>
var baseName = name(block);
var prefixes = List.of("", "goopy_", "red_hot_");

getVariantBuilder(block.get()).forAllStatesExcept((state) -> {
boolean animated = state.hasProperty(LeadDoorBlock.ANIMATED) && state.getValue(LeadDoorBlock.ANIMATED);
getVariantBuilder(block.get()).forAllStatesExcept(state -> {
boolean right = state.getValue(DoorBlock.HINGE) == DoorHingeSide.RIGHT;
boolean open = state.getValue(DoorBlock.OPEN);
boolean lower = state.getValue(DoorBlock.HALF) == DoubleBlockHalf.LOWER;

int goopyness = block.get().getGoopyness(state);
var name = prefixes.get(goopyness) + baseName;
var textureSuffix = (open
? animated ? "_closing" : "_open"
: animated ? "_opening" : "");
var textureSuffix = open ? "_open" : "";
var bottom = blockTexture(goopyness < 2 ? (name + "_bottom" + textureSuffix) : "red_hot_lead");
var top = blockTexture(goopyness < 2 ? (name + "_top" + textureSuffix) : "red_hot_lead");

var bottomLeft = this.models().doorBottomLeft(name + "_bottom_left" + textureSuffix, bottom, top);
var bottomRight = this.models().doorBottomRight(name + "_bottom_right" + textureSuffix, bottom, top);
var topLeft = this.models().doorTopLeft(name + "_top_left" + textureSuffix, bottom, top);
var topRight = this.models().doorTopRight(name + "_top_right" + textureSuffix, bottom, top);
var bottomLeft = models().doorBottomLeft(name + "_bottom_left" + textureSuffix, bottom, top);
var bottomRight = models().doorBottomRight(name + "_bottom_right" + textureSuffix, bottom, top);
var topLeft = models().doorTopLeft(name + "_top_left" + textureSuffix, bottom, top);
var topRight = models().doorTopRight(name + "_top_right" + textureSuffix, bottom, top);

int yRot = (int) state.getValue(DoorBlock.FACING).toYRot() + 90;
if (open) {
Expand Down Expand Up @@ -341,6 +338,77 @@ public <T extends IronBarsBlock & IMeltableBlock> void meltableBars(DeferredBloc
generatedItem(block.get(), "block");
}

public <T extends LeverBlock & IMeltableBlock> void sturdyLever(DeferredBlock<T> block) {
var baseName = name(block);
var prefixes = List.of("", "goopy_", "red_hot_");

getVariantBuilder(block.get()).forAllStates(state -> {
var facing = state.getValue(LeverBlock.FACING);
var face = state.getValue(LeverBlock.FACE);
boolean powered = state.getValue(LeverBlock.POWERED);
int goopyness = block.get().getGoopyness(state);

var name = prefixes.get(goopyness) + baseName;
var poweredSuffix = powered ? "_on" : "";

ModelFile model = goopyness == 0
? models().getExistingFile(blockTexture(name + poweredSuffix))
: models().withExistingParent(name + poweredSuffix, blockTexture(baseName + poweredSuffix))
.texture("base", blockTexture(name + "_base"))
.texture("lever", blockTexture(name));

return ConfiguredModel.builder()
.modelFile(model)
.rotationX(switch (face) {
case FLOOR -> 0;
case WALL -> 270;
case CEILING -> 180;
})
.rotationY((int) (switch (face) {
case FLOOR, WALL -> facing;
case CEILING -> facing.getOpposite();
}).toYRot())
.build();
});

generatedItem(block.get(), Oreganized.modLoc("block/" + baseName + "_item"));
}

public <T extends ButtonBlock & IMeltableBlock> void sturdyButton(DeferredBlock<T> block) {
var baseName = name(block);
var prefixes = List.of("", "goopy_", "red_hot_");

getVariantBuilder(block.get()).forAllStates(state -> {
var facing = state.getValue(ButtonBlock.FACING);
var face = state.getValue(ButtonBlock.FACE);
boolean powered = state.getValue(ButtonBlock.POWERED);
int goopyness = block.get().getGoopyness(state);

var name = prefixes.get(goopyness) + baseName;
var poweredSuffix = powered ? "_pressed" : "";

ModelFile model = goopyness == 0
? models().getExistingFile(blockTexture(name + poweredSuffix))
: models().withExistingParent(name + poweredSuffix, blockTexture(baseName + poweredSuffix))
.texture("texture", blockTexture(name));

return ConfiguredModel.builder()
.modelFile(model)
.rotationX(switch (face) {
case FLOOR -> 0;
case WALL -> 270;
case CEILING -> 180;
})
.rotationY((int) (switch (face) {
case FLOOR -> facing.getOpposite();
case WALL, CEILING -> facing;
}).toYRot())
.build();
});

simpleBlockItem(block.get(), new ModelFile.ExistingModelFile(blockTexture(block.get()).withSuffix("_inventory"), models().existingFileHelper));
}

public void gargoyleBlock(DeferredBlock<? extends Block> block) {
var texture = blockTexture(block.get());
var floorModel = models().getExistingFile(texture);
Expand Down
Loading
Loading