#Technical blocks

1 messages ยท Page 4 of 1

charred pasture
#

ignore that notification

#

east west north south blockstate properties

charred pasture
#

this seems to work

#
        Set<String> ignored = Set.of("facing", "horizontal_facing", "vertical_direction", "axis", "rotation", "east", "west", "south", "north");
        List<ItemStack> itemStacks = blockItems.stream()
                .flatMap(blockItem -> blockItem.getBlock().getStateManager().getStates().stream()
                        .map(state -> {
                            BlockStateComponent comp = new BlockStateComponent(BlockStateComponent.DEFAULT.properties());
                            for (Property<?> prop : state.getProperties()) {
                                if (!ignored.contains(prop.getName())) {
                                    comp = comp.with(prop, state);
                                }
                            }
                            return Map.entry(blockItem, comp);
                        })
                        .filter(entry -> !entry.getValue().properties().isEmpty())
                        .distinct()
                        .map(entry -> {
                            ItemStack stack = new ItemStack(entry.getKey());
                            stack.set(DataComponentTypes.BLOCK_STATE, entry.getValue());
                            stack.set(DataComponentTypes.ITEM_NAME, Text.literal(entry.getValue().toString()));
                            return stack;
                        }))
                .toList();
#

follow order

charred pasture
#

i should really cache it

#
        ItemTooltipCallback.EVENT.register((itemStack, context, type, textList) -> {
            NbtComponent component = itemStack.get(DataComponentTypes.CUSTOM_DATA);

            if (component != null && component.contains(MOD_ID + "_tooltip")) {
                BlockStateComponent blockStateComponent = itemStack.get(DataComponentTypes.BLOCK_STATE);

                if (blockStateComponent != null) {
                    blockStateComponent.properties().forEach((propName, propValue) -> {
                        Text text = Text.literal(propName + ": " + propValue).formatted(Formatting.GRAY);
                        textList.add(1, text);
                    });
                }
            }
        });
#

i not only add the blockstate but also a tiny nbt

#

just to know its from my mod

#
                    ItemStack stack = new ItemStack(entry.getKey());
                    stack.set(DataComponentTypes.BLOCK_STATE, entry.getValue());

                    NbtCompound nbtCompound = new NbtCompound();
                    nbtCompound.putBoolean(MOD_ID + "_tooltip", true);

                    stack.set(DataComponentTypes.CUSTOM_DATA, NbtComponent.of(nbtCompound));
#

i pushed the commits to github

#

next step is

#

to update this mod

#

i have some work to do

#

so i can't do it rn

#

maybe tomorrow

#

wow it needs architectury

#

and uses mojang mappings

woven nest
#

Arch loom, or architectury?

charred pasture
woven nest
#

Fun

charred pasture
#

it's not

#

that tiny of a mod

#

to port

#

๐Ÿ˜Ÿ

#

plugins {
id "architectury-plugin" version "3.4-SNAPSHOT"
id "dev.architectury.loom" version "1.7-SNAPSHOT" apply false
}

#

upstream repository might be dead

#

so i have to learn to jar in jar

#

using gradle 8.8

#

and somehow it's failing on project :fabric

woven nest
woven nest
charred pasture
#

suppose so

#

everyone is busy

charred pasture
# woven nest With what?

Configure project :
Architect Plugin: 3.4.161
Architectury Loom: 1.10.431
This version of Architectury Loom is in beta! Please report any issues you encounter: https://github.com/architectury/architectury-loom/issues

Configure project :common
:remapping 2 mods from modImplementation (java-api)
:remapped 2 mods (intermediary -> named) in 1.403 s
:remapping sources (Mercury, intermediary -> named)

Configure project :fabric
"Lock for cache='/home/ceg/.gradle/caches/fabric-loom', project=':fabric'" is currently held by pid '289354'.
Found existing cache lock file (ACQUIRED_ALREADY_OWNED), rebuilding loom cache. This may have been caused by a failed or canceled build.

FAILURE: Build failed with an exception.

  • What went wrong:
    A problem occurred configuring project ':fabric'.

Failed to notify project evaluation listener.
'java.lang.String org.gradle.api.artifacts.ProjectDependency.getPath()'

  • Try:

Run with --stacktrace option to get the stack trace.
Run with --info or --debug option to get more log output.
Run with --scan to get full insights.
Get more help at https://help.gradle.org.

CONFIGURE FAILED in 10s

Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/8.8/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

GitHub

A Gradle plugin to setup environments for Fabric, Forge, NeoForge and Quilt modding. - architectury/architectury-loom

woven nest
#

Huh

#

You might try the arch loom discord?

charred pasture
#

okay

dire blade
#

yeah

dire blade
#

does it do vertical stuff?

charred pasture
#

wdym vertical stuff

dire blade
#

oh also with the other method of placement

#

it would be nice if it could be a config option

#

so you could be able place illicit stuff anywhere without block updates

charred pasture
#

i think down is just the floor

charred pasture
charred pasture
#

like it doesnt tell any other blocks that it updated

dire blade
#

yeah

#

non-full water blockstates will vanish after 1 tick when placed

dire blade
#

is this on github

charred pasture
#

yes

charred pasture
charred pasture
dire blade
#

yeah that's what I meant

charred pasture
#

you mean the block state info

#

is the up and down

dire blade
dire blade
charred pasture
#

okay

#

what do you think should be added/changed now

#

remaining things

dire blade
#

I don't really see much to be added

charred pasture
#

what is vertical stuff

dire blade
#

uhh

#

wait

#

I think

#

get vertical placement

#

then take on the beast that is backporting

