Initial commit
This commit is contained in:
35
kubejs/startup_scripts/grist.js
Executable file
35
kubejs/startup_scripts/grist.js
Executable file
@ -0,0 +1,35 @@
|
||||
StartupEvents.registry('block', e => {
|
||||
console.log('Creating grist blocks');
|
||||
Grist.forEachBlock(grist => {
|
||||
console.log(`Create ${grist}`);
|
||||
e.create(grist.id())
|
||||
.displayName(grist.displayName())
|
||||
.tagBlock('mineable/pickaxe')
|
||||
.textureAll(grist.blockTexture())
|
||||
.color(0, grist.color());
|
||||
});
|
||||
});
|
||||
|
||||
StartupEvents.registry('item', e => {
|
||||
console.log('Creating grist items');
|
||||
Grist.forEach(grist => {
|
||||
console.log(`Create ${grist}`);
|
||||
e.create(grist.id())
|
||||
.displayName(grist.displayName())
|
||||
.rarity('rare')
|
||||
.fireResistant(true)
|
||||
.textureJson({layer0: grist.itemTexture()})
|
||||
.color(0, grist.color());
|
||||
});
|
||||
});
|
||||
|
||||
StartupEvents.registry('fluid', e => {
|
||||
console.log('Creating grist fluids');
|
||||
Grist.forEachFluid(grist => {
|
||||
console.log(`Create ${grist}`);
|
||||
e.create(grist.id())
|
||||
.bucketColor(grist.color())
|
||||
.thickTexture(grist.color())
|
||||
.displayName(grist.displayName());
|
||||
});
|
||||
});
|
228
kubejs/startup_scripts/init.js
Executable file
228
kubejs/startup_scripts/init.js
Executable file
@ -0,0 +1,228 @@
|
||||
// priority: 0
|
||||
|
||||
function HSVtoRGB(h, s, v) {
|
||||
var r, g, b, i, f, p, q, t;
|
||||
i = Math.floor(h * 6);
|
||||
f = h * 6 - i;
|
||||
p = v * (1 - s);
|
||||
q = v * (1 - f * s);
|
||||
t = v * (1 - (1 - f) * s);
|
||||
switch (i % 6) {
|
||||
case 0: r = v, g = t, b = p; break;
|
||||
case 1: r = q, g = v, b = p; break;
|
||||
case 2: r = p, g = v, b = t; break;
|
||||
case 3: r = p, g = q, b = v; break;
|
||||
case 4: r = t, g = p, b = v; break;
|
||||
case 5: r = v, g = p, b = q; break;
|
||||
}
|
||||
const toHex = n => {
|
||||
return Math.round(255 * n).toString(16).padStart(2, '0');
|
||||
}
|
||||
// The JS engine seems to think that templates aren't actually strings??
|
||||
return `#${toHex(r)}${toHex(g)}${toHex(b)}`.toString();
|
||||
}
|
||||
|
||||
function Tier(name, colorValue) {
|
||||
this.name = name;
|
||||
this.colorValue = colorValue;
|
||||
};
|
||||
|
||||
Tier.prototype.displayName = function() {
|
||||
return this.name.charAt(0).toUpperCase() + this.name.slice(1);
|
||||
};
|
||||
|
||||
Tier.prototype.toString = function() {
|
||||
return this.name;
|
||||
};
|
||||
|
||||
function Element(name, hue) {
|
||||
this.name = name;
|
||||
this.hue = hue;
|
||||
};
|
||||
|
||||
Element.prototype.displayName = function() {
|
||||
return this.name.charAt(0).toUpperCase() + this.name.slice(1);
|
||||
};
|
||||
|
||||
Element.prototype.toString = function() {
|
||||
return this.name;
|
||||
};
|
||||
|
||||
function Grist(element, tier) {
|
||||
this.element = element;
|
||||
this.tier = tier;
|
||||
this.state = 'item';
|
||||
this.isExact = false;
|
||||
};
|
||||
|
||||
Grist.Tier = Tier;
|
||||
Grist.Element = Element;
|
||||
|
||||
// Hues are 0-255
|
||||
// -1 means white, as special case
|
||||
Grist.Types = {
|
||||
build: new Element('build', 153),
|
||||
agricultural: new Element('agricultural', 36),
|
||||
intelligent: new Element('intelligent', 77),
|
||||
energetic: new Element('energetic', 0),
|
||||
primordeal: new Element('primordeal', 203),
|
||||
universal: new Element('universal', -1)
|
||||
};
|
||||
|
||||
Grist.Elements = [
|
||||
Grist.Types.build,
|
||||
Grist.Types.agricultural,
|
||||
Grist.Types.intelligent,
|
||||
Grist.Types.energetic
|
||||
];
|
||||
|
||||
Grist.Primitives = [
|
||||
Grist.Types.primordeal,
|
||||
Grist.Types.universal
|
||||
];
|
||||
|
||||
// Color values are 0-1 floats
|
||||
Grist.Tiers = {
|
||||
basic: new Tier('basic', 0.5),
|
||||
improved: new Tier('improved', 0.75),
|
||||
radiant: new Tier('radiant', 1.0)
|
||||
};
|
||||
|
||||
Grist.Tiers.forEach = function(f) {
|
||||
[Grist.Tiers.basic, Grist.Tiers.improved, Grist.Tiers.radiant].forEach(f);
|
||||
}
|
||||
|
||||
Grist.forEach = function(f) {
|
||||
Grist.Tiers.forEach(tier => {
|
||||
Grist.Elements.forEach(element => {
|
||||
f(new Grist(element, tier));
|
||||
});
|
||||
Grist.Primitives.forEach(element => {
|
||||
f(new Grist(element, tier));
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
Grist.forEachBlock = function(f) {
|
||||
Grist.Tiers.forEach(tier => {
|
||||
Grist.Elements.forEach(element => {
|
||||
f(new Grist(element, tier).block());
|
||||
});
|
||||
Grist.Primitives.forEach(element => {
|
||||
f(new Grist(element, tier).block());
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
Grist.forEachFluid = function(f) {
|
||||
Grist.Tiers.forEach(tier => {
|
||||
Grist.Elements.forEach(element => {
|
||||
f(new Grist(element, tier).fluid());
|
||||
});
|
||||
Grist.Primitives.forEach(element => {
|
||||
f(new Grist(element, tier).fluid());
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
Grist.of = function(element, tier) {
|
||||
return new Grist(Grist.Types[element], Grist.Tiers[tier]);
|
||||
};
|
||||
|
||||
Grist.prototype.toString = function() {
|
||||
return `Grist(${this.id()}, color: ${this.color()})`;
|
||||
};
|
||||
|
||||
Grist.prototype.block = function() {
|
||||
this.state = 'block';
|
||||
return this;
|
||||
};
|
||||
|
||||
Grist.prototype.fluid = function() {
|
||||
this.state = 'fluid';
|
||||
return this;
|
||||
};
|
||||
|
||||
Grist.prototype.exact = function() {
|
||||
this.isExact = true;
|
||||
return this;
|
||||
};
|
||||
|
||||
Grist.prototype.color = function() {
|
||||
//return '#0d6aff';
|
||||
if (this.element.hue == -1) {
|
||||
return HSVtoRGB(0, 0, this.tier.colorValue);
|
||||
} else {
|
||||
return HSVtoRGB(this.element.hue/255.0, 1.0, this.tier.colorValue);
|
||||
}
|
||||
};
|
||||
|
||||
Grist.prototype.displayName = function() {
|
||||
switch(this.state) {
|
||||
case 'item': return `${this.tier.displayName()} ${this.element.displayName()} Grist`;
|
||||
case 'fluid': return `Liquid ${this.tier.displayName()} ${this.element.displayName()} Grist`;
|
||||
case 'block': return `Block of ${this.tier.displayName()} ${this.element.displayName()} Grist`;
|
||||
}
|
||||
};
|
||||
|
||||
Grist.prototype.key = function() {
|
||||
switch(this.state) {
|
||||
case 'item': return `grist_${this.element.name}_${this.tier.name}`;
|
||||
case 'fluid': return `grist_${this.element.name}_${this.tier.name}_fluid`;
|
||||
case 'block': return `grist_${this.element.name}_${this.tier.name}_block`;
|
||||
}
|
||||
};
|
||||
|
||||
Grist.prototype.tag = function() {
|
||||
switch(this.state) {
|
||||
case 'item': return `kubejs:grist/${this.element.name}/${this.tier.name}`;
|
||||
case 'fluid': return `kubejs:grist/${this.element.name}/${this.tier.name}/fluid`;
|
||||
case 'block': return `kubejs:grist/${this.element.name}/${this.tier.name}/block`;
|
||||
}
|
||||
};
|
||||
|
||||
Grist.prototype.elementalTag = function() {
|
||||
switch(this.state) {
|
||||
case 'item': return `kubejs:grist/${this.element.name}`;
|
||||
case 'fluid': return `kubejs:grist/${this.element.name}/fluid`;
|
||||
case 'block': return `kubejs:grist/${this.element.name}/block`;
|
||||
}
|
||||
};
|
||||
|
||||
Grist.prototype.tags = function() {
|
||||
return [
|
||||
'kubejs:grist',
|
||||
this.tag(),
|
||||
this.elementalTag()
|
||||
];
|
||||
};
|
||||
|
||||
Grist.prototype.id = function() {
|
||||
return `kubejs:${this.key()}`;
|
||||
};
|
||||
|
||||
Grist.prototype.toJson = function() {
|
||||
if (this.isExact) {
|
||||
switch(this.state) {
|
||||
case 'item': return {item: this.id()};
|
||||
case 'fluid': return {fluid: this.id()};
|
||||
case 'block': return {item: this.id()};
|
||||
}
|
||||
} else {
|
||||
switch(this.state) {
|
||||
case 'item': return {tag: this.tag()};
|
||||
case 'fluid': return {fluid: this.id()};
|
||||
case 'block': return {tag: this.tag()};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Grist.prototype.itemTexture = function() {
|
||||
return `malloc:item/grist_${this.tier.name}`;
|
||||
};
|
||||
|
||||
Grist.prototype.blockTexture = function() {
|
||||
return 'malloc:block/grist';
|
||||
};
|
||||
|
||||
global.Grist = Grist;
|
81
kubejs/startup_scripts/progression-items.js
Executable file
81
kubejs/startup_scripts/progression-items.js
Executable file
@ -0,0 +1,81 @@
|
||||
StartupEvents.registry('fluid', e => {
|
||||
// improved energetic progression
|
||||
e.create('destabilized_grist')
|
||||
.displayName('Destabilized Grist')
|
||||
.bucketColor('#cb0dff')
|
||||
.thickTexture('#cb0dff');
|
||||
|
||||
// radiant build progression
|
||||
e.create('grist_alloy_fluid')
|
||||
.displayName('Liquid Grist Alloy')
|
||||
.bucketColor('#cb0dff')
|
||||
.thickTexture('#cb0dff');
|
||||
});
|
||||
|
||||
StartupEvents.registry('item', e => {
|
||||
e.create('grist_essence').displayName('Grist Essence').rarity('rare');
|
||||
|
||||
// Intelligent progress
|
||||
// Basic
|
||||
e.create('insightful_tincture').displayName('Insightful Tincture').rarity('rare').textureJson({layer0:'minecraft:item/redstone_dust'}).color(0, Grist.of('build', 'basic').color());
|
||||
e.create('insightful_blend').displayName('Insightful Blend').rarity('rare').textureJson({layer0:'minecraft:item/lapis_lazuli'}).color(0, Grist.of('build', 'basic').color());
|
||||
e.create('sacred_flesh').displayName('Sacred Flesh').rarity('rare').textureJson({layer0:'minecraft:item/rotten_flesh'}).color(0, Grist.of('build', 'basic').color());
|
||||
|
||||
// Improved
|
||||
e.create('intelligent_focus').displayName('Intelligent Focus').rarity('rare');
|
||||
e.create('sapient_focus').displayName('Sapient Focus').rarity('rare');
|
||||
e.create('imbued_source_gem').displayName('Imbued Source Gem').rarity('rare');
|
||||
e.create('intelligent_catalyst').displayName('Intelligent Catalyst').rarity('rare');
|
||||
|
||||
// Radiant
|
||||
e.create('intelligent_processor').displayName('Intelligent Processor').rarity('rare').texture('malloc:item/intelligent_processor');
|
||||
e.create('raw_intelligent_processor').displayName('Raw Intelligent Processor').rarity('rare').texture('malloc:item/raw_intelligent_processor');
|
||||
e.create('deep_intelligent_processor').displayName('Deep Intelligent Processor').rarity('rare').texture('malloc:item/deep_intelligent_processor');
|
||||
e.create('raw_deep_intelligent_processor').displayName('Deep Raw Intelligent Processor').rarity('rare').texture('malloc:item/raw_deep_intelligent_processor');
|
||||
|
||||
// Energetic progression
|
||||
// Basic
|
||||
e.create('grist_paste').displayName('Gristy Paste').rarity('rare').textureJson({layer0:'minecraft:item/redstone'}).color(0, Grist.of('energetic', 'basic').color());
|
||||
|
||||
// Improved
|
||||
e.create('unstable_grist_capacitor').displayName('Unstable Grist Capacitor').rarity('rare').textureJson({layer0:'thermal:item/rf_coil'}).color(0, Grist.of('energetic', 'improved').color());
|
||||
e.create('infused_grist_capacitor').displayName('Infused Grist Capacitor').rarity('rare').textureJson({layer0:'thermal:item/rf_coil'}).color(0, Grist.of('energetic', 'improved').color());
|
||||
e.create('activated_grist_capacitor').displayName('Activated Grist Capacitor').rarity('rare').textureJson({layer0:'thermal:item/rf_coil'}).color(0, Grist.of('energetic', 'improved').color());
|
||||
e.create('inert_grist_nugget').displayName('Inert Grist Nugget').rarity('rare').textureJson({layer0:'minecraft:item/iron_nugget'}).color(0, Grist.of('energetic', 'improved').color());
|
||||
|
||||
// Radiant
|
||||
|
||||
// Agricultural progression
|
||||
// Basic
|
||||
e.create('grist_chutney').displayName('Grist Chutney').rarity('rare').textureJson({layer0: 'croptopia:item/butter'}).color(0, Grist.of('agricultural', 'basic').color());
|
||||
|
||||
// Improved
|
||||
e.create('spiced_grist_blend').displayName('Spiced Grist Blend').rarity('rare').textureJson({layer0: 'caupona:item/sugar_spice_jar'}).color(0, Grist.of('agricultural', 'improved').color());
|
||||
e.create('grist_morsels').displayName('Grist Morsels').rarity('rare').textureJson({layer0: 'caupona:item/sugar_spice_jar'}).color(0, Grist.of('agricultural', 'improved').color());
|
||||
e.create('grist_treats').displayName('Gristy Treats').rarity('rare').textureJson({layer0: 'caupona:item/sugar_spice_jar'}).color(0, Grist.of('agricultural', 'improved').color());
|
||||
|
||||
// Radiant
|
||||
|
||||
// Build progression
|
||||
// Basic
|
||||
e.create('coarse_grist_aggregate').displayName('Coarse Grist Aggregate').rarity('rare').textureJson({layer0: 'minecraft:item/iron_nugget'}).color(0, Grist.of('build', 'basic').color());
|
||||
e.create('reduced_grist_aggregate').displayName('Reduced Grist Aggregate').rarity('rare').textureJson({layer0: 'minecraft:item/iron_nugget'}).color(0, Grist.of('build', 'basic').color());
|
||||
e.create('refined_grist_aggregate').displayName('Refined Grist Aggregate').rarity('rare').textureJson({layer0: 'minecraft:item/iron_nugget'}).color(0, Grist.of('build', 'basic').color());
|
||||
e.create('heavy_duty_gear_die').displayName('Heavy Duty Gear Die').textureJson({layer0: 'thermal:item/press_gear_die'}).color(0, Grist.of('build', 'improved').color());
|
||||
|
||||
// Improved
|
||||
e.create('reinforced_grist_ingot').displayName('Reinforced Grist').rarity('rare').textureJson({layer0: 'minecraft:item/iron_ingot'}).color(0, Grist.of('build', 'improved').color());
|
||||
e.create('reinforced_grist_nugget').displayName('Reinforced Grist Nugget').rarity('rare').textureJson({layer0: 'minecraft:item/iron_nugget'}).color(0, Grist.of('build', 'improved').color());
|
||||
e.create('reinforced_grist_blend').displayName('Reinforced Grist Blend').rarity('rare').textureJson({layer0: 'minecraft:item/redstone'}).color(0, Grist.of('build', 'improved').color());
|
||||
|
||||
// Radiant
|
||||
e.create('grist_crucible');
|
||||
e.create('grist_crucible_filled');
|
||||
e.create('grist_crucible_hot');
|
||||
e.create('tempered_grist_alloy_ingot');
|
||||
e.create('tempered_grist_alloy_nugget');
|
||||
e.create('perfect_grist_alloy_ingot');
|
||||
e.create('perfect_grist_alloy_nugget');
|
||||
e.create('flawed_grist_alloy_ingot');
|
||||
e.create('flawed_grist_alloy_nugget');
|
||||
});
|
Reference in New Issue
Block a user