Define Barrel Material

This commit is contained in:
thedarkcolour 2024-02-12 09:08:26 -08:00
parent 95585d6b0f
commit f85e5396b7
2 changed files with 66 additions and 0 deletions

View File

@ -0,0 +1,59 @@
/*
* Ex Deorum
* Copyright (c) 2024 thedarkcolour
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package thedarkcolour.exdeorum.material;
import com.mojang.datafixers.util.Function6;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.world.level.block.SoundType;
import thedarkcolour.exdeorum.ExDeorum;
public record BarrelMaterial(
// The sound this block makes (a string corresponding to a field in SoundType, or an unqualified field reference like me.mymod.block.Sounds.MODDED_SOUND_TYPE)
SoundType soundType,
// The hardness of the barrel when harvesting
float strength,
// Whether this barrel needs a special tool to be harvested (ex. stone barrel only drops if mined with pickaxe)
boolean needsCorrectTool,
// Whether the barrel can hold hot fluids
boolean fireproof,
// Numeric ID of map color (these can be found on Minecraft Wiki as well as in MapColor.java)
int mapColor,
// ID of mod that should be present
String requiredModId
) {
public static final Codec<BarrelMaterial> CODEC = RecordCodecBuilder.create(builder -> {
return builder.group(
Codec.STRING.fieldOf("sound_type").xmap(BarrelMaterial::readSoundType, BarrelMaterial::writeSoundType).forGetter(BarrelMaterial::soundType),
Codec.FLOAT.fieldOf("strength").forGetter(BarrelMaterial::strength),
Codec.BOOL.fieldOf("needs_correct_tool").forGetter(BarrelMaterial::needsCorrectTool),
Codec.BOOL.fieldOf("fireproof").forGetter(BarrelMaterial::fireproof),
Codec.INT.fieldOf("map_color").forGetter(BarrelMaterial::mapColor),
Codec.STRING.optionalFieldOf("required_mod_id", ExDeorum.ID).forGetter(BarrelMaterial::requiredModId)
).apply(builder, BarrelMaterial::new);
});
private static SoundType readSoundType(String soundType) {
return null;
}
private static String writeSoundType(SoundType soundType) {
return null;
}
}

View File

@ -0,0 +1,7 @@
{
"type": "exdeorum:barrel",
"sound_type": "wood",
"strength": 4.0,
"fireproof": false,
"map_color": "wood",
}