#

I think 24w14potato should be first

#

then 1.20.1

dire blade
dire blade
#

obviously there is a little bit more but it should be simple enough

#

1.20.1 though is NBT

#

so stuff would have to be reworked

charred pasture
#

you mean make the

#

illicit blocks

#

be able to be placed below blocks

dire blade
#

on the ground below

#

and on ceilings above

charred pasture
#

hmm

#

so like

#

blocks that need ceiling support should still be able to be placed on the ground

#

and blocks that need ground support

#

should still be able to be placed on the ceiling

charred pasture
#

so like you mean

#

piston heads should face down

#

when you place on ceiling

#

and face up

#

when you place on floor (if looking below)

dire blade
#

yeah exactly

charred pasture
#

is that possible

#

with set lock

#

block

dire blade
#

yes

#

if you use the correct blockstate

#

(I am assuming you mean setblock)

charred pasture
#

yes

#

okay so

#

i think

#

uh

#

rn i only set the racing

#

facing

#

to be opposite

#

of the horizontal facing

#

doesnt factor in verticality

#
if (blockState != null && blockState.contains(Properties.FACING)) {
            blockState = blockState.with(Properties.FACING, context.getHorizontalPlayerFacing().getOpposite());
        }
dire blade
#

hmm

#

maybe see if player is facing to Y

charred pasture
#

this is how

#

pistons do it in mc

#

and other blocks

#

that support facing up and down

#

public BlockState getPlacementState(ItemPlacementContext ctx) {
return this.getDefaultState().with(FACING, ctx.getPlayerLookDirection().getOpposite()).with(EXTENDED, false);
}

#

maybe if i replace horizontalPlayerFacing

#

with getPlayerLookDirection

dire blade
#

yeah do that

#

whatever a piston does just copy it

#

also a fix for wall signs

#

just make it point to a flat model

#

that is the name

#

so for instance like

#

cherry_wall_sign

#

it would point to an item texture

#

that being cherry_sign

#

also we still have the end gateway and portal problem

charred pasture
#

so like you want to

#

remove the hardcoded 2d textures

#

entirely

#

for gateway and portal

charred pasture
#

i made it use the 2d textures

dire blade
#

like render the end portal texture in a square for end portals

#

and a cubic shape for gateways

dire blade
#

so I think for the top list of priorities at the moment

#

vertical orientation -> fix wall signs (also darken moving piston) -> backporting

charred pasture
dire blade
#

modded wall signs are somehow broken

#

purple and black instead of their item texture

#

this is with cinderscapes

charred pasture
#

i did not try with cinderscapes

charred pasture
#

probably cinderscape uses different names for their texture file

#

or something is different

#

if you have logs

#

maybe you can send them

charred pasture
#

cinderscapes

#

is by the same ppl

#

as terrestria

woven nest
#

lol

charred pasture
#

ask

#

also*

#

in the original issue i made

#

they said they fixed the wood types

#

in 1.21.6

#

they wouldn't do it for 1.21.5 because it'd take too much effort

#

for too little benefit

woven nest
charred pasture
woven nest
#

I know a guy who has done it, but I've never wanted to

charred pasture
#

can't think from the top of my head

#

on how i'd get

#

textures from a block

#

probably uh

#

i can use your

#

getModel thing

#

and do something with it

#

getting textures from a

#

UnbakedModel

#

interface Context {
@Nullable
UnbakedModel getModel(Identifier id);

#

this could probably work

#

if i wanted to

#

make it 3d

#

and if they use the same model

#

as the normal mc

#

just different textures

charred pasture
charred pasture
#

for now im just gonna use the same system like i did with terrestria

#

to fix the models

#

just pushed that one

#

Erm

#

[15:39:37] [Worker-Main-6/WARN] (Minecraft) Missing textures in model cinderscapes:potted_luminous_pod:
minecraft:textures/atlas/blocks.png:cinderscapes:block/luminous_pod

charred pasture
#

okay this is because

#

theres something a bit different with how potted plants work

#

luminous pod is a double block plant

#

and its a bit different for a double block plant and a potted plant

#

i made a fix for it

#

moving pistons darker

#

for end portal and end gateway issue

#

i proposed this

#

what do you think

#

i dont know if i am able to access textures

#

outside the block folder

#

if i have a parent that uses the cube model inside blocks model

#

i tried and it didnt work

#

I think 24w14potato should be first
then 1.20.1

#

ill see if i can port to that

#

hmm

#

sources donwloaded

#

idk what class to check

#

BakedModelManager

#

i found ModelLoader

#

nvm bakedmodelmanager

#

exists

dire blade
charred pasture
#

i think this is where

#

item models

#

are handled

dire blade
#

hmm

charred pasture
#

actually i think i remember that

#

modelloadingplugin

#

could be used

#

hmm

#

is this the right mc version

#
# Done to increase the memory available to gradle.
org.gradle.jvmargs=-Xmx1G
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=24w14potato
yarn_mappings=24w14potato+build.4
loader_version=0.16.14
# Mod Properties
mod_version=24w14potato
maven_group=com.github.cargocats
archives_base_name=illicitblocks
# Dependencies
# check this on https://modmuss50.me/fabric.html
fabric_version=0.96.14+24w14potato
#
  "depends": {
    "fabricloader": ">=${loader_version}",
    "fabric": "*",
    "minecraft": "1.20.5-alpha.24.12.potato"
  }
#

there we go

#

wow i havent actually played the april fools thing

#

at all

#

ive never seen this

#

new experience for me

#

poop

#

java.lang.StackOverflowError: null
at knot/com.github.cargocats.illicitblocks.item.IllicitBlockItem.getTranslationKey(IllicitBlockItem.java:38) ~[main/:?]
at knot/net.minecraft.block.WallTorchBlock.getTranslationKey(WallTorchBlock.java:54) ~[minecraft-common-917be8ecad-24w14potato-net.fabricmc.yarn.24w14potato.24w14potato+build.4-v2.jar:?]
at
...

#

okay i got it to uh

#

load

#

but item models

#

are missing

#

gonna publish first draft

#

for it

charred pasture
#

this is working

#
package com.github.cargocats.illicitblocks.client;

import com.github.cargocats.illicitblocks.IllicitBlocks;
import net.fabricmc.fabric.api.client.model.loading.v1.ModelLoadingPlugin;
import net.minecraft.client.render.model.json.JsonUnbakedModel;
import net.minecraft.util.Identifier;

import java.util.List;

import static com.github.cargocats.illicitblocks.IllicitBlocks.createdBlockItems;
import static com.github.cargocats.illicitblocks.IllicitBlocks.moddedBlocks;

public class IllicitModelPlugin implements ModelLoadingPlugin {
    @Override
    public void onInitializeModelLoader(Context pluginContext) {
        pluginContext.resolveModel().register(context -> {
            Identifier id = context.id();
            if (id.equals(new Identifier("minecraft", "item/water"))) {
                IllicitBlocks.LOG.info("Injecting model for {}", id);
                return JsonUnbakedModel.deserialize("""
            {
              "parent": "item/generated",
              "textures": {
                "layer0": "minecraft:block/dirt"
              }
            }
        """);
            }
            return null;
        });

        pluginContext.addModels(createdBlockItems);
    }
}

woven nest
# charred pasture

you likely don't need most of it, as the model loading api was more powerful back then

#

and

charred pasture
#

yes

woven nest
#

you got it lol

charred pasture
#

yes

woven nest
#

didn't read to the bottom

charred pasture
#

its a bit more work

#
public class IllicitModelPlugin implements ModelLoadingPlugin {
    private static final HashMap<Identifier, Identifier> blockIdToItemId = new HashMap<>();
    private static final HashMap<Identifier, Identifier> itemIdToBlockId = new HashMap<>();
    // This is necessary because these mods don't use their own WoodTypes
    private static final List<String> annoyingMods = List.of("terrestria", "cinderscapes");

    @Override
    public void onInitializeModelLoader(Context pluginContext) {
        // make sure it is checking all our models
        pluginContext.addModels(createdBlockItems);

        createdBlockItems.forEach(blockId -> {
            Identifier itemId = new Identifier(blockId.getNamespace(), "item/" + blockId.getPath());
            blockIdToItemId.put(blockId, itemId);
            itemIdToBlockId.put(itemId, blockId);
        });

        pluginContext.resolveModel().register(context -> {
            // can be either :block/ or :item/
            Identifier id = context.id();

            if (blockIdToItemId.containsValue(id)) {
                String theResult = getModelForId(id, context);
                Identifier blockId = blockIdToItemId.get(id);

                IllicitBlocks.LOG.info("THE RESULT {}, ITEM ID: {}, BLOCK ID: {}", theResult, id, blockId);
                return JsonUnbakedModel.deserialize(theResult);
            }
            return null;
        });

        IllicitBlocks.LOG.info("LOADED ILLICIT MODEL PLUGIN");
    }
#

trying to get it to work

#

now

#

instead of making everything a dirt

woven nest
#

dirt is fun

charred pasture
#

well its working

#

for the most part

#

except for the tints,

#

and special models

#

gonna push another commit for what i have rn

#

potato snapshot is above 1.20.1

#

guess thats a okayish starting point

#

so i can move down

#

backporting

charred pasture
#

got banners to work

dire blade
#

uhhh

#

I can't compile it

charred pasture
#

any logs

#

heads work now too

dire blade
charred pasture
#

Erm

#
> Task :remapJar FAILED
Mapping source name conflicts detected:
  net/minecraft/entity/mob/MegaSpudEntity METHOD isPotato (()Z) -> [net/minecraft/entity/mob/MegaSpudEntity/method_58887, net/minecraft/entity/Entity/method_58842]
  net/minecraft/entity/mob/PoisonousPotatoZombieEntity METHOD isPotato (()Z) -> [net/minecraft/entity/mob/PoisonousPotatoZombieEntity/method_58887, net/minecraft/entity/Entity/method_58842]
  net/minecraft/entity/Entity METHOD isPotato (()Z) -> [net/minecraft/entity/Entity/method_58887, net/minecraft/entity/Entity/method_58842]
  net/minecraft/entity/passive/BatatoEntity METHOD isPotato (()Z) -> [net/minecraft/entity/Entity/method_58842, net/minecraft/entity/passive/BatatoEntity/method_58887]
  net/minecraft/entity/mob/GuardianEntity METHOD isPotato (()Z) -> [net/minecraft/entity/mob/GuardianEntity/method_58887, net/minecraft/entity/Entity/method_58842]
#

what does your gradle.porperties look like

#

i added the tints

#

and supported the other things

#

should be extremely close

#

to 1.21.5 version

#

now

#

also committed and pushed

#

forgot to remove

#

some logs

#

took me the entire evening to port

dire blade
#

same as yours

#

maybe it wants J21 or something

dire blade
#

for the mod porting sequence

#

just 24w14potato and 1.20.1

#

then we can go backwards to 1.18.2 and then if possible 1.16.5 and 20w14infinite

charred pasture
#

๐Ÿ’€

#

try

#

starting from scratch

#

got clone

#

git clone

#

git checkout -b 24w14potato

#

and try compiling from there

dire blade
#

yeah I did that

#

I have java set to j17

charred pasture
#

set to 21

#

and then try compiling

dire blade
#

hmm

charred pasture
#

i doubt it'd do

#

anything though

dire blade
#

yeah

#

give me a moment

charred pasture
#

1.16.5 probably not

#

i don't see a

#

branch for it

#

in fabric api

#

not sure if model api is there

charred pasture
woven nest
charred pasture
#

True

woven nest
#

fabric api doesn't miss versions, but sometimes they reuse branches

charred pasture
#

ah

#

i ported to 1.20.1

dire blade
#

sorry for the delay

#

yeah I get the same error on J21

charred pasture
#

with a fresh new clone

#

?

#

im not experienced with this mapping source name conflicts thing

#

all i know is mappings just gives names

woven nest
#

this error happens when a class implements a method that has the same name as another in dev, but two different names in prod

#

but like

#

that's vanilla

#

so I have no clue what happened

charred pasture
woven nest
#

are you on the latest intermediary / mapping version (for that version)?

charred pasture
#

i did a mixin to register items just before the registry freezes

#

i think its neat

#
package com.github.cargocats.illicitblocks.mixin;

import com.github.cargocats.illicitblocks.IllicitBlocks;
import com.github.cargocats.illicitblocks.item.IllicitBlockItem;
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
import net.minecraft.registry.Registries;
import org.spongepowered.asm.mixin.Debug;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.ArrayList;

@Debug(export = true)
@Mixin(Registries.class)
public class RegistriesMixin {
    @Inject(method = "freezeRegistries", at = @At("HEAD"))
    private static void beforeFreeze(CallbackInfo ci) {
        ArrayList<IllicitBlockItem> blockItems = IllicitBlocks.registerBlockItems();

        ItemGroupEvents.modifyEntriesEvent(IllicitBlocks.ILLICIT_BLOCKS_ITEM_GROUP_KEY)
                .register(group -> blockItems.forEach(blockItem -> {
                    group.add(blockItem);
                    IllicitBlocks.generateItemStacksFromBlockItem(blockItem).forEach(group::add);
                }));

        IllicitBlocks.LOG.info("Finished registering IllicitBlocks items");
    }
}

#

gives me this when exported

woven nest
#

you should probably priority to be before that

#

for mod compat reasons

charred pasture
#

hmm

#

so that my

#

injection has higher priority

#

if other mods mixins

#

also mixin into freezeRegistries?

woven nest
#

nah

#

that's the default item components event

#

so you should be before it so your items can work with it

charred pasture
#

so i want my

#

$beforefreeze

#

to be before the

#

modifydefaultitemcomponents

woven nest
#

yeah

charred pasture
#

how high can the priority be

#

@Debug(export = true)
@Mixin(value = Registries.class, priority = 69420)
woven nest
#

higher means later

charred pasture
#

ah

woven nest
#

but you can go all the way to Integer.MAX_VALUE

#

but really shouldn't

charred pasture
#

negative infinity ๐Ÿง 

woven nest
#

there isn't a need to

charred pasture
#

im just gonna set it

#

to 0

#
@Mixin(value = Registries.class, priority = 0)
woven nest
#

Probably 1

charred pasture
#

alright

#

is that an arbitary

woven nest
#

Because the general convention is to reserve the negatives for fapi

charred pasture
#

arbitrary value u picked

#

oh okay

#

so 0 is like in limbo

woven nest
#

And 0 requires another mod to go negative to usurp you, if they need to for some reason,

#

Like if they want to register blocks before you make items so they can be included, but also right before the freeze

charred pasture
#

hopefully not too many mods do that

woven nest
#

They probably won't

#

But probably is how fabric exists lol

charred pasture
#

hmm

#

that mixin really reduced my lines of code

charred pasture
#

temp modrint hpage

dire blade
charred pasture
#

๐Ÿฅ”

dire blade
#

does it compile

charred pasture
#

well for me it does

charred pasture
#

if you cant compile it i can compile it for you

#

but maybe your not comfortable with that

woven nest
charred pasture
#

no idea how to set up github workflow

woven nest
#

there is an example in the fabric template, iirc

charred pasture
#

alright

#

ill check that out

woven nest
charred pasture
#

yes

#

plop the file in

#

and pray it works

#

on: [pull_request, push]

#

๐Ÿ‘Š

woven nest
charred pasture
#

btw i found out

#

what was causing

#

the weird getpath thing in condensed creative

woven nest
#

Oh?

charred pasture
#

this works

plugins {
    id "architectury-plugin" version "3.4-SNAPSHOT"
    id "dev.architectury.loom" version "1.7-SNAPSHOT" apply false
}

but this doesnt

plugins {
    id "architectury-plugin" version "3.4-SNAPSHOT"
    id "dev.architectury.loom" version "1.10-SNAPSHOT" apply false
}
#

now im trying to figure out how

#

to make it use a more up to date loom

#
Mod was built with a newer version of Loom (1.10.1), you are using Loom (1.7.423)
#

well erm

#

it seems 1.7 is the max version

woven nest
#

Have you checked their maven

charred pasture
#

ill see

#

alright somethings happening

#

i updated gradle to 8.14

dire blade
charred pasture
#

okay so

#

this is too much porting

#

io/wispforest/condensed_creative/data/CondensedEntriesLoader.java

woven nest
#

Lol

charred pasture
#

i just annihilated

#

features i didnt want to port

#

๐Ÿง 

#

like data driven condensed items

#

okay im going to annihilate owocompat

#

okay stupid mixin stuff

#

nvm then

#

too much porting

#

well im gonna quit but atleast i did this

dire blade
charred pasture
#

plus icons

#

and negative icons

#

missing

dire blade
#

interesting

charred pasture
#

there was probably

#

20-30 errors

#

when i first attempted

dire blade
#

hmmm

charred pasture
#

okay im gonna start the

#

github workflow

#

thing now

stable pine
#

3.4k messages oh ths post is crazy.

woven nest
stable pine
#

Damn

charred pasture
#

okay

#

inside the artifacts.zip

#

i gotta do it

#

for other branches

#

now

#

damn

#

even github workflows

#

has the same issue

#

as he does

#

another case of the mysterious works on my machine

#

ok well thats weird

#

somehow it managed to compile for 1.20.1

#

but not 24w14potato

#

got it to compile

#

magical one line change solution

charred pasture
#

!fabricVersion 24w14potato

graceful sequoiaBOT
#
24w14potato Fabric versions

build.gradle (constants inside the build script)

    minecraft "com.mojang:minecraft:24w14potato"
    mappings "net.fabricmc:yarn:24w14potato+build.4:v2"
    modImplementation "net.fabricmc:fabric-loader:0.16.14"

    // Fabric API
    modImplementation "net.fabricmc.fabric-api:fabric-api:0.46.6+1.18"
}```
**gradle.properties** (constants in a separate file, as with Example Mod)
```minecraft_version=24w14potato
yarn_mappings=24w14potato+build.4
loader_version=0.16.14

# Fabric API
fabric_version=0.46.6+1.18```
**Mappings Migration** ([more info](https://fabricmc.net/wiki/tutorial:migratemappings))
```gradlew migrateMappings --mappings "24w14potato+build.4"```
Note that the Fabric API version is usually only correct for the latest minor MC release (e.g. 1.16.5 or 1.15.2) due to implementation limitations. Check [CurseForge](https://minecraft.curseforge.com/projects/fabric/files) for a more precise listing.
charred pasture
#

well then

#

:v2

woven nest
charred pasture
#

oh i didn't see it

#

guess something is wrong with +build.4 then

woven nest
#

build 4, still version 2

#

The versions are iterations of the yarn spec

#

There are only three

#

Tmk

charred pasture
#

what is tmk

woven nest
#

To my knowledge

charred pasture
#

i just

#

thought of that

#

thanks

charred pasture
#

๐Ÿฅ”

#

what next

dire blade
#

we have 24w14potato

#

models are pretty decent

#

I think the only way might be backwards

charred pasture
dire blade
#

wait what

charred pasture
#

check the github

woven nest
#

That moment when cargo cat shipped everything while you were busy

dire blade
dire blade
#

somehow managed yesterday to do anything but test illicitblocks

#

I have an idea

#

maybe have an option to change pickblock functionality

#

since the mod generates all illicit blocks

#

an option to pick the absolute block would be nice to have

#

so instead of a powder snow bucket when you middle click on powder snow

#

it would be actual powder snow

charred pasture
#

okay

charred pasture
#

to track if the block was placed by my illicitblockitem

#

if you had powder snow that was placed by my illicitblockitem

#

that powder snow block has their own pick item stack functionality

dire blade
#

hmm

#

yay

#

so potato works now

charred pasture
#

idk how you would

#

differentiate

#

a powder snow block

#

that was placed with a powder snow bucket

#

vs my illicit powder snow

#

this could go with over blocks too

dire blade
#

can confirm that illicitblocks builds on J17

charred pasture
#

true

dire blade
#

testing stuff

#

yep

#

it builds on J17

charred pasture
#

okay

dire blade
#

uhhh

#

but it doesn't actually work on J17

#

this could be a problem for compatibility

charred pasture
#

so

#

you ran 24w14potato

#

with java 17

dire blade
#

yes

charred pasture
#

and it crashes

dire blade
#

with illicitblocks

charred pasture
#

erm

dire blade
#

I bypassed the mixin java requirement and still got a crash

charred pasture
#

i think i might know why

#

iim using exclusive syntax

#

for java 21

#

only

dire blade
#

here's the log

charred pasture
#

even though it targets a mc version of java 17

dire blade
#

yeah

#

it compiles perfectly fine

charred pasture
#

so true

dire blade
#

it complains about that

charred pasture
#

21okay

#

okay

#

im gonna rewrite a tiny part of it for java 17

dire blade
#

yeah

charred pasture
#

its bc java 17 doesnt support this kind of syntax

dire blade
#

hmm

charred pasture
#

okay i fixed it

dire blade
#

perfect

charred pasture
#

im gonna test if it works

#

first

#

okay it runs

dire blade
#

the potato update blocks are quite underwhelming

charred pasture
#

try now

dire blade
#

the only new blocks are potato wall signs lol

charred pasture
#

hmm

#

well

#

the potato update did add

#

a ton of blocks

#

but there was already

#

existing blockitems

#

to place those blocks

dire blade
#

is it on github

dire blade
charred pasture
dire blade
charred pasture
#

erm

dire blade
#

compiled again

#

nothing

charred pasture
#

did you pull the latest commits

dire blade
#

I did git clone -b 24w14potato https://github.com/cargocats/illicitblocks

charred pasture
#

did u try git pull

#

see if it cached anything

dire blade
#

already up to date

#

hmm

#

maybe let's see again

#

what if I bypass it again

#

yep it works

charred pasture
#

huh

dire blade
#

you should probably set the java compatibility level in mixins to J17

#

after editing the mixin files in the root of the jar it worked

charred pasture
#

oh

dire blade
#

yeah

#

that

#

why isn't it showing the image

#

discord moment I guess

charred pasture
#

okay

#

erm

#

why is ur kde black and white

#

5 days strong

#

๐Ÿ’ช

dire blade
#

I have wanted to make my desktop use 1bit color for a REALLY long time

#

and I finally did it

charred pasture
#

crazy

#

so you're using x11

#

?

#

or does picom support wayland

dire blade
#

x11

#

I am a bit of an X11 zealot

dire blade
#

on 1.20.1

#

blockstates are broken

dire blade
#

so

#

I think that everything is very close

#

but here are some things

#

I think by this point

#

all we need to do is fix 1.20.1 NBT

#

fix end portals

#

and get condensed creative to somehow work

charred pasture
#

im gonna retry porting it

#

but strip out some things

#

i dont know if there is a block state component equivalent

#

for nbt

charred pasture
#

im just gonna rollback some files

#

well

#

actually

#

condensed creative

#

pretty much works

#

for 1.21.5

#

it's just

#

the plus and negative icons

#

are gone

#

(at least from what i tested(

woven nest
#

See what it generates

charred pasture
#

what does that do +

#

does that work on linux

#

middle mouse is usually paste

woven nest
#

No clue

charred pasture
#

i'll test

woven nest
#

It's the pick block bind, so it's usually rebound to m for me

#

So maybe rebind?

charred pasture
#

you're talking about inside mc

#

and not intellij

woven nest
#

Yup

dire blade
dire blade
#

weird thing

#

condensed creative is

charred pasture
charred pasture
dire blade
#

could probably find it with one of those nbt helper mods

#

the minecraft wiki isn't very helpful with obscure stuff like this

woven nest
charred pasture
#

true

charred pasture
#

fixed the block state thing

#

apparently

#

u put a nbt compound tag on blockitem

#

with the key of "BlockStateTag"

#

found as a constant in BlockItem

dire blade
#

hmm

dire blade
#

so

#

it works

#

but weirdly soul fire places fire

#

and it has no blockstates for it

#

however I didn't restart the game

#

yeah

#

if I restart the game soul fire is still weird

#

1 item in the tab for soul fire

#

no other blockstates

#

and placing it gives normal fire

#

this actually seems like proper behavior weirdly

#

when placed on soul blocks it does give soul fire

#

and it doesn't really spread

#

so somehow fire was reworked at some point

woven nest
#

I would imagine fire uses scheduled ticks, and isn't being kicked off properly

dire blade
charred pasture
#

the mysteries of 1.20.1

#

soul fire

woven nest
charred pasture
#

7 days ๐Ÿ”ฅ

dire blade
#

I guess then by this point

#

there isn't really anything for the most part

#

I'm going to test 1.20.1 and stuff for compatibility and give the ranges so the fabric jsons can be as accurate as possible

charred pasture
#

okay

#

maybe condensed creative

#

but then thats it

#

probably

charred pasture
#

Apple

#

๐ŸŽ

#

grah

dire blade
#

like I have no other ideas for this mod

#

models are ok (I'll make a better end portal texture)

charred pasture
#

true

charred pasture
dire blade
#

items work perfectly fine

#

it should work pretty well with future versions

charred pasture
#

i guess

#

do you want me to check

#

if it works on 1.21.6

dire blade
#

it should be perfectly fine

charred pasture
#

ig

#

well

#

they did do rendering refactoring

dire blade
#

hmm

dire blade
charred pasture
#

-XX:+AllowEnhancedClassRedefinition

dire blade
#

they probably didn't do stuff to the model system

dire blade
charred pasture
#

so basically

#

thats for like

dire blade
#

yeah

charred pasture
#

enabling

#

the ability to able to hotswap more code

#

than normal

dire blade
#

ah I see

charred pasture
#

well able to hotswap in more different contexts

#

so i dont have to

#

relaunch mc

#

398293742938428 times

dire blade
#

yeah

#

the 1.21.5 version

#

it should be compatible with >=24w14a

charred pasture
#

alright

dire blade
#

the potato version should be compatible with 24w09a - 24w14potato

charred pasture
#

wow i got it to work

#

im gonna have to gut some things ofc

#

specifically data driven entry

#

and auto condensing of paintings

#

(i have no idea how to make these work because of this huge code base)

#

damn a lot of these warnings

#

came from the original code

dire blade
dire blade
#

from there

#

I think 1.19 might work

#

I have no idea though

charred pasture
#

well

#

this was supposed to be temporary

#

303.32kb

dire blade
#

what

dire blade
#

I think what we need is just a REALLY compact and limited version of condensed creative that only groups illicit blocks

charred pasture
#

that could work i guess

#

making my own implementation

#

of condensed creative

#

that only works

#

for the item gorup

#

illicit blocks

#

i have no idea how to include

#

the condensed creative jar i made

#

and i wouldn't need to go through the process

#

of having to depend on another mod

#

doesnt need to be super complicated

#

like no data driven stuff

#

just a small implementation for my mod

charred pasture
#

this is actually pretty hard

woven nest
#

It only took 4 days

charred pasture
#

pointers

#

this is probably gonna be

#

days

woven nest
charred pasture
charred pasture
#

for now i am going to try to use condensed creative

#

damn

#

gotta find somehow to integrate this

#

with this

#

condensed creative compat has to be in its own entrypoint

#

from fabric.mod.json

#

this actually sucks

#

nothing ive tried works

woven nest
#

Theoretically, you should do everything except cc compat outside of the cc compat entrypoint

#

Especially because, hypothetically, the cc entrypoint should be called way after the freeze

charred pasture
#

hmm

#

ill see

#

as it turns out

#

it does it when

#

u load into the world

#

also before

#

i think i did something wrong

#

i did make it stand alone

#

before

#

but something happened

#

also for some reason

#

it sometimes prints

#

sometimes it doesnt

#
public class CondensedCreativeCompat implements CondensedCreativeInitializer {
    @Override
    public void registerCondensedEntries(boolean refreshed, DynamicRegistryManager access) {
        IllicitBlocks.LOG.info("Initializing condensed entries");
#

like rn it doesnt work

#
package com.github.cargocats.illicitblocks;


import com.github.cargocats.illicitblocks.item.IllicitBlockItem;
import io.wispforest.condensed_creative.registry.CondensedCreativeInitializer;
import io.wispforest.condensed_creative.registry.CondensedEntryRegistry;
import net.minecraft.registry.DynamicRegistryManager;
import net.minecraft.registry.Registries;
import net.minecraft.util.Identifier;

public class CondensedCreativeCompat implements CondensedCreativeInitializer {
    @Override
    public void registerCondensedEntries(boolean refreshed, DynamicRegistryManager access) {
        IllicitBlocks.LOG.info("Initializing condensed entries");

        for (var blockItem : IllicitBlocks.createdBlockItems) {
            var mainItem = Registries.ITEM.get(blockItem);
            var variants = IllicitBlocks.generateItemStacksFromBlockItem((IllicitBlockItem) mainItem).stream()
                    .distinct()
                    .toList();

            CondensedEntryRegistry.fromItemStacks(
                    Identifier.of(IllicitBlocks.MOD_ID, "condensed/" + blockItem.getPath()), // Unique ID
                    mainItem,
                    variants
            ).addToItemGroup(IllicitBlocks.ILLICIT_BLOCKS_ITEM_GROUP_KEY);
        }
    }
}

#

okay it has this habit of semi working

#

i hate it when

#

it sometimes works

#

not just a always doesnt work or always work

#

quasi working

#

if i dont do this it doesnt work even though it has no connection thing to the condensed creative

#
/*
        ItemGroupEvents.modifyEntriesEvent(IllicitBlocks.ILLICIT_BLOCKS_ITEM_GROUP_KEY)
                .register(group -> blockItems.forEach(blockItem -> {
                    group.add(blockItem);
                    IllicitBlocks.generateItemStacksFromBlockItem(blockItem).forEach(group::add);
                })); */
#

this log doesnt even get printed

#

then when i uncomment this

#

it has an often more chance to fail

#

than generate

#

im gonna quit this

charred pasture
#

1.21.6 released

#

did u test the release candidate

#

if not you can probably test the 1.21.6

dire blade
#

hmmmmm

charred pasture
#

real

dire blade
#

compiling latest

charred pasture
#

true

dire blade
#

hopefully

#

yep

#

it works perfectly fine

#

is there a way to set multiple fabric versions

#

set fabric.mod.json to >=1.20.5

dire blade
#

maybe 2xwx or something

warm mirage
#

snapshots work, they're translated to 1.21.6.alpha.25.20.1 or something

charred pasture
#

True

dire blade
#

would it be

#

1.21.5.alpha.24.14.1

warm mirage
#

something like that

dire blade
#

the wow starts now

#

(testing version compatibility)

#

it seems like

#

the correct syntax is 1.20.5-alpha.24.14.a

#

so uh

#

what I have

#

24w14a-1.21.3 crashes

#

1.21.4 opens the window then crashes

dire blade
#

1.21.5 is fine

#

25w02a crashes

#

25w10a is fine

#

25w05a works

#

25w03a crashes

#

ok

#

here's the range for 1.21.5 version

#

=1.21.5-alpha.25.04.a

#

so this means we need a version for 1.21.3

#

time for more testing

#

24w14a - 24w46a crashes

#

so what we have

#

25w04a+ works perfectly fine
1.21.4 - 25w03a shows window then crashes

#

and 24w46a - 24w14a crashes

#

this will have to be the next version

#

24w14a

#

was not able to test 1.21.4 pre1 - rc1 because FAPI doesn't support them for some reason

#

24w46a log

#

oh oops

#

wait

#

24w14a crash report

#

hopefully

#

this is enough to fix these versions and have a port for 24w14a - 24w46a and 1.21.4 - 25w03a

#

now it's time to go the other way around

#

with the potato and 1.20.1 version

charred pasture
#

hmm

charred pasture
#

is this real

#

#rendering-fails message

#

btw still under review

woven nest
charred pasture
#

hiring privately as in

#

they are hiring moderators privately

woven nest
#

as in, I do think they're trying to fix it, just can't see it. I know of someone who got hired recently by then

dire blade
charred pasture
#

pushing 4k messages almost

#

9 days in review

woven nest
#

9/28

charred pasture
#

huh

#

๐Ÿ”ฅ

#

that guy with the 4 weeks in review

#

that's pretty scary

dire blade
#

so 24w14a - 24w46a needs a port

#

1.21.4 - 25w03a need a port

#

just tested illicitblocks and it works perfectly fine on 24w09a

#

so potato is 24w09a - 24w14potato

#

1.20.1 - 24w07a works for the 1.20.1 version

#

we need a backport to 1.19.4

#

I think for backporting

#

this is how it should go

#

24w14a - 24w46a -> 1.21.4 - 25w03a -> 1.20-

charred pasture
#

modrinth got released

charred pasture
#

so what is the expected mc versions for 1.21.5, 1.20.1 and 24w14potato

#

i see u described it

#

for 1.20.1 and 24w14 potato

#

not 1.21.5

#

=1.21.5-alpha.25.04.a

#

ah

#

so 25w04a and above

#

for 1.21.5 version of the mod

#

im gonna clean up some of the code to match the main branch first for 1.20.1 and 24w14potato

dire blade
#

1.20.1 goes from 1.20 - 24w07a

#

24w14potato is 24w09a - 24w14potato

#

24w14a - 24w46a will need a port

#

1.21.4 - 25w03a will need a port

#

and 1.21.5 works on 25w04a+

charred pasture
#

idk how to actaully write the versions

#

so im just gonna make it

#

but label the right versions

#

on modrinth

dire blade
#

yeah

#

like

#

[1.20 - 24w07a] 1.0.0

charred pasture
#

i did specify a minimum versions for the 1.20.1 and 1.21.5

#

but not for the 24w14potato

#

just labelled it on modrinth

#

so what kind of versions u need backported

dire blade
#

once there are those two

#

we can start going even further back

#

I would probably want to stop at 1.18.2

#

once we get down to 1.18.2 I think from there it's sort of like

#

how feasible would a 1.17, 1.16, and possibly 20w14infinite port be

#

the main obstacles will probably be FAPI, registry stuff, and potentially models

#

but models from 1.20 on 1.16 should be fine

woven nest
dire blade
#

there might have to be some minor changes

#

with the 1.20.1 port there had to be a slight code fix

dire blade
#

!fabricVersion 1.20.1-rc1

graceful sequoiaBOT
#
1.20.1-rc1 Fabric versions

build.gradle (constants inside the build script)

    minecraft "com.mojang:minecraft:1.20.1-rc1"
    mappings "net.fabricmc:yarn:1.20.1-rc1+build.2:v2"
    modImplementation "net.fabricmc:fabric-loader:0.16.14"

    // Fabric API
    modImplementation "net.fabricmc.fabric-api:fabric-api:0.92.6+1.20.1"
}```
**gradle.properties** (constants in a separate file, as with Example Mod)
```minecraft_version=1.20.1-rc1
yarn_mappings=1.20.1-rc1+build.2
loader_version=0.16.14

# Fabric API
fabric_version=0.92.6+1.20.1```
**Mappings Migration** ([more info](https://fabricmc.net/wiki/tutorial:migratemappings))
```gradlew migrateMappings --mappings "1.20.1-rc1+build.2"```
Note that the Fabric API version is usually only correct for the latest minor MC release (e.g. 1.16.5 or 1.15.2) due to implementation limitations. Check [CurseForge](https://minecraft.curseforge.com/projects/fabric/files) for a more precise listing.
dire blade
#

why doesn't modrinth have FAPI be compatible with that version then

#

weird

#

!fabricVersion 25w03a

graceful sequoiaBOT
#
25w03a Fabric versions

build.gradle (constants inside the build script)

    minecraft "com.mojang:minecraft:25w03a"
    mappings "net.fabricmc:yarn:25w03a+build.3:v2"
    modImplementation "net.fabricmc:fabric-loader:0.16.14"

    // Fabric API
    modImplementation "net.fabricmc.fabric-api:fabric-api:0.46.6+1.18"
}```
**gradle.properties** (constants in a separate file, as with Example Mod)
```minecraft_version=25w03a
yarn_mappings=25w03a+build.3
loader_version=0.16.14

# Fabric API
fabric_version=0.46.6+1.18```
**Mappings Migration** ([more info](https://fabricmc.net/wiki/tutorial:migratemappings))
```gradlew migrateMappings --mappings "25w03a+build.3"```
Note that the Fabric API version is usually only correct for the latest minor MC release (e.g. 1.16.5 or 1.15.2) due to implementation limitations. Check [CurseForge](https://minecraft.curseforge.com/projects/fabric/files) for a more precise listing.
dire blade
#

!fabricVersion 25w04a

graceful sequoiaBOT
#
25w04a Fabric versions

build.gradle (constants inside the build script)

    minecraft "com.mojang:minecraft:25w04a"
    mappings "net.fabricmc:yarn:25w04a+build.10:v2"
    modImplementation "net.fabricmc:fabric-loader:0.16.14"

    // Fabric API
    modImplementation "net.fabricmc.fabric-api:fabric-api:0.46.6+1.18"
}```
**gradle.properties** (constants in a separate file, as with Example Mod)
```minecraft_version=25w04a
yarn_mappings=25w04a+build.10
loader_version=0.16.14

# Fabric API
fabric_version=0.46.6+1.18```
**Mappings Migration** ([more info](https://fabricmc.net/wiki/tutorial:migratemappings))
```gradlew migrateMappings --mappings "25w04a+build.10"```
Note that the Fabric API version is usually only correct for the latest minor MC release (e.g. 1.16.5 or 1.15.2) due to implementation limitations. Check [CurseForge](https://minecraft.curseforge.com/projects/fabric/files) for a more precise listing.
dire blade
#

what

#

why does it give 0.46.6+1.18

#

well that's not very useful at all

dire blade
#

this will likely be

#

the absolutely final new feature

#

taking the end portal effect and rendering it on end portal and gateway items

charred pasture
#

hmm

#

the end portal effect is a shader

dire blade
#

but how could we render it on to a texture or something

woven nest
#

I don't remember how to do that though...

dire blade
#

hmmmmmmmmmmmmmmmmmmmmmmmm

dire blade
#

because then anything that points to like