Make it compile

This commit is contained in:
DBotThePony 2022-08-19 01:13:37 +07:00
parent f615173f2b
commit 63fd92a704
Signed by: DBot
GPG Key ID: DCC23B5715498507
103 changed files with 538 additions and 479 deletions

View File

@ -14,7 +14,7 @@ import net.minecraftforge.common.Tags
import net.minecraftforge.common.loot.LootTableIdCondition import net.minecraftforge.common.loot.LootTableIdCondition
import net.minecraftforge.eventbus.api.SubscribeEvent import net.minecraftforge.eventbus.api.SubscribeEvent
import net.minecraftforge.fml.common.Mod import net.minecraftforge.fml.common.Mod
import net.minecraftforge.forge.event.lifecycle.GatherDataEvent import net.minecraftforge.data.event.GatherDataEvent
import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.block.* import ru.dbotthepony.mc.otm.block.*
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerState import ru.dbotthepony.mc.otm.block.entity.worker.WorkerState
@ -34,6 +34,7 @@ import ru.dbotthepony.mc.otm.datagen.models.BlockMatteryModelProvider
import ru.dbotthepony.mc.otm.datagen.recipes.MatteryRecipeProvider import ru.dbotthepony.mc.otm.datagen.recipes.MatteryRecipeProvider
import ru.dbotthepony.mc.otm.datagen.recipes.has import ru.dbotthepony.mc.otm.datagen.recipes.has
import ru.dbotthepony.mc.otm.registry.* import ru.dbotthepony.mc.otm.registry.*
import ru.dbotthepony.mc.otm.*
@Mod.EventBusSubscriber(modid = DataGen.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) @Mod.EventBusSubscriber(modid = DataGen.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
object DataGen { object DataGen {
@ -150,14 +151,14 @@ object DataGen {
AddEnglishLanguage(languageProvider) AddEnglishLanguage(languageProvider)
event.generator.addProvider(blockModelProvider) event.generator.addProvider(true, blockModelProvider)
event.generator.addProvider(itemModelProvider) event.generator.addProvider(true, itemModelProvider)
event.generator.addProvider(blockStateProvider) event.generator.addProvider(true, blockStateProvider)
event.generator.addProvider(recipeProvider) event.generator.addProvider(true, recipeProvider)
event.generator.addProvider(MatterBankProvider(event)) event.generator.addProvider(true, MatterBankProvider(event))
event.generator.addProvider(BatteryBankProvider(event)) event.generator.addProvider(true, BatteryBankProvider(event))
event.generator.addProvider(lootTableProvider) event.generator.addProvider(true, lootTableProvider)
event.generator.addProvider(lootModifier) event.generator.addProvider(true, lootModifier)
decorativeCubeAll(MBlocks.CRATE_LIST) decorativeCubeAll(MBlocks.CRATE_LIST)
decorativeCubeAll(MBlocks.CARBON_FIBRE_BLOCK) decorativeCubeAll(MBlocks.CARBON_FIBRE_BLOCK)
@ -696,37 +697,37 @@ object DataGen {
} }
lootModifier.lambda { lootModifier.lambda {
it.add("dungeon_pill", LootTableBasicAppender.Companion, LootTableBasicAppender( it.add("dungeon_pill", LootTableBasicAppender(
arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/simple_dungeon")).build()), arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/simple_dungeon")).build()),
ItemStack(MItems.PILL_ANDROID, 1) to 0.1, ItemStack(MItems.PILL_ANDROID, 1) to 0.1,
ItemStack(MItems.PILL_HEAL, 2) to 0.5, ItemStack(MItems.PILL_HEAL, 2) to 0.5,
)) ))
it.add("mineshaft_pill", LootTableBasicAppender.Companion, LootTableBasicAppender( it.add("mineshaft_pill", LootTableBasicAppender(
arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/abandoned_mineshaft")).build()), arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/abandoned_mineshaft")).build()),
ItemStack(MItems.PILL_ANDROID, 1) to 0.1, ItemStack(MItems.PILL_ANDROID, 1) to 0.1,
ItemStack(MItems.PILL_HEAL, 1) to 0.25, ItemStack(MItems.PILL_HEAL, 1) to 0.25,
)) ))
it.add("desert_pyramid_pill", LootTableBasicAppender.Companion, LootTableBasicAppender( it.add("desert_pyramid_pill", LootTableBasicAppender(
arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/abandoned_mineshaft")).build()), arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/abandoned_mineshaft")).build()),
ItemStack(MItems.PILL_ANDROID, 1) to 0.05, ItemStack(MItems.PILL_ANDROID, 1) to 0.05,
ItemStack(MItems.PILL_HEAL, 1) to 0.3, ItemStack(MItems.PILL_HEAL, 1) to 0.3,
)) ))
it.add("jungle_temple_pill", LootTableBasicAppender.Companion, LootTableBasicAppender( it.add("jungle_temple_pill", LootTableBasicAppender(
arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/jungle_temple")).build()), arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/jungle_temple")).build()),
ItemStack(MItems.PILL_ANDROID, 1) to 0.1 ItemStack(MItems.PILL_ANDROID, 1) to 0.1
)) ))
it.add("end_city_pill", LootTableBasicAppender.Companion, LootTableBasicAppender( it.add("end_city_pill", LootTableBasicAppender(
arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/end_city_treasure")).build()), arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/end_city_treasure")).build()),
ItemStack(MItems.PILL_ANDROID, 1) to 0.1, ItemStack(MItems.PILL_ANDROID, 1) to 0.1,
ItemStack(MItems.PILL_HUMANE, 1) to 0.2, ItemStack(MItems.PILL_HUMANE, 1) to 0.2,
ItemStack(MItems.PILL_OBLIVION, 1) to 0.4, ItemStack(MItems.PILL_OBLIVION, 1) to 0.4,
)) ))
it.add("shipwreck_supply_pill", LootTableBasicAppender.Companion, LootTableBasicAppender( it.add("shipwreck_supply_pill", LootTableBasicAppender(
arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/shipwreck_supply")).build()), arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/shipwreck_supply")).build()),
ItemStack(MItems.PILL_HUMANE, 1) to 0.3 ItemStack(MItems.PILL_HUMANE, 1) to 0.3
)) ))

View File

@ -4,7 +4,8 @@ import com.google.common.collect.ImmutableList
import com.google.common.collect.ImmutableMap import com.google.common.collect.ImmutableMap
import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap
import net.minecraft.data.DataGenerator import net.minecraft.data.DataGenerator
import net.minecraft.network.chat.TranslatableComponent import net.minecraft.network.chat.MutableComponent
import net.minecraft.network.chat.contents.TranslatableContents
import net.minecraft.world.effect.MobEffect import net.minecraft.world.effect.MobEffect
import net.minecraft.world.entity.EntityType import net.minecraft.world.entity.EntityType
import net.minecraft.world.item.Item import net.minecraft.world.item.Item
@ -20,8 +21,12 @@ import ru.dbotthepony.mc.otm.registry.ColoredDecorativeBlock
private fun researchString(key: AndroidResearchType<*>): String { private fun researchString(key: AndroidResearchType<*>): String {
val displayName = key.displayName val displayName = key.displayName
if (displayName is TranslatableComponent) { if (displayName is MutableComponent) {
return displayName.key val content = displayName.contents
if (content is TranslatableContents) {
return content.key
}
} }
return key.displayId return key.displayId
@ -30,7 +35,7 @@ private fun researchString(key: AndroidResearchType<*>): String {
class MatteryLanguageProvider(private val gen: DataGenerator) { class MatteryLanguageProvider(private val gen: DataGenerator) {
private inner class Slave(language: String) : LanguageProvider(gen, OverdriveThatMatters.MOD_ID, language) { private inner class Slave(language: String) : LanguageProvider(gen, OverdriveThatMatters.MOD_ID, language) {
init { init {
gen.addProvider(this) gen.addProvider(true, this)
} }
override fun addTranslations() {} override fun addTranslations() {}

View File

@ -3,7 +3,7 @@ package ru.dbotthepony.mc.otm.datagen.blocks
import net.minecraft.resources.ResourceLocation import net.minecraft.resources.ResourceLocation
import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.Block
import net.minecraftforge.client.model.generators.BlockStateProvider import net.minecraftforge.client.model.generators.BlockStateProvider
import net.minecraftforge.forge.event.lifecycle.GatherDataEvent import net.minecraftforge.data.event.GatherDataEvent
import ru.dbotthepony.mc.otm.block.BatteryBankBlock import ru.dbotthepony.mc.otm.block.BatteryBankBlock
import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock
import ru.dbotthepony.mc.otm.datagen.DataGen import ru.dbotthepony.mc.otm.datagen.DataGen

View File

@ -5,13 +5,14 @@ import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.client.model.generators.BlockStateProvider import net.minecraftforge.client.model.generators.BlockStateProvider
import net.minecraftforge.client.model.generators.ConfiguredModel import net.minecraftforge.client.model.generators.ConfiguredModel
import net.minecraftforge.forge.event.lifecycle.GatherDataEvent import net.minecraftforge.data.event.GatherDataEvent
import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerState import ru.dbotthepony.mc.otm.block.entity.worker.WorkerState
import ru.dbotthepony.mc.otm.datagen.DataGen import ru.dbotthepony.mc.otm.datagen.DataGen
import ru.dbotthepony.mc.otm.datagen.getValueNullable import ru.dbotthepony.mc.otm.datagen.getValueNullable
import ru.dbotthepony.mc.otm.datagen.toXRotBlockstate import ru.dbotthepony.mc.otm.datagen.toXRotBlockstate
import ru.dbotthepony.mc.otm.datagen.toYRotBlockstate import ru.dbotthepony.mc.otm.datagen.toYRotBlockstate
import ru.dbotthepony.mc.otm.registryName
typealias AdvancedBlockStateFunction = (BlockState, ConfiguredModel.Builder<*>, String) -> String? typealias AdvancedBlockStateFunction = (BlockState, ConfiguredModel.Builder<*>, String) -> String?
private data class AdvancedBlockStateEntry(val block: Block, val func: AdvancedBlockStateFunction) private data class AdvancedBlockStateEntry(val block: Block, val func: AdvancedBlockStateFunction)

View File

@ -3,9 +3,10 @@ package ru.dbotthepony.mc.otm.datagen.items
import net.minecraft.resources.ResourceLocation import net.minecraft.resources.ResourceLocation
import net.minecraft.world.item.Item import net.minecraft.world.item.Item
import net.minecraftforge.client.model.generators.ItemModelProvider import net.minecraftforge.client.model.generators.ItemModelProvider
import net.minecraftforge.forge.event.lifecycle.GatherDataEvent import net.minecraftforge.data.event.GatherDataEvent
import org.apache.logging.log4j.LogManager import org.apache.logging.log4j.LogManager
import ru.dbotthepony.mc.otm.datagen.DataGen import ru.dbotthepony.mc.otm.datagen.DataGen
import ru.dbotthepony.mc.otm.registryName
private data class SimpleItemModel(val item: String, val path: ResourceLocation) { private data class SimpleItemModel(val item: String, val path: ResourceLocation) {
val traceback = IllegalArgumentException("Failed to register model") val traceback = IllegalArgumentException("Failed to register model")

View File

@ -6,8 +6,9 @@ import net.minecraft.resources.ResourceLocation
import net.minecraft.server.packs.PackType import net.minecraft.server.packs.PackType
import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.Block
import net.minecraftforge.client.model.generators.ModelProvider import net.minecraftforge.client.model.generators.ModelProvider
import net.minecraftforge.forge.event.lifecycle.GatherDataEvent import net.minecraftforge.data.event.GatherDataEvent
import ru.dbotthepony.mc.otm.datagen.DataGen import ru.dbotthepony.mc.otm.datagen.DataGen
import ru.dbotthepony.mc.otm.registryName
private typealias Callback = (MatteryModelProvider) -> Unit private typealias Callback = (MatteryModelProvider) -> Unit
@ -26,7 +27,7 @@ sealed class MatteryModelProvider(event: GatherDataEvent, folder: String) : Mode
return factory.apply(destinationLocation).also { return factory.apply(destinationLocation).also {
generatedModels[destinationLocation] = it generatedModels[destinationLocation] = it
val resource = existingFileHelper.getResource(sourceLocation, PackType.CLIENT_RESOURCES) val resource = existingFileHelper.getResource(sourceLocation, PackType.CLIENT_RESOURCES)
val stream = resource.inputStream val stream = resource.open()
val reader = stream.reader() val reader = stream.reader()
try { try {

View File

@ -8,7 +8,6 @@ import net.minecraft.data.DataGenerator
import net.minecraft.data.recipes.FinishedRecipe import net.minecraft.data.recipes.FinishedRecipe
import net.minecraft.data.recipes.RecipeProvider import net.minecraft.data.recipes.RecipeProvider
import net.minecraft.resources.ResourceLocation import net.minecraft.resources.ResourceLocation
import net.minecraft.tags.Tag
import net.minecraft.tags.TagKey import net.minecraft.tags.TagKey
import net.minecraft.world.item.Item import net.minecraft.world.item.Item
import net.minecraft.world.item.crafting.Ingredient import net.minecraft.world.item.crafting.Ingredient

View File

@ -48,7 +48,6 @@ public final class OverdriveThatMatters {
public static final Logger LOGGER = LogManager.getLogger(); public static final Logger LOGGER = LogManager.getLogger();
public static OverdriveThatMatters INSTANCE; public static OverdriveThatMatters INSTANCE;
public AndroidGui ANDROID_GUI;
private StorageStackType<ItemStackWrapper> ITEM_STORAGE; private StorageStackType<ItemStackWrapper> ITEM_STORAGE;
public StorageStackType<ItemStackWrapper> ITEM_STORAGE() { public StorageStackType<ItemStackWrapper> ITEM_STORAGE() {
@ -120,9 +119,7 @@ public final class OverdriveThatMatters {
} }
private void setupClient(final FMLClientSetupEvent event) { private void setupClient(final FMLClientSetupEvent event) {
ANDROID_GUI = new AndroidGui(); MinecraftForge.EVENT_BUS.register(AndroidGui.INSTANCE);
MinecraftForge.EVENT_BUS.register(ANDROID_GUI);
MinecraftForge.EVENT_BUS.register(AndroidGui.class);
MinecraftForge.EVENT_BUS.register(EventHandlerKt.class); MinecraftForge.EVENT_BUS.register(EventHandlerKt.class);
TritaniumArmorModel.register(); TritaniumArmorModel.register();

View File

@ -11,6 +11,7 @@ import net.minecraft.world.item.Items;
import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.ForgeRegistry; import net.minecraftforge.registries.ForgeRegistry;
import net.minecraftforge.registries.RegistryManager; import net.minecraftforge.registries.RegistryManager;
import ru.dbotthepony.mc.otm.UnOverengineeringKt;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault; import javax.annotation.ParametersAreNonnullByDefault;
@ -73,7 +74,7 @@ public record MatterTask(UUID id, @Nullable UUID pattern, Item item, int in_prog
tag.putLong("pattern_u", pattern.getMostSignificantBits()); tag.putLong("pattern_u", pattern.getMostSignificantBits());
} }
tag.putString("item", Objects.requireNonNull(item.getRegistryName()).toString()); tag.putString("item", Objects.requireNonNull(UnOverengineeringKt.getRegistryName(item)).toString());
tag.putInt("in_progress", in_progress); tag.putInt("in_progress", in_progress);
tag.putInt("finished", finished); tag.putInt("finished", finished);
tag.putInt("required", required); tag.putInt("required", required);

View File

@ -9,6 +9,7 @@ import net.minecraft.world.item.ItemStack;
import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.ForgeRegistry; import net.minecraftforge.registries.ForgeRegistry;
import net.minecraftforge.registries.RegistryManager; import net.minecraftforge.registries.RegistryManager;
import ru.dbotthepony.mc.otm.UnOverengineeringKt;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@ -44,7 +45,7 @@ public record PatternState(@Nonnull UUID id, @Nonnull Item item, double research
tag.putLong("id_m", id.getMostSignificantBits()); tag.putLong("id_m", id.getMostSignificantBits());
tag.putLong("id_l", id.getLeastSignificantBits()); tag.putLong("id_l", id.getLeastSignificantBits());
tag.putString("item", Objects.requireNonNull(item.getRegistryName()).toString()); tag.putString("item", Objects.requireNonNull(UnOverengineeringKt.getRegistryName(item)).toString());
tag.putDouble("research_percent", research); tag.putDouble("research_percent", research);
return tag; return tag;

View File

@ -1,192 +0,0 @@
package ru.dbotthepony.mc.otm.client;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.screens.DeathScreen;
import net.minecraft.client.gui.screens.InBedChatScreen;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraftforge.client.event.ScreenEvent;
import net.minecraftforge.client.event.ScreenOpenEvent;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.client.gui.ForgeIngameGui;
import net.minecraftforge.eventbus.api.EventPriority;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import ru.dbotthepony.mc.otm.OverdriveThatMatters;
import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer;
import ru.dbotthepony.mc.otm.capability.android.IAndroidCapability;
import ru.dbotthepony.mc.otm.capability.MatteryCapability;
import java.util.Optional;
import java.util.Random;
public class AndroidGui {
private static final Minecraft mc = Minecraft.getInstance();
private final ForgeIngameGui gui = mc.gui instanceof ForgeIngameGui ? (ForgeIngameGui) mc.gui : null;
public static final ResourceLocation PLAYER_GUI_LOCATION = new ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/gui/player_gui.png");
private AndroidCapabilityPlayer last_state;
private static int known_button_x = -1;
private static int known_button_y = -1;
private static Button known_button;
private static InBedChatScreen known_button_screen;
private static final Random button_shaker = new Random();
@SubscribeEvent(priority = EventPriority.NORMAL)
@SuppressWarnings("unused")
public void onTick(ScreenEvent.DrawScreenEvent.Pre event) {
if (known_button_screen != null && known_button == null) {
for (var widget : known_button_screen.renderables) {
if (widget instanceof Button btn) {
known_button_x = btn.x;
known_button_y = btn.y;
known_button = btn;
break;
}
}
if (known_button == null) {
known_button_screen = null;
}
}
if (known_button_screen != null && known_button_screen != mc.screen) {
known_button_x = -1;
known_button_y = -1;
known_button = null;
known_button_screen = null;
}
if (known_button_screen == null || mc.player == null) {
return;
}
mc.player.getCapability(MatteryCapability.ANDROID).ifPresent(cap -> {
if (!((AndroidCapabilityPlayer) cap).getWillBecomeAndroid()) {
known_button.x = known_button_x;
known_button.y = known_button_y;
known_button_x = -1;
known_button_y = -1;
known_button = null;
known_button_screen = null;
return;
}
int dispersion = (int) ((10.0 * Math.max(0, ((AndroidCapabilityPlayer) cap).getSleepTicks() - 20)) / (AndroidCapabilityPlayer.SLEEP_TICKS_LIMIT - 20));
known_button.x = known_button_x - dispersion / 2 + (int) (button_shaker.nextDouble() * dispersion);
known_button.y = known_button_y - dispersion / 2 + (int) (button_shaker.nextDouble() * dispersion);
});
}
@SubscribeEvent(priority = EventPriority.LOWEST)
@SuppressWarnings("unused")
public static void onOpenGUI(ScreenOpenEvent event) {
known_button_x = -1;
known_button_y = -1;
known_button = null;
known_button_screen = null;
if (mc.player == null)
return;
if (event.getScreen() instanceof DeathScreen screen) {
mc.player.getCapability(MatteryCapability.ANDROID).ifPresent(cap -> {
if (cap.isAndroid())
screen.title = new TranslatableComponent("otm.death_reason");
});
}
if (event.getScreen() instanceof InBedChatScreen screen) {
known_button_screen = screen;
mc.player.getCapability(MatteryCapability.ANDROID).ifPresent(cap -> {
if (((AndroidCapabilityPlayer) cap).getWillBecomeAndroid()) {
known_button_screen = screen;
}
});
}
}
private static final Logger LOGGER = LogManager.getLogger();
@SubscribeEvent(priority = EventPriority.HIGH)
@SuppressWarnings("unused")
public void onLayerRenderEvent(RenderGameOverlayEvent.PreLayer event) {
if (event.getOverlay() != ForgeIngameGui.FOOD_LEVEL_ELEMENT && event.getOverlay() != ForgeIngameGui.AIR_LEVEL_ELEMENT)
return;
LocalPlayer ply = mc.player;
if (ply == null)
return;
if (
ply.getVehicle() instanceof LivingEntity ||
mc.options.hideGui ||
!mc.gameMode.canHurtPlayer() ||
!(mc.getCameraEntity() instanceof Player)
)
return;
Optional<IAndroidCapability> lazy = ply.getCapability(MatteryCapability.ANDROID).resolve();
AndroidCapabilityPlayer android = null;
if (lazy.isPresent()) {
android = (AndroidCapabilityPlayer) lazy.get();
} else if (!ply.isAlive()) {
android = last_state;
}
if (android != null && android.isAndroid() && mc.gui instanceof ForgeIngameGui gui) {
event.setCanceled(true);
last_state = android;
if (event.getOverlay() == ForgeIngameGui.AIR_LEVEL_ELEMENT) {
return;
}
int y_offset = ply.hasEffect(MobEffects.HUNGER) ? 18 : 0;
float level;
if (android.getMaxBatteryLevel().isZero()) {
level = 0f;
} else {
level = android.getBatteryLevel().div(android.getMaxBatteryLevel()).toFloat();
if (level >= 0.98f)
level = 1f;
}
gui.setupOverlayRenderState(true, false);
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
RenderSystem.setShaderTexture(0, PLAYER_GUI_LOCATION);
int width = event.getWindow().getGuiScaledWidth();
int height = event.getWindow().getGuiScaledHeight();
int left = width / 2 + 10;
int top = height - gui.right_height;
gui.right_height += 10;
// Stack, x, y, blitOffset?, (float) image_x, (float) image_y, rect_x, rect_y, total_image_width, total_image_height
// Stack, x, y, image_x, image_y, rect_x, rect_y
gui.blit(event.getMatrixStack(), left, top, 0, y_offset, 80, 9);
int shift_left = (int) Math.ceil(level * 79f - 0.5f);
gui.blit(event.getMatrixStack(), left + 79 - shift_left, top, 79 - shift_left, y_offset + 9, shift_left, 9);
}
}
}

View File

@ -80,8 +80,8 @@ public class RenderHelper {
builder.vertex(matrix, x + width, y + height, depth_z).uv(u1, v1).endVertex(); builder.vertex(matrix, x + width, y + height, depth_z).uv(u1, v1).endVertex();
builder.vertex(matrix, x + width, y, depth_z).uv(u1, v0).endVertex(); builder.vertex(matrix, x + width, y, depth_z).uv(u1, v0).endVertex();
builder.vertex(matrix, x, y, depth_z).uv(u0, v0).endVertex(); builder.vertex(matrix, x, y, depth_z).uv(u0, v0).endVertex();
builder.end();
BufferUploader.end(builder); BufferUploader.draw(builder.end());
} }
public static void drawTexturedRectUV( public static void drawTexturedRectUV(
@ -143,8 +143,7 @@ public class RenderHelper {
} }
} }
builder.end(); BufferUploader.draw(builder.end());
BufferUploader.end(builder);
} }
public static void colorSphere(PoseStack stack, float radius) { public static void colorSphere(PoseStack stack, float radius) {

View File

@ -3,8 +3,6 @@ package ru.dbotthepony.mc.otm.client.screen;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.components.EditBox;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import ru.dbotthepony.mc.otm.capability.matter.MatterTask; import ru.dbotthepony.mc.otm.capability.matter.MatterTask;
@ -19,6 +17,9 @@ import javax.annotation.Nullable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import static ru.dbotthepony.mc.otm.UnOverengineeringKt.TextComponent;
import static ru.dbotthepony.mc.otm.UnOverengineeringKt.TranslatableComponent;
public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> { public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
private static final int MODAL_WIDTH = 213; private static final int MODAL_WIDTH = 213;
private static final int MODAL_HEIGHT = 110; private static final int MODAL_HEIGHT = 110;
@ -190,22 +191,22 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
} }
private List<Component> getTaskTooltip(List<Component> input, MatterTask task) { private List<Component> getTaskTooltip(List<Component> input, MatterTask task) {
input.add(new TranslatableComponent("otm.gui.matter_task.total", task.total()).withStyle(ChatFormatting.GRAY)); input.add(TranslatableComponent("otm.gui.matter_task.total", task.total()).withStyle(ChatFormatting.GRAY));
input.add(new TranslatableComponent("otm.gui.matter_task.required", task.required()).withStyle(ChatFormatting.GRAY)); input.add(TranslatableComponent("otm.gui.matter_task.required", task.required()).withStyle(ChatFormatting.GRAY));
input.add(new TranslatableComponent("otm.gui.matter_task.in_progress", task.in_progress()).withStyle(ChatFormatting.GRAY)); input.add(TranslatableComponent("otm.gui.matter_task.in_progress", task.in_progress()).withStyle(ChatFormatting.GRAY));
input.add(new TranslatableComponent("otm.gui.matter_task.finished", task.finished()).withStyle(ChatFormatting.GRAY)); input.add(TranslatableComponent("otm.gui.matter_task.finished", task.finished()).withStyle(ChatFormatting.GRAY));
return input; return input;
} }
private List<Component> getPatternTooltip(List<Component> input, PatternState pattern) { private List<Component> getPatternTooltip(List<Component> input, PatternState pattern) {
input.add(new TranslatableComponent("otm.item.pattern.research", String.format("%.2f", pattern.research() * 100d)).withStyle(ChatFormatting.AQUA)); input.add(TranslatableComponent("otm.item.pattern.research", String.format("%.2f", pattern.research() * 100d)).withStyle(ChatFormatting.AQUA));
return input; return input;
} }
private void openTask(MatterTask task) { private void openTask(MatterTask task) {
var task_frame = new FramePanel(this, null, 0, 0, 170, 40, new TranslatableComponent("otm.container.matter_panel.task")) { var task_frame = new FramePanel(this, null, 0, 0, 170, 40, TranslatableComponent("otm.container.matter_panel.task")) {
@Override @Override
public void tick() { public void tick() {
super.tick(); super.tick();
@ -246,12 +247,12 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
slot.setDock(Dock.LEFT); slot.setDock(Dock.LEFT);
var button = new ButtonPanel(this, task_frame, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.close")); var button = new ButtonPanel(this, task_frame, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.close"));
button.setDock(Dock.RIGHT); button.setDock(Dock.RIGHT);
button.setDockMargin(2, 0, 0, 0); button.setDockMargin(2, 0, 0, 0);
button.bind(task_frame::remove); button.bind(task_frame::remove);
button = new ButtonPanel(this, task_frame, 0, 0, 80, 20, new TranslatableComponent("otm.container.matter_panel.cancel_task")); button = new ButtonPanel(this, task_frame, 0, 0, 80, 20, TranslatableComponent("otm.container.matter_panel.cancel_task"));
button.setDock(Dock.RIGHT); button.setDock(Dock.RIGHT);
button.setDockMargin(2, 0, 0, 0); button.setDockMargin(2, 0, 0, 0);
button.bind(() -> { button.bind(() -> {
@ -264,7 +265,7 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
} }
private void openPattern(PatternState state) { private void openPattern(PatternState state) {
var pattern_frame = new FramePanel(this, null, 0, 0, MODAL_WIDTH, MODAL_HEIGHT, new TranslatableComponent("otm.container.matter_panel.label")){ var pattern_frame = new FramePanel(this, null, 0, 0, MODAL_WIDTH, MODAL_HEIGHT, TranslatableComponent("otm.container.matter_panel.label")){
@Override @Override
public void tick() { public void tick() {
super.tick(); super.tick();
@ -309,7 +310,7 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
} }
}; };
var input_amount = new EditBoxPanel(this, row_2, 0, 0, 10, 20, new TextComponent("Input amount")) { var input_amount = new EditBoxPanel(this, row_2, 0, 0, 10, 20, TextComponent("Input amount")) {
@Override @Override
protected void configureNew(@Nonnull EditBox widget, boolean recreation) { protected void configureNew(@Nonnull EditBox widget, boolean recreation) {
super.configureNew(widget, recreation); super.configureNew(widget, recreation);
@ -337,17 +338,17 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
} }
}; };
var button = new ButtonPanel(this, row_1, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.increase_by", 8)); var button = new ButtonPanel(this, row_1, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.increase_by", 8));
button.bind(() -> input_amount.increase(8)); button.bind(() -> input_amount.increase(8));
button.setDock(Dock.RIGHT); button.setDock(Dock.RIGHT);
button.setDockMargin(2, 0, 0, 0); button.setDockMargin(2, 0, 0, 0);
button = new ButtonPanel(this, row_1, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.increase_by", 64)); button = new ButtonPanel(this, row_1, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.increase_by", 64));
button.setDock(Dock.RIGHT); button.setDock(Dock.RIGHT);
button.bind(() -> input_amount.increase(64)); button.bind(() -> input_amount.increase(64));
button.setDockMargin(2, 0, 0, 0); button.setDockMargin(2, 0, 0, 0);
button = new ButtonPanel(this, row_1, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.increase_by", 256)); button = new ButtonPanel(this, row_1, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.increase_by", 256));
button.setDock(Dock.RIGHT); button.setDock(Dock.RIGHT);
button.bind(() -> input_amount.increase(256)); button.bind(() -> input_amount.increase(256));
button.setDockMargin(2, 0, 0, 0); button.setDockMargin(2, 0, 0, 0);
@ -356,27 +357,27 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
slot.setDockMargin(0, 0, 4, 0); slot.setDockMargin(0, 0, 4, 0);
input_amount.setDock(Dock.FILL); input_amount.setDock(Dock.FILL);
button = new ButtonPanel(this, row_3, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.decrease_by", 8)); button = new ButtonPanel(this, row_3, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.decrease_by", 8));
button.bind(() -> input_amount.increase(-8)); button.bind(() -> input_amount.increase(-8));
button.setDock(Dock.RIGHT); button.setDock(Dock.RIGHT);
button.setDockMargin(2, 0, 0, 0); button.setDockMargin(2, 0, 0, 0);
button = new ButtonPanel(this, row_3, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.decrease_by", 64)); button = new ButtonPanel(this, row_3, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.decrease_by", 64));
button.setDock(Dock.RIGHT); button.setDock(Dock.RIGHT);
button.bind(() -> input_amount.increase(-64)); button.bind(() -> input_amount.increase(-64));
button.setDockMargin(2, 0, 0, 0); button.setDockMargin(2, 0, 0, 0);
button = new ButtonPanel(this, row_3, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.decrease_by", 256)); button = new ButtonPanel(this, row_3, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.decrease_by", 256));
button.setDock(Dock.RIGHT); button.setDock(Dock.RIGHT);
button.bind(() -> input_amount.increase(-256)); button.bind(() -> input_amount.increase(-256));
button.setDockMargin(2, 0, 0, 0); button.setDockMargin(2, 0, 0, 0);
button = new ButtonPanel(this, row_4, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.cancel")); button = new ButtonPanel(this, row_4, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.cancel"));
button.setDock(Dock.RIGHT); button.setDock(Dock.RIGHT);
button.bind(pattern_frame::remove); button.bind(pattern_frame::remove);
button.setDockMargin(2, 0, 0, 0); button.setDockMargin(2, 0, 0, 0);
button = new ButtonPanel(this, row_4, 0, 0, 82, 20, new TranslatableComponent("otm.container.matter_panel.send")); button = new ButtonPanel(this, row_4, 0, 0, 82, 20, TranslatableComponent("otm.container.matter_panel.send"));
button.setDock(Dock.RIGHT); button.setDock(Dock.RIGHT);
button.bind(() -> { button.bind(() -> {
int value = 1; int value = 1;

View File

@ -20,6 +20,7 @@ import net.minecraft.world.inventory.ClickType;
import net.minecraft.world.inventory.Slot; import net.minecraft.world.inventory.Slot;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraftforge.client.event.ContainerScreenEvent; import net.minecraftforge.client.event.ContainerScreenEvent;
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
import ru.dbotthepony.mc.otm.menu.MatteryMenu; import ru.dbotthepony.mc.otm.menu.MatteryMenu;
import ru.dbotthepony.mc.otm.menu.MatterySlot; import ru.dbotthepony.mc.otm.menu.MatterySlot;
import ru.dbotthepony.mc.otm.client.screen.panels.*; import ru.dbotthepony.mc.otm.client.screen.panels.*;
@ -37,12 +38,11 @@ import static org.lwjgl.opengl.GL13.GL_TEXTURE0;
/** /**
* This class encapsulate most of logic for handling EditablePanel and it's children * This class encapsulate most of logic for handling EditablePanel and it's children
* It inherits AbstractContainerScreen, but most of methods of AbstractContainerScreen are re implemented or straight removed * It inherits AbstractContainerScreen, but most of methods of AbstractContainerScreen are re implemented or straight removed
* since they are present inside EditablePanel subclasses, therefore it inherits * since they are present inside EditablePanel subclasses, therefore
* it inherits AbstractContainerScreen just for signature compatibility
* *
* It inherits AbstractContainerScreen just for signature compatibility * Widgets such as slots are not drawn/interacted with using MatteryScreen,
* * but are handled by appropriate panels
* Such as slots, they are not drawn inside MatteryScreen, but instead
* drawn by SlotPanel(s)
* *
* @param <T> type of menu, which extends MatteryMenu * @param <T> type of menu, which extends MatteryMenu
*/ */
@ -338,7 +338,7 @@ public abstract class MatteryScreen<T extends MatteryMenu> extends AbstractConta
this.setBlitOffset(200); this.setBlitOffset(200);
this.itemRenderer.blitOffset = 200.0F; this.itemRenderer.blitOffset = 200.0F;
net.minecraft.client.gui.Font font = net.minecraftforge.client.RenderProperties.get(p_97783_).getFont(p_97783_); net.minecraft.client.gui.Font font = p_97783_.getItem().getRenderPropertiesInternal() instanceof IClientItemExtensions ext ? ext.getFont(p_97783_, IClientItemExtensions.FontContext.TOOLTIP) : null;
if (font == null) font = this.font; if (font == null) font = this.font;
this.itemRenderer.renderAndDecorateItem(p_97783_, p_97784_, p_97785_); this.itemRenderer.renderAndDecorateItem(p_97783_, p_97784_, p_97785_);
@ -404,7 +404,7 @@ public abstract class MatteryScreen<T extends MatteryMenu> extends AbstractConta
RenderSystem.depthFunc(GL_LESS); RenderSystem.depthFunc(GL_LESS);
net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new ContainerScreenEvent.DrawBackground(this, pose, mouse_x, mouse_y)); net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new ContainerScreenEvent.Render.Background(this, pose, mouse_x, mouse_y));
RenderSystem.disableDepthTest(); RenderSystem.disableDepthTest();
@ -416,7 +416,7 @@ public abstract class MatteryScreen<T extends MatteryMenu> extends AbstractConta
RenderSystem.disableDepthTest(); RenderSystem.disableDepthTest();
net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new ContainerScreenEvent.DrawForeground(this, pose, mouse_x, mouse_y)); net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new ContainerScreenEvent.Render.Foreground(this, pose, mouse_x, mouse_y));
var itemstack = this.draggingItem.isEmpty() ? this.menu.getCarried() : this.draggingItem; var itemstack = this.draggingItem.isEmpty() ? this.menu.getCarried() : this.draggingItem;
@ -559,7 +559,7 @@ public abstract class MatteryScreen<T extends MatteryMenu> extends AbstractConta
public void onSlotMouseDragged(@Nonnull MatterySlot slot, int click_type) { public void onSlotMouseDragged(@Nonnull MatterySlot slot, int click_type) {
ItemStack itemstack = this.menu.getCarried(); ItemStack itemstack = this.menu.getCarried();
if (this.clickedSlot != null && this.minecraft.options.touchscreen) { if (this.clickedSlot != null && this.minecraft.options.touchscreen().get()) {
if (click_type == 0 || click_type == 1) { if (click_type == 0 || click_type == 1) {
if (this.draggingItem.isEmpty()) { if (this.draggingItem.isEmpty()) {
if (slot != this.clickedSlot && !this.clickedSlot.getItem().isEmpty()) { if (slot != this.clickedSlot && !this.clickedSlot.getItem().isEmpty()) {
@ -621,7 +621,7 @@ public abstract class MatteryScreen<T extends MatteryMenu> extends AbstractConta
return; return;
} }
if (this.clickedSlot != null && this.minecraft.options.touchscreen) { if (this.clickedSlot != null && this.minecraft.options.touchscreen().get()) {
if (p_97814_ == 0 || p_97814_ == 1) { if (p_97814_ == 0 || p_97814_ == 1) {
if (this.draggingItem.isEmpty() && slot != this.clickedSlot) { if (this.draggingItem.isEmpty() && slot != this.clickedSlot) {
this.draggingItem = this.clickedSlot.getItem(); this.draggingItem = this.clickedSlot.getItem();

View File

@ -4,9 +4,9 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.Recipe;
import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.crafting.RecipeSerializer;
import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.item.crafting.RecipeType;
import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.registries.ForgeRegistries;
import ru.dbotthepony.mc.otm.OverdriveThatMatters; import ru.dbotthepony.mc.otm.OverdriveThatMatters;
import ru.dbotthepony.mc.otm.recipe.PlatePressRecipe; import ru.dbotthepony.mc.otm.recipe.PlatePressRecipe;
import ru.dbotthepony.mc.otm.recipe.PlatePressRecipeFactory; import ru.dbotthepony.mc.otm.recipe.PlatePressRecipeFactory;
@ -19,10 +19,6 @@ public class MRecipes {
this.name = name; this.name = name;
} }
private void register() {
net.minecraft.core.Registry.register(net.minecraft.core.Registry.RECIPE_TYPE, name, this);
}
@Override @Override
public String toString() { public String toString() {
return name.toString(); return name.toString();
@ -31,15 +27,16 @@ public class MRecipes {
public static final MatteryRecipeType<PlatePressRecipe> PLATE_PRESS = new MatteryRecipeType<>(OverdriveThatMatters.loc(MNames.PLATE_PRESS)); public static final MatteryRecipeType<PlatePressRecipe> PLATE_PRESS = new MatteryRecipeType<>(OverdriveThatMatters.loc(MNames.PLATE_PRESS));
@SubscribeEvent private static final DeferredRegister<RecipeSerializer<?>> registry = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, OverdriveThatMatters.MOD_ID);
@SuppressWarnings("unused") private static final DeferredRegister<RecipeType<?>> typesRegistry = DeferredRegister.create(ForgeRegistries.RECIPE_TYPES, OverdriveThatMatters.MOD_ID);
public static void register(final FMLCommonSetupEvent event) {
PLATE_PRESS.register(); static {
registry.register(MNames.PLATE_PRESS, () -> PlatePressRecipeFactory.INSTANCE);
typesRegistry.register(MNames.PLATE_PRESS, () -> PLATE_PRESS);
} }
@SubscribeEvent public static void register() {
@SuppressWarnings("unused") registry.register(FMLJavaModLoadingContext.get().getModEventBus());
public static void register(final RegistryEvent.Register<RecipeSerializer<?>> event) { typesRegistry.register(FMLJavaModLoadingContext.get().getModEventBus());
event.getRegistry().register(PlatePressRecipeFactory.INSTANCE);
} }
} }

View File

@ -4,28 +4,28 @@
package ru.dbotthepony.mc.otm package ru.dbotthepony.mc.otm
import com.google.common.collect.ImmutableList import com.google.common.collect.ImmutableList
import com.google.gson.JsonArray
import com.google.gson.JsonElement import com.google.gson.JsonElement
import com.google.gson.JsonObject import com.google.gson.JsonObject
import net.minecraft.client.Minecraft
import net.minecraft.core.BlockPos import net.minecraft.core.BlockPos
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.core.Vec3i import net.minecraft.core.Vec3i
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.nbt.ListTag
import net.minecraft.nbt.LongArrayTag import net.minecraft.nbt.LongArrayTag
import net.minecraft.nbt.Tag import net.minecraft.nbt.Tag
import net.minecraft.network.chat.MutableComponent
import net.minecraft.network.chat.contents.LiteralContents
import net.minecraft.network.chat.contents.TranslatableContents
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.Container import net.minecraft.world.Container
import net.minecraft.world.entity.Entity import net.minecraft.world.entity.Entity
import net.minecraft.world.entity.LivingEntity import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
import net.minecraft.world.phys.Vec3 import net.minecraft.world.phys.Vec3
import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.energy.CapabilityEnergy
import net.minecraftforge.items.IItemHandler import net.minecraftforge.items.IItemHandler
import ru.dbotthepony.mc.otm.capability.MatteryCapability import net.minecraftforge.registries.ForgeRegistries
import net.minecraftforge.registries.IForgeRegistry
import java.util.* import java.util.*
import java.util.function.Consumer
import kotlin.properties.ReadWriteProperty import kotlin.properties.ReadWriteProperty
import kotlin.reflect.KProperty import kotlin.reflect.KProperty

View File

@ -6,7 +6,7 @@ package ru.dbotthepony.mc.otm
import net.minecraft.world.level.Level import net.minecraft.world.level.Level
import net.minecraftforge.event.TickEvent import net.minecraftforge.event.TickEvent
import net.minecraftforge.event.TickEvent.ServerTickEvent import net.minecraftforge.event.TickEvent.ServerTickEvent
import net.minecraftforge.event.TickEvent.WorldTickEvent import net.minecraftforge.event.TickEvent.LevelTickEvent
import net.minecraftforge.event.server.ServerAboutToStartEvent import net.minecraftforge.event.server.ServerAboutToStartEvent
import net.minecraftforge.event.server.ServerStoppedEvent import net.minecraftforge.event.server.ServerStoppedEvent
import net.minecraftforge.event.server.ServerStoppingEvent import net.minecraftforge.event.server.ServerStoppingEvent
@ -118,9 +118,9 @@ fun addPostServerTickerOnce(ticker: ITickable) {
} }
@SubscribeEvent(priority = EventPriority.LOWEST) @SubscribeEvent(priority = EventPriority.LOWEST)
fun onWorldTick(event: WorldTickEvent) { fun onWorldTick(event: LevelTickEvent) {
if (event.phase === TickEvent.Phase.START) { if (event.phase === TickEvent.Phase.START) {
val it = preWorldTick[event.world] val it = preWorldTick[event.level]
if (it != null) { if (it != null) {
for (i in it.size - 1 downTo 0) { for (i in it.size - 1 downTo 0) {
@ -134,7 +134,7 @@ fun onWorldTick(event: WorldTickEvent) {
} }
} }
val it2 = preWorldTickOnce.remove(event.world) val it2 = preWorldTickOnce.remove(event.level)
if (it2 != null) { if (it2 != null) {
for (i in it2.size - 1 downTo 0) { for (i in it2.size - 1 downTo 0) {
@ -143,7 +143,7 @@ fun onWorldTick(event: WorldTickEvent) {
} }
} }
} else { } else {
val it = postWorldTick[event.world] val it = postWorldTick[event.level]
if (it != null) { if (it != null) {
for (i in it.size - 1 downTo 0) { for (i in it.size - 1 downTo 0) {
@ -157,7 +157,7 @@ fun onWorldTick(event: WorldTickEvent) {
} }
} }
val it2 = postWorldTickOnce.remove(event.world) val it2 = postWorldTickOnce.remove(event.level)
if (it2 != null) { if (it2 != null) {
for (i in it2.size - 1 downTo 0) { for (i in it2.size - 1 downTo 0) {

View File

@ -0,0 +1,30 @@
package ru.dbotthepony.mc.otm
import net.minecraft.network.FriendlyByteBuf
import net.minecraft.network.chat.MutableComponent
import net.minecraft.network.chat.contents.LiteralContents
import net.minecraft.network.chat.contents.TranslatableContents
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.item.Item
import net.minecraft.world.level.block.Block
import net.minecraftforge.registries.ForgeRegistries
import net.minecraftforge.registries.IForgeRegistry
// 1.19 being 1.19
fun TranslatableComponent(key: String, vararg values: Any) = MutableComponent.create(TranslatableContents(key, *values))
fun TextComponent(value: String) = MutableComponent.create(LiteralContents(value))
fun <T> IForgeRegistry<T>.getKeyNullable(value: T): ResourceLocation? {
val key = getResourceKey(value)
if (key.isPresent) {
return key.get().location()
}
return null
}
val Item.registryName get() = ForgeRegistries.ITEMS.getKeyNullable(this)
val Block.registryName get() = ForgeRegistries.BLOCKS.getKeyNullable(this)
fun FriendlyByteBuf.writeRegistryId(value: Item) = writeRegistryId(ForgeRegistries.ITEMS, value)

View File

@ -1,11 +1,14 @@
package ru.dbotthepony.mc.otm.android package ru.dbotthepony.mc.otm.android
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent import net.minecraft.network.chat.ComponentContents
import net.minecraftforge.registries.ForgeRegistryEntry import net.minecraft.network.chat.MutableComponent
import net.minecraft.network.chat.contents.TranslatableContents
import ru.dbotthepony.mc.otm.capability.android.AndroidCapability import ru.dbotthepony.mc.otm.capability.android.AndroidCapability
import ru.dbotthepony.mc.otm.getKeyNullable
import ru.dbotthepony.mc.otm.registry.MRegistry
open class AndroidFeatureType<T : AndroidFeature> : ForgeRegistryEntry<AndroidFeatureType<*>> { open class AndroidFeatureType<T : AndroidFeature> {
private val factory: (AndroidFeatureType<T>, AndroidCapability) -> T private val factory: (AndroidFeatureType<T>, AndroidCapability) -> T
constructor(factory: (AndroidCapability) -> T) : super() { constructor(factory: (AndroidCapability) -> T) : super() {
@ -22,8 +25,17 @@ open class AndroidFeatureType<T : AndroidFeature> : ForgeRegistryEntry<AndroidFe
open fun isApplicable(android: AndroidCapability) = true open fun isApplicable(android: AndroidCapability) = true
val registryName by lazy {
check(AndroidResearchType.IS_REGISTRY_INITIALIZED) { "Trying to access registryName too early!" }
MRegistry.ANDROID_FEATURES.getKeyNullable(this)
}
open val displayContents: ComponentContents by lazy {
TranslatableContents(displayId)
}
open val displayName: Component by lazy { open val displayName: Component by lazy {
TranslatableComponent(displayId) MutableComponent.create(displayContents)
} }
open val displayId: String by lazy { open val displayId: String by lazy {

View File

@ -1,11 +1,8 @@
package ru.dbotthepony.mc.otm.android package ru.dbotthepony.mc.otm.android
import com.google.common.collect.ImmutableList
import net.minecraft.ChatFormatting import net.minecraft.ChatFormatting
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.network.FriendlyByteBuf
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
import net.minecraftforge.common.util.INBTSerializable import net.minecraftforge.common.util.INBTSerializable
import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer

View File

@ -4,9 +4,9 @@ import com.google.common.collect.ImmutableList
import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap
import net.minecraft.ChatFormatting import net.minecraft.ChatFormatting
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.resources.ResourceLocation import net.minecraft.resources.ResourceLocation
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.render.SkinElement import ru.dbotthepony.mc.otm.client.render.SkinElement
import ru.dbotthepony.mc.otm.container.iterator import ru.dbotthepony.mc.otm.container.iterator
import ru.dbotthepony.mc.otm.registry.MRegistry import ru.dbotthepony.mc.otm.registry.MRegistry

View File

@ -2,9 +2,12 @@ package ru.dbotthepony.mc.otm.android
import com.google.common.collect.ImmutableList import com.google.common.collect.ImmutableList
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent import net.minecraft.network.chat.ComponentContents
import net.minecraftforge.registries.ForgeRegistryEntry import net.minecraft.network.chat.MutableComponent
import net.minecraft.network.chat.contents.TranslatableContents
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer
import ru.dbotthepony.mc.otm.getKeyNullable
import ru.dbotthepony.mc.otm.registry.MRegistry import ru.dbotthepony.mc.otm.registry.MRegistry
fun interface AndroidResearchFactory<R : AndroidResearch> { fun interface AndroidResearchFactory<R : AndroidResearch> {
@ -13,7 +16,7 @@ fun interface AndroidResearchFactory<R : AndroidResearch> {
open class AndroidResearchType<R : AndroidResearch>( open class AndroidResearchType<R : AndroidResearch>(
protected val factory: AndroidResearchFactory<R> protected val factory: AndroidResearchFactory<R>
) : ForgeRegistryEntry<AndroidResearchType<*>>() { ) {
open val prerequisites: List<AndroidResearchType<*>> get() = emptyList() open val prerequisites: List<AndroidResearchType<*>> get() = emptyList()
open val blockedBy: List<AndroidResearchType<*>> get() = emptyList() open val blockedBy: List<AndroidResearchType<*>> get() = emptyList()
@ -47,6 +50,11 @@ open class AndroidResearchType<R : AndroidResearch>(
fun factory(capability: AndroidCapabilityPlayer) = factory.factory(this, capability) fun factory(capability: AndroidCapabilityPlayer) = factory.factory(this, capability)
val registryName by lazy {
check(IS_REGISTRY_INITIALIZED) { "Trying to access registryName too early!" }
MRegistry.ANDROID_RESEARCH.getKeyNullable(this)
}
val displayId by lazy { val displayId by lazy {
val registryName = registryName ?: throw NullPointerException("No registry name present") val registryName = registryName ?: throw NullPointerException("No registry name present")
return@lazy "android_research.${registryName.namespace}.${registryName.path}".intern() return@lazy "android_research.${registryName.namespace}.${registryName.path}".intern()
@ -56,8 +64,12 @@ open class AndroidResearchType<R : AndroidResearch>(
return@lazy "$displayId.description".intern() return@lazy "$displayId.description".intern()
} }
open val displayContents: ComponentContents by lazy {
TranslatableContents(displayId)
}
open val displayName: Component by lazy { open val displayName: Component by lazy {
TranslatableComponent(displayId) MutableComponent.create(displayContents)
} }
open val displayDescription: List<Component> by lazy { open val displayDescription: List<Component> by lazy {

View File

@ -2,7 +2,6 @@ package ru.dbotthepony.mc.otm.block.entity
import net.minecraft.core.BlockPos import net.minecraft.core.BlockPos
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.MenuProvider import net.minecraft.world.MenuProvider
import net.minecraft.world.entity.LivingEntity import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
@ -10,6 +9,7 @@ import net.minecraft.world.entity.player.Player
import net.minecraft.world.inventory.AbstractContainerMenu import net.minecraft.world.inventory.AbstractContainerMenu
import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.level.block.state.BlockState
import net.minecraft.world.phys.AABB import net.minecraft.world.phys.AABB
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.capability.WorkerEnergyStorage import ru.dbotthepony.mc.otm.capability.WorkerEnergyStorage
import ru.dbotthepony.mc.otm.core.ImpreciseFraction import ru.dbotthepony.mc.otm.core.ImpreciseFraction

View File

@ -5,7 +5,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player

View File

@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player
import net.minecraft.world.inventory.AbstractContainerMenu import net.minecraft.world.inventory.AbstractContainerMenu
@ -13,6 +12,7 @@ import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.items.CapabilityItemHandler import net.minecraftforge.items.CapabilityItemHandler
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.CargoCrateBlock import ru.dbotthepony.mc.otm.block.CargoCrateBlock
import ru.dbotthepony.mc.otm.container.MatteryContainer import ru.dbotthepony.mc.otm.container.MatteryContainer
import ru.dbotthepony.mc.otm.ifHas import ru.dbotthepony.mc.otm.ifHas

View File

@ -5,7 +5,6 @@ import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.nbt.IntTag import net.minecraft.nbt.IntTag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player
import net.minecraft.world.inventory.AbstractContainerMenu import net.minecraft.world.inventory.AbstractContainerMenu
@ -196,7 +195,7 @@ class ChemicalGeneratorBlockEntity(pos: BlockPos, state: BlockState) : MatteryBl
if (workingTicks == 0 && !isBlockedByRedstone && check) { if (workingTicks == 0 && !isBlockedByRedstone && check) {
if (!container[SLOT_INPUT].isEmpty) { if (!container[SLOT_INPUT].isEmpty) {
val ticks = ForgeHooks.getBurnTime(container[SLOT_INPUT], null) val ticks = ForgeHooks.getBurnTime(container[SLOT_INPUT], null)
val residue = container[SLOT_INPUT].item.getContainerItem(container[SLOT_INPUT].copy().also { it.count = 1 }) val residue = container[SLOT_INPUT].item.getCraftingRemainingItem(container[SLOT_INPUT].copy().also { it.count = 1 })
val canPutResidue = residue.isEmpty || container[SLOT_RESIDUE].isEmpty || ItemStack.isSameItemSameTags(container[SLOT_RESIDUE], residue) && container[SLOT_RESIDUE].count < container[2].maxStackSize val canPutResidue = residue.isEmpty || container[SLOT_RESIDUE].isEmpty || ItemStack.isSameItemSameTags(container[SLOT_RESIDUE], residue) && container[SLOT_RESIDUE].count < container[2].maxStackSize
if (canPutResidue && ticks >= 4 && (energy.batteryLevel < ImpreciseFraction.ONE || GENERATION_SPEED * (ticks / 4) + energy.batteryLevel <= energy.maxBatteryLevel)) { if (canPutResidue && ticks >= 4 && (energy.batteryLevel < ImpreciseFraction.ONE || GENERATION_SPEED * (ticks / 4) + energy.batteryLevel <= energy.maxBatteryLevel)) {

View File

@ -9,7 +9,6 @@ import net.minecraft.nbt.IntTag
import net.minecraft.nbt.ListTag import net.minecraft.nbt.ListTag
import net.minecraft.network.FriendlyByteBuf import net.minecraft.network.FriendlyByteBuf
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player

View File

@ -3,13 +3,13 @@ package ru.dbotthepony.mc.otm.block.entity
import net.minecraft.core.BlockPos import net.minecraft.core.BlockPos
import net.minecraft.core.SectionPos import net.minecraft.core.SectionPos
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player
import net.minecraft.world.level.Level import net.minecraft.world.level.Level
import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.level.block.state.BlockState
import net.minecraft.world.phys.AABB import net.minecraft.world.phys.AABB
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.BlockGravitationStabilizer import ru.dbotthepony.mc.otm.block.BlockGravitationStabilizer
import ru.dbotthepony.mc.otm.block.BlockGravitationStabilizerLens import ru.dbotthepony.mc.otm.block.BlockGravitationStabilizerLens
import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock

View File

@ -17,11 +17,11 @@ import ru.dbotthepony.mc.otm.menu.PatternStorageMenu
import net.minecraft.MethodsReturnNonnullByDefault import net.minecraft.MethodsReturnNonnullByDefault
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerLevel
import net.minecraft.world.level.Level import net.minecraft.world.level.Level
import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.Block
import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.capabilities.Capability
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.matter.* import ru.dbotthepony.mc.otm.capability.matter.*
import ru.dbotthepony.mc.otm.graph.Graph6Node import ru.dbotthepony.mc.otm.graph.Graph6Node
import ru.dbotthepony.mc.otm.graph.matter.IMatterGraphNode import ru.dbotthepony.mc.otm.graph.matter.IMatterGraphNode

View File

@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player
import net.minecraft.world.inventory.AbstractContainerMenu import net.minecraft.world.inventory.AbstractContainerMenu
@ -13,6 +12,7 @@ import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.items.CapabilityItemHandler import net.minecraftforge.items.CapabilityItemHandler
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus

View File

@ -1,9 +1,9 @@
package ru.dbotthepony.mc.otm.block.entity package ru.dbotthepony.mc.otm.block.entity
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent import ru.dbotthepony.mc.otm.TranslatableComponent
enum class RedstoneSetting(val label: TranslatableComponent, val description: TranslatableComponent) { enum class RedstoneSetting(val label: Component, val description: Component) {
IGNORED(TranslatableComponent("otm.gui.redstone.ignored"), TranslatableComponent("otm.gui.redstone.ignored.description")), IGNORED(TranslatableComponent("otm.gui.redstone.ignored"), TranslatableComponent("otm.gui.redstone.ignored.description")),
LOW(TranslatableComponent("otm.gui.redstone.low"), TranslatableComponent("otm.gui.redstone.low.description")), LOW(TranslatableComponent("otm.gui.redstone.low"), TranslatableComponent("otm.gui.redstone.low.description")),
HIGH(TranslatableComponent("otm.gui.redstone.high"), TranslatableComponent("otm.gui.redstone.high.description")); HIGH(TranslatableComponent("otm.gui.redstone.high"), TranslatableComponent("otm.gui.redstone.high.description"));

View File

@ -669,9 +669,9 @@ class ExplosionQueue(private val level: ServerLevel) : SavedData() {
} }
@SubscribeEvent @SubscribeEvent
fun onWorldTick(event: TickEvent.WorldTickEvent) { fun onWorldTick(event: TickEvent.LevelTickEvent) {
if (event.phase == TickEvent.Phase.START && event.world is ServerLevel) { if (event.phase == TickEvent.Phase.START && event.level is ServerLevel) {
queueForLevel(event.world as ServerLevel).tick() queueForLevel(event.level as ServerLevel).tick()
} }
} }
} }

View File

@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player
@ -16,6 +15,7 @@ import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.items.CapabilityItemHandler import net.minecraftforge.items.CapabilityItemHandler
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.matter.MatterBottlerBlock import ru.dbotthepony.mc.otm.block.matter.MatterBottlerBlock
import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerState import ru.dbotthepony.mc.otm.block.entity.worker.WorkerState

View File

@ -5,7 +5,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player
@ -16,6 +15,7 @@ import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.common.util.LazyOptional
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.BatteryBankBlock import ru.dbotthepony.mc.otm.block.BatteryBankBlock
import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity
import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.MatteryCapability

View File

@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player
@ -16,6 +15,7 @@ import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.items.CapabilityItemHandler import net.minecraftforge.items.CapabilityItemHandler
import net.minecraftforge.items.IItemHandler import net.minecraftforge.items.IItemHandler
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus

View File

@ -20,10 +20,10 @@ import net.minecraft.nbt.CompoundTag
import net.minecraft.nbt.ListTag import net.minecraft.nbt.ListTag
import net.minecraft.nbt.Tag import net.minecraft.nbt.Tag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerLevel
import net.minecraft.world.level.Level import net.minecraft.world.level.Level
import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.capabilities.Capability
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity
import ru.dbotthepony.mc.otm.graph.Graph6Node import ru.dbotthepony.mc.otm.graph.Graph6Node
import ru.dbotthepony.mc.otm.graph.matter.IMatterGraphNode import ru.dbotthepony.mc.otm.graph.matter.IMatterGraphNode

View File

@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player
@ -15,6 +14,7 @@ import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.items.CapabilityItemHandler import net.minecraftforge.items.CapabilityItemHandler
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus

View File

@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player
@ -14,6 +13,7 @@ import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.items.CapabilityItemHandler import net.minecraftforge.items.CapabilityItemHandler
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus

View File

@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player
@ -15,6 +14,7 @@ import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.items.CapabilityItemHandler import net.minecraftforge.items.CapabilityItemHandler
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus

View File

@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player
@ -14,6 +13,7 @@ import net.minecraft.world.level.Level
import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.common.util.LazyOptional
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity
import ru.dbotthepony.mc.otm.graph.storage.BasicStorageGraphNode import ru.dbotthepony.mc.otm.graph.storage.BasicStorageGraphNode
import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.MatteryCapability

View File

@ -4,7 +4,6 @@ import net.minecraft.MethodsReturnNonnullByDefault
import net.minecraft.core.BlockPos import net.minecraft.core.BlockPos
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player
import net.minecraft.world.inventory.AbstractContainerMenu import net.minecraft.world.inventory.AbstractContainerMenu
@ -12,6 +11,7 @@ import net.minecraft.world.item.ItemStack
import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.level.block.state.BlockState
import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity
import ru.dbotthepony.mc.otm.block.storage.DriveViewerBlock import ru.dbotthepony.mc.otm.block.storage.DriveViewerBlock
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerState import ru.dbotthepony.mc.otm.block.entity.worker.WorkerState

View File

@ -8,7 +8,6 @@ import net.minecraft.nbt.CompoundTag
import net.minecraft.nbt.StringTag import net.minecraft.nbt.StringTag
import net.minecraft.network.FriendlyByteBuf import net.minecraft.network.FriendlyByteBuf
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerLevel
import net.minecraft.server.level.ServerPlayer import net.minecraft.server.level.ServerPlayer
import net.minecraft.world.Container import net.minecraft.world.Container
@ -19,8 +18,6 @@ import net.minecraft.world.inventory.CraftingContainer
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.crafting.CraftingRecipe import net.minecraft.world.item.crafting.CraftingRecipe
import net.minecraft.world.item.crafting.RecipeType import net.minecraft.world.item.crafting.RecipeType
import net.minecraft.world.item.crafting.ShapedRecipe
import net.minecraft.world.item.crafting.ShapelessRecipe
import net.minecraft.world.level.Level import net.minecraft.world.level.Level
import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.ForgeHooks import net.minecraftforge.common.ForgeHooks
@ -29,6 +26,7 @@ import net.minecraftforge.common.util.INBTSerializable
import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.network.NetworkEvent import net.minecraftforge.network.NetworkEvent
import org.apache.logging.log4j.LogManager import org.apache.logging.log4j.LogManager
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity
import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.capability.WorkerEnergyStorage import ru.dbotthepony.mc.otm.capability.WorkerEnergyStorage
@ -49,7 +47,7 @@ import kotlin.collections.HashMap
import kotlin.collections.HashSet import kotlin.collections.HashSet
class ItemMonitorPlayerSettings : INBTSerializable<CompoundTag> { class ItemMonitorPlayerSettings : INBTSerializable<CompoundTag> {
enum class RefillSource(val component: TranslatableComponent) { enum class RefillSource(val component: Component) {
// Refill everything from system // Refill everything from system
SYSTEM(TranslatableComponent("otm.gui.item_monitor.refill_source.system")), SYSTEM(TranslatableComponent("otm.gui.item_monitor.refill_source.system")),
@ -66,7 +64,7 @@ class ItemMonitorPlayerSettings : INBTSerializable<CompoundTag> {
DO_NOT(TranslatableComponent("otm.gui.item_monitor.refill_source.do_not")), DO_NOT(TranslatableComponent("otm.gui.item_monitor.refill_source.do_not")),
} }
enum class ResultTarget(val component: TranslatableComponent) { enum class ResultTarget(val component: Component) {
// Everything goes into storage system // Everything goes into storage system
ALL_SYSTEM(TranslatableComponent("otm.gui.item_monitor.result_target.all_system")), ALL_SYSTEM(TranslatableComponent("otm.gui.item_monitor.result_target.all_system")),
@ -78,7 +76,7 @@ class ItemMonitorPlayerSettings : INBTSerializable<CompoundTag> {
ALL_INVENTORY(TranslatableComponent("otm.gui.item_monitor.result_target.all_inventory")), ALL_INVENTORY(TranslatableComponent("otm.gui.item_monitor.result_target.all_inventory")),
} }
enum class Amount(val component: TranslatableComponent) { enum class Amount(val component: Component) {
ONE(TranslatableComponent("otm.gui.item_monitor.amount.one")), ONE(TranslatableComponent("otm.gui.item_monitor.amount.one")),
STACK(TranslatableComponent("otm.gui.item_monitor.amount.stack")), STACK(TranslatableComponent("otm.gui.item_monitor.amount.stack")),
FULL(TranslatableComponent("otm.gui.item_monitor.amount.full")) FULL(TranslatableComponent("otm.gui.item_monitor.amount.full"))
@ -251,6 +249,10 @@ class ItemMonitorBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) :
override fun stillValid(p_38874_: Player): Boolean { override fun stillValid(p_38874_: Player): Boolean {
return true return true
} }
override fun quickMoveStack(p_38941_: Player, p_38942_: Int): ItemStack {
return ItemStack.EMPTY
}
} }
private val craftingGridDummy = CraftingContainer(craftingMenu, 3, 3) private val craftingGridDummy = CraftingContainer(craftingMenu, 3, 3)

View File

@ -6,7 +6,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player

View File

@ -1,11 +1,9 @@
package ru.dbotthepony.mc.otm.block.entity.storage package ru.dbotthepony.mc.otm.block.entity.storage
import it.unimi.dsi.fastutil.longs.LongArraySet
import net.minecraft.core.BlockPos import net.minecraft.core.BlockPos
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player

View File

@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player
@ -14,6 +13,7 @@ import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.common.util.LazyOptional
import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity
import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.capability.WorkerEnergyStorage import ru.dbotthepony.mc.otm.capability.WorkerEnergyStorage

View File

@ -26,7 +26,7 @@ import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent
import net.minecraft.world.effect.MobEffects import net.minecraft.world.effect.MobEffects
import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.eventbus.api.SubscribeEvent import net.minecraftforge.eventbus.api.SubscribeEvent
import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent import net.minecraftforge.event.entity.living.LivingEvent.LivingTickEvent
import net.minecraftforge.eventbus.api.EventPriority import net.minecraftforge.eventbus.api.EventPriority
import ru.dbotthepony.mc.otm.capability.IMatteryEnergyStorage import ru.dbotthepony.mc.otm.capability.IMatteryEnergyStorage
import ru.dbotthepony.mc.otm.capability.extractEnergy import ru.dbotthepony.mc.otm.capability.extractEnergy
@ -417,7 +417,7 @@ open class AndroidCapability(final override val entity: LivingEntity) : ICapabil
} }
@SubscribeEvent @SubscribeEvent
fun onLivingTick(event: LivingUpdateEvent) { fun onLivingTick(event: LivingTickEvent) {
val ent = event.entity val ent = event.entity
if (ent.level.isClientSide) { if (ent.level.isClientSide) {

View File

@ -4,7 +4,6 @@ import net.minecraft.ChatFormatting
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.nbt.ListTag import net.minecraft.nbt.ListTag
import net.minecraft.nbt.Tag import net.minecraft.nbt.Tag
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.resources.ResourceLocation import net.minecraft.resources.ResourceLocation
import net.minecraft.server.level.ServerPlayer import net.minecraft.server.level.ServerPlayer
import net.minecraft.world.entity.Entity import net.minecraft.world.entity.Entity
@ -15,6 +14,7 @@ import net.minecraftforge.event.entity.player.PlayerEvent.Clone
import net.minecraftforge.event.entity.player.PlayerEvent.PlayerChangedDimensionEvent import net.minecraftforge.event.entity.player.PlayerEvent.PlayerChangedDimensionEvent
import net.minecraftforge.eventbus.api.SubscribeEvent import net.minecraftforge.eventbus.api.SubscribeEvent
import net.minecraftforge.network.PacketDistributor import net.minecraftforge.network.PacketDistributor
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.android.AndroidResearch import ru.dbotthepony.mc.otm.android.AndroidResearch
import ru.dbotthepony.mc.otm.android.AndroidResearchType import ru.dbotthepony.mc.otm.android.AndroidResearchType
import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.MatteryCapability
@ -318,13 +318,13 @@ class AndroidCapabilityPlayer(val ply: Player) : AndroidCapability(ply) {
@SubscribeEvent @SubscribeEvent
fun onPlayerChangeDimensionEvent(event: PlayerChangedDimensionEvent) { fun onPlayerChangeDimensionEvent(event: PlayerChangedDimensionEvent) {
event.player.getCapability(MatteryCapability.ANDROID) event.entity.getCapability(MatteryCapability.ANDROID)
.ifPresentK { (it as AndroidCapabilityPlayer).invalidateNetworkState() } .ifPresentK { (it as AndroidCapabilityPlayer).invalidateNetworkState() }
} }
@SubscribeEvent @SubscribeEvent
fun onPlayerCloneEvent(event: Clone) { fun onPlayerCloneEvent(event: Clone) {
val it = event.player.android as AndroidCapabilityPlayer? ?: return val it = event.entity.android as AndroidCapabilityPlayer? ?: return
var resolver = event.original.getCapability(MatteryCapability.ANDROID) var resolver = event.original.getCapability(MatteryCapability.ANDROID)
@ -342,7 +342,7 @@ class AndroidCapabilityPlayer(val ply: Player) : AndroidCapability(ply) {
if (original.willBecomeAndroid && event.isWasDeath) { if (original.willBecomeAndroid && event.isWasDeath) {
original.becomeAndroid() original.becomeAndroid()
(event.player as? ServerPlayer)?.displayClientMessage(TranslatableComponent("otm.pill.message_finish").withStyle(ChatFormatting.DARK_RED), false) (event.entity as? ServerPlayer)?.displayClientMessage(TranslatableComponent("otm.pill.message_finish").withStyle(ChatFormatting.DARK_RED), false)
} }
it.deserializeNBT(original.serializeNBT()) it.deserializeNBT(original.serializeNBT())

View File

@ -15,7 +15,7 @@ import net.minecraftforge.event.TickEvent.ServerTickEvent
import net.minecraftforge.event.TickEvent import net.minecraftforge.event.TickEvent
import net.minecraftforge.event.server.ServerAboutToStartEvent import net.minecraftforge.event.server.ServerAboutToStartEvent
import net.minecraftforge.event.server.ServerStoppingEvent import net.minecraftforge.event.server.ServerStoppingEvent
import net.minecraftforge.event.world.WorldEvent import net.minecraftforge.event.level.LevelEvent
import org.apache.logging.log4j.LogManager import org.apache.logging.log4j.LogManager
import ru.dbotthepony.mc.otm.SERVER_IS_DYING import ru.dbotthepony.mc.otm.SERVER_IS_DYING
import java.io.File import java.io.File
@ -193,7 +193,7 @@ object DrivePool {
} }
@SubscribeEvent @SubscribeEvent
fun onWorldSave(event: WorldEvent.Save) { fun onWorldSave(event: LevelEvent.Save) {
writeBacklog() writeBacklog()
} }

View File

@ -0,0 +1,186 @@
package ru.dbotthepony.mc.otm.client
import com.mojang.blaze3d.systems.RenderSystem
import net.minecraft.client.gui.components.Button
import net.minecraft.client.gui.screens.DeathScreen
import net.minecraft.client.gui.screens.InBedChatScreen
import net.minecraft.client.player.LocalPlayer
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.effect.MobEffects
import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.entity.player.Player
import net.minecraftforge.client.event.RenderGuiOverlayEvent
import net.minecraftforge.client.event.ScreenEvent
import net.minecraftforge.client.gui.overlay.ForgeGui
import net.minecraftforge.client.gui.overlay.GuiOverlayManager
import net.minecraftforge.eventbus.api.EventPriority
import net.minecraftforge.eventbus.api.SubscribeEvent
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.capability.android
import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer
import ru.dbotthepony.mc.otm.ifPresentK
import java.util.*
object AndroidGui {
val PLAYER_GUI_LOCATION = ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/gui/player_gui.png")
private var knownButtonX = -1
private var knownButtonY = -1
private var knownButton: Button? = null
private var knownButtonScreen: InBedChatScreen? = null
private var lastState: AndroidCapabilityPlayer? = null
private val button_shaker = Random()
@SubscribeEvent
fun onScreenRender(event: ScreenEvent.Render.Pre) {
if (knownButtonScreen != null && knownButton == null) {
for (widget in knownButtonScreen!!.renderables) {
if (widget is Button) {
knownButtonX = widget.x
knownButtonY = widget.y
knownButton = widget
break
}
}
if (knownButton == null) {
knownButtonScreen = null
}
}
if (knownButtonScreen != null && knownButtonScreen !== minecraft.screen) {
knownButtonX = -1
knownButtonY = -1
knownButton = null
knownButtonScreen = null
}
if (knownButtonScreen == null || minecraft.player == null) {
return
}
minecraft.player?.getCapability(MatteryCapability.ANDROID)?.ifPresentK {
if (!(it as AndroidCapabilityPlayer).willBecomeAndroid) {
knownButton!!.x = knownButtonX
knownButton!!.y = knownButtonY
knownButtonX = -1
knownButtonY = -1
knownButton = null
knownButtonScreen = null
return@ifPresentK
}
val dispersion = (10.0 * Math.max(0, it.sleepTicks - 20) / (AndroidCapabilityPlayer.SLEEP_TICKS_LIMIT - 20)).toInt()
knownButton!!.x =
knownButtonX - dispersion / 2 + (button_shaker.nextDouble() * dispersion).toInt()
knownButton!!.y =
knownButtonY - dispersion / 2 + (button_shaker.nextDouble() * dispersion).toInt()
}
}
@SubscribeEvent(priority = EventPriority.LOWEST)
fun onOpenGUIEvent(event: ScreenEvent.Opening) {
knownButtonX = -1
knownButtonY = -1
knownButton = null
knownButtonScreen = null
if (minecraft.player == null) return
val screen = event.screen
if (screen is DeathScreen) {
minecraft.player?.getCapability(MatteryCapability.ANDROID)?.ifPresentK {
if (it.isAndroid) screen.title = TranslatableComponent("otm.death_reason")
}
}
if (screen is InBedChatScreen) {
knownButtonScreen = screen
minecraft.player?.getCapability(MatteryCapability.ANDROID)?.ifPresentK {
if ((it as AndroidCapabilityPlayer).willBecomeAndroid) {
knownButtonScreen = screen
}
}
}
}
private val FOOD_LEVEL_ELEMENT by lazy {
GuiOverlayManager.findOverlay(ResourceLocation("minecraft", "food_level"))
}
private val AIR_LEVEL_ELEMENT by lazy {
GuiOverlayManager.findOverlay(ResourceLocation("minecraft", "air_level"))
}
@SubscribeEvent(priority = EventPriority.HIGH)
fun onLayerRenderEvent(event: RenderGuiOverlayEvent.Pre) {
if (event.overlay != FOOD_LEVEL_ELEMENT && event.overlay != AIR_LEVEL_ELEMENT) {
return
}
val ply: LocalPlayer = minecraft.player ?: return
if (ply.vehicle is LivingEntity ||
minecraft.options.hideGui ||
minecraft.gameMode?.canHurtPlayer() == false ||
minecraft.getCameraEntity() !is Player
) {
return
}
val lazy = ply.android
var android: AndroidCapabilityPlayer? = null
if (lazy != null) {
android = lazy as AndroidCapabilityPlayer
} else if (!ply.isAlive) {
android = lastState
}
val gui = minecraft.gui as? ForgeGui ?: return
if (android != null && android.isAndroid) {
event.isCanceled = true
lastState = android
if (event.overlay === AIR_LEVEL_ELEMENT) {
return
}
val yOffset = if (ply.hasEffect(MobEffects.HUNGER)) 18 else 0
var level: Float
if (android.maxBatteryLevel.isZero) {
level = 0f
} else {
level = android.batteryLevel.div(android.maxBatteryLevel).toFloat()
if (level >= 0.98f)
level = 1f
}
gui.setupOverlayRenderState(true, false)
RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f)
RenderSystem.setShaderTexture(0, PLAYER_GUI_LOCATION)
val width = event.window.guiScaledWidth
val height = event.window.guiScaledHeight
val left = width / 2 + 10
val top: Int = height - gui.rightHeight
gui.rightHeight += 10
// Stack, x, y, blitOffset?, (float) image_x, (float) image_y, rect_x, rect_y, total_image_width, total_image_height
// Stack, x, y, image_x, image_y, rect_x, rect_y
gui.blit(event.poseStack, left, top, 0, yOffset, 80, 9)
val leftPadding = Math.ceil((level * 79f - 0.5f).toDouble()).toInt()
gui.blit(event.poseStack, left + 79 - leftPadding, top, 79 - leftPadding, yOffset + 9, leftPadding, 9)
}
}
}

View File

@ -9,7 +9,7 @@ import ru.dbotthepony.mc.otm.registry.AndroidFeatures
@SubscribeEvent @SubscribeEvent
@Suppress("unused") @Suppress("unused")
fun inputEvent(event: MovementInputUpdateEvent) { fun inputEvent(event: MovementInputUpdateEvent) {
val ply = event.player val ply = event.entity
val input = event.input val input = event.input
val cap = ply.android as? AndroidCapabilityPlayer ?: return val cap = ply.android as? AndroidCapabilityPlayer ?: return

View File

@ -9,9 +9,9 @@ import net.minecraft.client.renderer.MultiBufferSource
import net.minecraft.client.renderer.blockentity.BeaconRenderer import net.minecraft.client.renderer.blockentity.BeaconRenderer
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer import net.minecraft.client.renderer.blockentity.BlockEntityRenderer
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.phys.Vec3 import net.minecraft.world.phys.Vec3
import org.lwjgl.opengl.GL30 import org.lwjgl.opengl.GL30
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.GravitationStabilizerBlockEntity import ru.dbotthepony.mc.otm.block.entity.GravitationStabilizerBlockEntity
import ru.dbotthepony.mc.otm.block.entity.blackhole.BlackHoleBlockEntity import ru.dbotthepony.mc.otm.block.entity.blackhole.BlackHoleBlockEntity
import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.MatteryCapability
@ -137,8 +137,9 @@ class BlackHoleRenderer(private val context: BlockEntityRendererProvider.Context
poseStack.popPose() poseStack.popPose()
builder.end() // builder.end()
BufferUploader.end(builder) // BufferUploader.end(builder)
BufferUploader.draw(builder.end())
RenderSystem.enableCull() RenderSystem.enableCull()
} }

View File

@ -6,7 +6,7 @@ import net.minecraft.client.renderer.MultiBufferSource
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer import net.minecraft.client.renderer.blockentity.BlockEntityRenderer
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.network.chat.TranslatableComponent import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.EnergyCounterBlock import ru.dbotthepony.mc.otm.block.EnergyCounterBlock
import ru.dbotthepony.mc.otm.block.entity.EnergyCounterBlockEntity import ru.dbotthepony.mc.otm.block.entity.EnergyCounterBlockEntity
import ru.dbotthepony.mc.otm.core.RGBAColor import ru.dbotthepony.mc.otm.core.RGBAColor

View File

@ -10,7 +10,7 @@ import net.minecraft.client.renderer.blockentity.BlockEntityRenderer
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider
import net.minecraft.client.renderer.texture.OverlayTexture import net.minecraft.client.renderer.texture.OverlayTexture
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.network.chat.TranslatableComponent import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.BlackHoleBlock import ru.dbotthepony.mc.otm.block.BlackHoleBlock
import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock
import ru.dbotthepony.mc.otm.block.entity.GravitationStabilizerBlockEntity import ru.dbotthepony.mc.otm.block.entity.GravitationStabilizerBlockEntity

View File

@ -6,9 +6,9 @@ import net.minecraft.ChatFormatting
import net.minecraft.client.Minecraft import net.minecraft.client.Minecraft
import net.minecraft.client.resources.sounds.SimpleSoundInstance import net.minecraft.client.resources.sounds.SimpleSoundInstance
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.sounds.SoundEvents import net.minecraft.sounds.SoundEvents
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.android.AndroidResearch import ru.dbotthepony.mc.otm.android.AndroidResearch
import ru.dbotthepony.mc.otm.android.AndroidResearchType import ru.dbotthepony.mc.otm.android.AndroidResearchType
import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.MatteryCapability

View File

@ -1,8 +1,8 @@
package ru.dbotthepony.mc.otm.client.screen package ru.dbotthepony.mc.otm.client.screen
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.screen.panels.* import ru.dbotthepony.mc.otm.client.screen.panels.*
import ru.dbotthepony.mc.otm.client.screen.widget.PowerGaugePanel import ru.dbotthepony.mc.otm.client.screen.widget.PowerGaugePanel
import ru.dbotthepony.mc.otm.client.screen.widget.ProgressGaugePanel import ru.dbotthepony.mc.otm.client.screen.widget.ProgressGaugePanel

View File

@ -2,9 +2,9 @@ package ru.dbotthepony.mc.otm.client.screen
import com.mojang.blaze3d.vertex.PoseStack import com.mojang.blaze3d.vertex.PoseStack
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.screen.panels.* import ru.dbotthepony.mc.otm.client.screen.panels.*
import ru.dbotthepony.mc.otm.client.screen.widget.PowerGaugePanel import ru.dbotthepony.mc.otm.client.screen.widget.PowerGaugePanel
import ru.dbotthepony.mc.otm.item.PortableCondensationDriveItem import ru.dbotthepony.mc.otm.item.PortableCondensationDriveItem

View File

@ -1,8 +1,8 @@
package ru.dbotthepony.mc.otm.client.screen package ru.dbotthepony.mc.otm.client.screen
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.screen.panels.* import ru.dbotthepony.mc.otm.client.screen.panels.*
import ru.dbotthepony.mc.otm.core.formatPower import ru.dbotthepony.mc.otm.core.formatPower
import ru.dbotthepony.mc.otm.menu.EnergyCounterMenu import ru.dbotthepony.mc.otm.menu.EnergyCounterMenu

View File

@ -4,11 +4,11 @@ import com.mojang.blaze3d.systems.RenderSystem
import com.mojang.blaze3d.vertex.PoseStack import com.mojang.blaze3d.vertex.PoseStack
import net.minecraft.ChatFormatting import net.minecraft.ChatFormatting
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Items import net.minecraft.world.item.Items
import org.lwjgl.opengl.GL11 import org.lwjgl.opengl.GL11
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.storage.ItemMonitorPlayerSettings import ru.dbotthepony.mc.otm.block.entity.storage.ItemMonitorPlayerSettings
import ru.dbotthepony.mc.otm.client.render.SkinGrid import ru.dbotthepony.mc.otm.client.render.SkinGrid
import ru.dbotthepony.mc.otm.client.render.UVWindingOrder import ru.dbotthepony.mc.otm.client.render.UVWindingOrder
@ -16,11 +16,9 @@ import ru.dbotthepony.mc.otm.client.screen.panels.*
import ru.dbotthepony.mc.otm.client.screen.widget.ProgressGaugePanel import ru.dbotthepony.mc.otm.client.screen.widget.ProgressGaugePanel
import ru.dbotthepony.mc.otm.core.equalDownDivision import ru.dbotthepony.mc.otm.core.equalDownDivision
import ru.dbotthepony.mc.otm.core.formatReadableNumber import ru.dbotthepony.mc.otm.core.formatReadableNumber
import ru.dbotthepony.mc.otm.core.formatSi
import ru.dbotthepony.mc.otm.core.formatSiComponent import ru.dbotthepony.mc.otm.core.formatSiComponent
import ru.dbotthepony.mc.otm.menu.ItemMonitorMenu import ru.dbotthepony.mc.otm.menu.ItemMonitorMenu
import ru.dbotthepony.mc.otm.storage.ITEM_STORAGE import ru.dbotthepony.mc.otm.storage.ITEM_STORAGE
import java.text.NumberFormat
class ItemMonitorScreen(menu: ItemMonitorMenu, inventory: Inventory, title: Component) : class ItemMonitorScreen(menu: ItemMonitorMenu, inventory: Inventory, title: Component) :
MatteryScreen<ItemMonitorMenu>(menu, inventory, title) { MatteryScreen<ItemMonitorMenu>(menu, inventory, title) {

View File

@ -1,8 +1,8 @@
package ru.dbotthepony.mc.otm.client.screen package ru.dbotthepony.mc.otm.client.screen
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.screen.panels.ButtonPanel import ru.dbotthepony.mc.otm.client.screen.panels.ButtonPanel
import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel
import ru.dbotthepony.mc.otm.client.screen.panels.SlotPanel import ru.dbotthepony.mc.otm.client.screen.panels.SlotPanel

View File

@ -1,8 +1,8 @@
package ru.dbotthepony.mc.otm.client.screen package ru.dbotthepony.mc.otm.client.screen
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.screen.panels.CheckBoxLabelInputPanel import ru.dbotthepony.mc.otm.client.screen.panels.CheckBoxLabelInputPanel
import ru.dbotthepony.mc.otm.client.screen.panels.FilterSlotPanel import ru.dbotthepony.mc.otm.client.screen.panels.FilterSlotPanel
import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel

View File

@ -1,8 +1,8 @@
package ru.dbotthepony.mc.otm.client.screen package ru.dbotthepony.mc.otm.client.screen
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.screen.panels.CheckBoxLabelInputPanel import ru.dbotthepony.mc.otm.client.screen.panels.CheckBoxLabelInputPanel
import ru.dbotthepony.mc.otm.client.screen.panels.FilterSlotPanel import ru.dbotthepony.mc.otm.client.screen.panels.FilterSlotPanel
import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel

View File

@ -1,8 +1,8 @@
package ru.dbotthepony.mc.otm.client.screen package ru.dbotthepony.mc.otm.client.screen
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.screen.panels.CheckBoxLabelInputPanel import ru.dbotthepony.mc.otm.client.screen.panels.CheckBoxLabelInputPanel
import ru.dbotthepony.mc.otm.client.screen.panels.FilterSlotPanel import ru.dbotthepony.mc.otm.client.screen.panels.FilterSlotPanel
import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel

View File

@ -1,13 +1,12 @@
package ru.dbotthepony.mc.otm.client.screen package ru.dbotthepony.mc.otm.client.screen
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.screen.panels.* import ru.dbotthepony.mc.otm.client.screen.panels.*
import ru.dbotthepony.mc.otm.client.screen.widget.PowerGaugePanel import ru.dbotthepony.mc.otm.client.screen.widget.PowerGaugePanel
import ru.dbotthepony.mc.otm.core.formatPower import ru.dbotthepony.mc.otm.core.formatPower
import ru.dbotthepony.mc.otm.menu.StorageImporterMenu
import ru.dbotthepony.mc.otm.menu.StoragePowerSupplierMenu import ru.dbotthepony.mc.otm.menu.StoragePowerSupplierMenu
class StoragePowerSupplierScreen(menu: StoragePowerSupplierMenu, inventory: Inventory, title: Component) : class StoragePowerSupplierScreen(menu: StoragePowerSupplierMenu, inventory: Inventory, title: Component) :

View File

@ -2,11 +2,10 @@ package ru.dbotthepony.mc.otm.client.screen.panels
import com.mojang.blaze3d.systems.RenderSystem import com.mojang.blaze3d.systems.RenderSystem
import com.mojang.blaze3d.vertex.PoseStack import com.mojang.blaze3d.vertex.PoseStack
import net.minecraft.client.Minecraft
import net.minecraft.client.renderer.GameRenderer import net.minecraft.client.renderer.GameRenderer
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
import net.minecraftforge.client.RenderProperties import net.minecraftforge.client.extensions.common.IClientItemExtensions
import org.lwjgl.opengl.GL11 import org.lwjgl.opengl.GL11
import ru.dbotthepony.mc.otm.client.minecraft import ru.dbotthepony.mc.otm.client.minecraft
import ru.dbotthepony.mc.otm.core.RGBAColor import ru.dbotthepony.mc.otm.core.RGBAColor
@ -91,7 +90,8 @@ abstract class AbstractSlotPanel @JvmOverloads constructor(
val itemstack = getItemStack() val itemstack = getItemStack()
if (!itemstack.isEmpty) { if (!itemstack.isEmpty) {
val font = RenderProperties.get(itemstack).getFont(itemstack) // val font = RenderProperties.get(itemstack).getFont(itemstack)
val font = (itemstack.item.renderPropertiesInternal as? IClientItemExtensions)?.getFont(itemstack, IClientItemExtensions.FontContext.TOOLTIP)
// TODO: WHERE???????????? // TODO: WHERE????????????
// GuiUtils.preItemToolTip(itemstack); // GuiUtils.preItemToolTip(itemstack);
@ -100,7 +100,8 @@ abstract class AbstractSlotPanel @JvmOverloads constructor(
getItemStackTooltip(itemstack), getItemStackTooltip(itemstack),
mouse_x.toInt(), mouse_x.toInt(),
mouse_y.toInt(), mouse_y.toInt(),
font ?: screen.font font ?: screen.font,
itemstack
) )
// GuiUtils.postItemToolTip(); // GuiUtils.postItemToolTip();

View File

@ -7,8 +7,8 @@ import net.minecraft.client.gui.components.Button
import net.minecraft.client.gui.components.Button.OnPress import net.minecraft.client.gui.components.Button.OnPress
import net.minecraft.client.resources.sounds.SimpleSoundInstance import net.minecraft.client.resources.sounds.SimpleSoundInstance
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TextComponent
import net.minecraft.sounds.SoundEvents import net.minecraft.sounds.SoundEvents
import ru.dbotthepony.mc.otm.TextComponent
import ru.dbotthepony.mc.otm.client.minecraft import ru.dbotthepony.mc.otm.client.minecraft
import ru.dbotthepony.mc.otm.client.render.SkinElement import ru.dbotthepony.mc.otm.client.render.SkinElement
import ru.dbotthepony.mc.otm.client.render.SkinGrid import ru.dbotthepony.mc.otm.client.render.SkinGrid

View File

@ -2,7 +2,7 @@ package ru.dbotthepony.mc.otm.client.screen.panels
import net.minecraft.client.gui.components.EditBox import net.minecraft.client.gui.components.EditBox
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TextComponent import ru.dbotthepony.mc.otm.TextComponent
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
open class EditBoxPanel( open class EditBoxPanel(

View File

@ -2,7 +2,7 @@ package ru.dbotthepony.mc.otm.client.screen.panels
import com.mojang.blaze3d.vertex.PoseStack import com.mojang.blaze3d.vertex.PoseStack
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TextComponent import ru.dbotthepony.mc.otm.TextComponent
import ru.dbotthepony.mc.otm.core.RGBAColor import ru.dbotthepony.mc.otm.core.RGBAColor
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen import ru.dbotthepony.mc.otm.client.screen.MatteryScreen

View File

@ -1,7 +1,7 @@
package ru.dbotthepony.mc.otm.client.screen.panels package ru.dbotthepony.mc.otm.client.screen.panels
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TextComponent import ru.dbotthepony.mc.otm.TextComponent
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
import ru.dbotthepony.mc.otm.menu.widget.NumberPlayerInputWidget import ru.dbotthepony.mc.otm.menu.widget.NumberPlayerInputWidget
import java.math.BigDecimal import java.math.BigDecimal

View File

@ -4,7 +4,7 @@ import com.mojang.blaze3d.systems.RenderSystem
import com.mojang.blaze3d.vertex.PoseStack import com.mojang.blaze3d.vertex.PoseStack
import net.minecraft.ChatFormatting import net.minecraft.ChatFormatting
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.render.RenderHelper import ru.dbotthepony.mc.otm.client.render.RenderHelper
import ru.dbotthepony.mc.otm.client.render.SkinElement import ru.dbotthepony.mc.otm.client.render.SkinElement
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen import ru.dbotthepony.mc.otm.client.screen.MatteryScreen

View File

@ -2,7 +2,7 @@ package ru.dbotthepony.mc.otm.compat.jei
import mezz.jei.api.IModPlugin import mezz.jei.api.IModPlugin
import mezz.jei.api.JeiPlugin import mezz.jei.api.JeiPlugin
import mezz.jei.api.constants.VanillaRecipeCategoryUid import mezz.jei.api.constants.RecipeTypes
import mezz.jei.api.registration.IRecipeCatalystRegistration import mezz.jei.api.registration.IRecipeCatalystRegistration
import net.minecraft.resources.ResourceLocation import net.minecraft.resources.ResourceLocation
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
@ -20,6 +20,6 @@ class JEIPlugin : IModPlugin {
} }
override fun registerRecipeCatalysts(registration: IRecipeCatalystRegistration) { override fun registerRecipeCatalysts(registration: IRecipeCatalystRegistration) {
registration.addRecipeCatalyst(ItemStack(MBlocks.CHEMICAL_GENERATOR), VanillaRecipeCategoryUid.FUEL) registration.addRecipeCatalyst(ItemStack(MBlocks.CHEMICAL_GENERATOR), RecipeTypes.FUELING)
} }
} }

View File

@ -2,9 +2,9 @@ package ru.dbotthepony.mc.otm.compat.mekanism
import mekanism.common.registries.MekanismItems import mekanism.common.registries.MekanismItems
import net.minecraft.ChatFormatting import net.minecraft.ChatFormatting
import net.minecraft.network.chat.TranslatableComponent
import net.minecraftforge.event.entity.player.ItemTooltipEvent import net.minecraftforge.event.entity.player.ItemTooltipEvent
import net.minecraftforge.eventbus.api.SubscribeEvent import net.minecraftforge.eventbus.api.SubscribeEvent
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.isMekanismLoaded import ru.dbotthepony.mc.otm.capability.isMekanismLoaded
private val BLACKHOLE_IMMUNITY = TranslatableComponent("otm.item.blackhole_immunity").withStyle(ChatFormatting.DARK_GRAY) private val BLACKHOLE_IMMUNITY = TranslatableComponent("otm.item.blackhole_immunity").withStyle(ChatFormatting.DARK_GRAY)

View File

@ -2,8 +2,8 @@ package ru.dbotthepony.mc.otm.core
import com.google.common.collect.ImmutableList import com.google.common.collect.ImmutableList
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TextComponent import ru.dbotthepony.mc.otm.TextComponent
import net.minecraft.network.chat.TranslatableComponent import ru.dbotthepony.mc.otm.TranslatableComponent
import java.math.BigDecimal import java.math.BigDecimal
import java.math.BigInteger import java.math.BigInteger

View File

@ -4,27 +4,47 @@ import com.google.common.collect.ImmutableList
import com.google.gson.JsonArray import com.google.gson.JsonArray
import com.google.gson.JsonObject import com.google.gson.JsonObject
import com.google.gson.JsonParseException import com.google.gson.JsonParseException
import com.mojang.serialization.Codec
import com.mojang.serialization.DataResult
import com.mojang.serialization.DynamicOps
import it.unimi.dsi.fastutil.objects.ObjectArrayList
import net.minecraft.resources.ResourceLocation import net.minecraft.resources.ResourceLocation
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
import net.minecraft.world.level.storage.loot.Deserializers import net.minecraft.world.level.storage.loot.Deserializers
import net.minecraft.world.level.storage.loot.LootContext import net.minecraft.world.level.storage.loot.LootContext
import net.minecraft.world.level.storage.loot.LootPool import net.minecraft.world.level.storage.loot.LootPool
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition import net.minecraft.world.level.storage.loot.predicates.LootItemCondition
import net.minecraftforge.common.loot.GlobalLootModifierSerializer import net.minecraftforge.common.loot.IGlobalLootModifier
import net.minecraftforge.common.loot.LootModifier import net.minecraftforge.common.loot.LootModifier
import net.minecraftforge.registries.ForgeRegistries import net.minecraftforge.registries.ForgeRegistries
import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.registryName
class LootTableAppender(conditions: Array<out LootItemCondition>, private vararg val pools: LootPool) : LootModifier(conditions) { class LootTableAppender(conditions: Array<out LootItemCondition>, private vararg val pools: LootPool) : LootModifier(conditions) {
override fun doApply(generatedLoot: MutableList<ItemStack>, context: LootContext): MutableList<ItemStack> { override fun doApply(generatedLoot: ObjectArrayList<ItemStack>, context: LootContext): ObjectArrayList<ItemStack> {
pools.forEach { it.addRandomItems(generatedLoot::add, context) } pools.forEach { it.addRandomItems(generatedLoot::add, context) }
return generatedLoot return generatedLoot
} }
companion object : GlobalLootModifierSerializer<LootTableAppender>() { override fun codec(): Codec<out IGlobalLootModifier> {
return Companion
}
companion object : Codec<LootTableAppender> {
override fun <T : Any?> encode(input: LootTableAppender?, ops: DynamicOps<T>?, prefix: T): DataResult<T> {
return DataResult.error("NYI")
}
override fun <T : Any?> decode(
ops: DynamicOps<T>?,
input: T
): DataResult<com.mojang.datafixers.util.Pair<LootTableAppender, T>> {
return DataResult.error("NYI")
}
private val lootPoolGson = Deserializers.createLootTableSerializer().create() private val lootPoolGson = Deserializers.createLootTableSerializer().create()
override fun read( /*override fun read(
location: ResourceLocation, location: ResourceLocation,
`object`: JsonObject, `object`: JsonObject,
ailootcondition: Array<out LootItemCondition> ailootcondition: Array<out LootItemCondition>
@ -41,11 +61,7 @@ class LootTableAppender(conditions: Array<out LootItemCondition>, private vararg
val build = makeConditions(instance.conditions) val build = makeConditions(instance.conditions)
build.add("pools", lootPoolGson.toJsonTree(instance.pools)) build.add("pools", lootPoolGson.toJsonTree(instance.pools))
return build return build
} }*/
init {
registryName = ResourceLocation(OverdriveThatMatters.MOD_ID, "loot_appender")
}
} }
} }
@ -54,7 +70,7 @@ class LootTableBasicAppender(conditions: Array<out LootItemCondition>, items: Li
constructor(conditions: Array<out LootItemCondition>, vararg items: Pair<ItemStack, Double>) : this(conditions, items.toList()) constructor(conditions: Array<out LootItemCondition>, vararg items: Pair<ItemStack, Double>) : this(conditions, items.toList())
override fun doApply(generatedLoot: MutableList<ItemStack>, context: LootContext): MutableList<ItemStack> { override fun doApply(generatedLoot: ObjectArrayList<ItemStack>, context: LootContext): ObjectArrayList<ItemStack> {
for ((item, chance) in items) { for ((item, chance) in items) {
if (context.random.nextDouble() <= chance) { if (context.random.nextDouble() <= chance) {
generatedLoot.add(item.copy()) generatedLoot.add(item.copy())
@ -64,8 +80,23 @@ class LootTableBasicAppender(conditions: Array<out LootItemCondition>, items: Li
return generatedLoot return generatedLoot
} }
companion object : GlobalLootModifierSerializer<LootTableBasicAppender>() { override fun codec(): Codec<out IGlobalLootModifier> {
override fun read( return Companion
}
companion object : Codec<LootTableBasicAppender> {
override fun <T : Any?> encode(input: LootTableBasicAppender?, ops: DynamicOps<T>?, prefix: T): DataResult<T> {
return DataResult.error("NYI")
}
override fun <T : Any?> decode(
ops: DynamicOps<T>?,
input: T
): DataResult<com.mojang.datafixers.util.Pair<LootTableBasicAppender, T>> {
return DataResult.error("NYI")
}
/*override fun read(
location: ResourceLocation, location: ResourceLocation,
obj: JsonObject, obj: JsonObject,
ailootcondition: Array<out LootItemCondition> ailootcondition: Array<out LootItemCondition>
@ -108,10 +139,6 @@ class LootTableBasicAppender(conditions: Array<out LootItemCondition>, items: Li
obj.add("entries", listing) obj.add("entries", listing)
return obj return obj
} }*/
init {
registryName = ResourceLocation(OverdriveThatMatters.MOD_ID, "loot_appender_basic")
}
} }
} }

View File

@ -3,7 +3,6 @@ package ru.dbotthepony.mc.otm.item
import net.minecraft.ChatFormatting import net.minecraft.ChatFormatting
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.item.Item import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Rarity import net.minecraft.world.item.Rarity
@ -11,6 +10,7 @@ import net.minecraft.world.item.TooltipFlag
import net.minecraft.world.level.Level import net.minecraft.world.level.Level
import net.minecraftforge.common.capabilities.ICapabilityProvider import net.minecraftforge.common.capabilities.ICapabilityProvider
import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.EnergyCapacitorItem import ru.dbotthepony.mc.otm.capability.EnergyCapacitorItem
import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.core.ImpreciseFraction import ru.dbotthepony.mc.otm.core.ImpreciseFraction

View File

@ -6,7 +6,6 @@ import net.minecraft.ChatFormatting
import net.minecraft.core.BlockPos import net.minecraft.core.BlockPos
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.EquipmentSlot import net.minecraft.world.entity.EquipmentSlot
import net.minecraft.world.entity.LivingEntity import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.entity.ai.attributes.Attribute import net.minecraft.world.entity.ai.attributes.Attribute

View File

@ -3,12 +3,12 @@ package ru.dbotthepony.mc.otm.item
import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.OverdriveThatMatters
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.TooltipFlag import net.minecraft.world.item.TooltipFlag
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.ChatFormatting import net.minecraft.ChatFormatting
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.world.item.Item import net.minecraft.world.item.Item
import net.minecraft.world.item.Rarity import net.minecraft.world.item.Rarity
import net.minecraft.world.level.Level import net.minecraft.world.level.Level
import ru.dbotthepony.mc.otm.TranslatableComponent
class GravitationalDisruptorItem : class GravitationalDisruptorItem :
Item(Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(1).rarity(Rarity.EPIC)) { Item(Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(1).rarity(Rarity.EPIC)) {

View File

@ -5,7 +5,6 @@ import net.minecraft.MethodsReturnNonnullByDefault
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.item.Item import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Rarity import net.minecraft.world.item.Rarity
@ -15,6 +14,7 @@ import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.capabilities.ICapabilityProvider import net.minecraftforge.common.capabilities.ICapabilityProvider
import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.common.util.LazyOptional
import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.capability.matter.IMatterHandler import ru.dbotthepony.mc.otm.capability.matter.IMatterHandler
import ru.dbotthepony.mc.otm.capability.matter.MatterDirection import ru.dbotthepony.mc.otm.capability.matter.MatterDirection

View File

@ -2,12 +2,12 @@ package ru.dbotthepony.mc.otm.item
import net.minecraft.ChatFormatting import net.minecraft.ChatFormatting
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.item.Item import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.TooltipFlag import net.minecraft.world.item.TooltipFlag
import net.minecraft.world.level.Level import net.minecraft.world.level.Level
import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.core.ImpreciseFraction import ru.dbotthepony.mc.otm.core.ImpreciseFraction
import ru.dbotthepony.mc.otm.matter.IMatterItem import ru.dbotthepony.mc.otm.matter.IMatterItem
import ru.dbotthepony.mc.otm.matter.MatterTuple import ru.dbotthepony.mc.otm.matter.MatterTuple

View File

@ -6,7 +6,6 @@ import net.minecraft.nbt.CompoundTag
import net.minecraftforge.common.capabilities.ICapabilityProvider import net.minecraftforge.common.capabilities.ICapabilityProvider
import net.minecraft.world.item.TooltipFlag import net.minecraft.world.item.TooltipFlag
import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.MatteryCapability
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.ChatFormatting import net.minecraft.ChatFormatting
import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.common.util.LazyOptional
import net.minecraft.nbt.ListTag import net.minecraft.nbt.ListTag
@ -15,6 +14,7 @@ import net.minecraft.network.chat.Component
import net.minecraft.world.item.Item import net.minecraft.world.item.Item
import net.minecraft.world.level.Level import net.minecraft.world.level.Level
import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.capabilities.Capability
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.matter.* import ru.dbotthepony.mc.otm.capability.matter.*
import ru.dbotthepony.mc.otm.ifHas import ru.dbotthepony.mc.otm.ifHas
import java.util.* import java.util.*

View File

@ -2,7 +2,6 @@ package ru.dbotthepony.mc.otm.item
import net.minecraft.ChatFormatting import net.minecraft.ChatFormatting
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerPlayer import net.minecraft.server.level.ServerPlayer
import net.minecraft.world.InteractionHand import net.minecraft.world.InteractionHand
import net.minecraft.world.InteractionResultHolder import net.minecraft.world.InteractionResultHolder
@ -14,6 +13,7 @@ import net.minecraft.world.item.*
import net.minecraft.world.level.Level import net.minecraft.world.level.Level
import net.minecraftforge.common.util.FakePlayer import net.minecraftforge.common.util.FakePlayer
import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer

View File

@ -12,10 +12,7 @@ import ru.dbotthepony.mc.otm.capability.MatteryCapability
import net.minecraft.world.item.TooltipFlag import net.minecraft.world.item.TooltipFlag
import net.minecraft.ChatFormatting import net.minecraft.ChatFormatting
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.nbt.ListTag
import net.minecraft.nbt.Tag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TextComponent
import net.minecraft.stats.Stats import net.minecraft.stats.Stats
import net.minecraft.world.item.Item import net.minecraft.world.item.Item
import net.minecraft.world.level.Level import net.minecraft.world.level.Level
@ -23,6 +20,7 @@ import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.event.ForgeEventFactory import net.minecraftforge.event.ForgeEventFactory
import net.minecraftforge.eventbus.api.SubscribeEvent import net.minecraftforge.eventbus.api.SubscribeEvent
import net.minecraftforge.event.entity.player.EntityItemPickupEvent import net.minecraftforge.event.entity.player.EntityItemPickupEvent
import ru.dbotthepony.mc.otm.TextComponent
import ru.dbotthepony.mc.otm.capability.drive.DrivePool import ru.dbotthepony.mc.otm.capability.drive.DrivePool
import ru.dbotthepony.mc.otm.container.ItemFilter import ru.dbotthepony.mc.otm.container.ItemFilter
import ru.dbotthepony.mc.otm.core.ImpreciseFraction import ru.dbotthepony.mc.otm.core.ImpreciseFraction
@ -105,14 +103,14 @@ class PortableCondensationDriveItem(capacity: Int) :
@SubscribeEvent @SubscribeEvent
fun onPickupEvent(event: EntityItemPickupEvent) { fun onPickupEvent(event: EntityItemPickupEvent) {
if (event.item.owner != null && event.item.owner != event.player.uuid && event.item.age < 200) { if (event.item.owner != null && event.item.owner != event.entity.uuid && event.item.age < 200) {
return return
} }
var amount = event.item.item.count var amount = event.item.item.count
val item = event.item.item.item val item = event.item.item.item
for (stack in event.player.inventory.items) { for (stack in event.entity.inventory.items) {
val drive = stack.item val drive = stack.item
if (drive is PortableCondensationDriveItem) { if (drive is PortableCondensationDriveItem) {
@ -131,21 +129,21 @@ class PortableCondensationDriveItem(capacity: Int) :
copy.count -= remaining.count copy.count -= remaining.count
event.isCanceled = true event.isCanceled = true
ForgeEventFactory.firePlayerItemPickupEvent(event.player, event.item, copy) ForgeEventFactory.firePlayerItemPickupEvent(event.entity, event.item, copy)
if (remaining.count > 0) { if (remaining.count > 0) {
event.item.item.count = remaining.count event.item.item.count = remaining.count
event.player.take(event.item, amount - remaining.count) event.entity.take(event.item, amount - remaining.count)
event.player.awardStat(Stats.ITEM_PICKED_UP.get(item), amount - remaining.count) event.entity.awardStat(Stats.ITEM_PICKED_UP.get(item), amount - remaining.count)
event.player.onItemPickup(event.item) event.entity.onItemPickup(event.item)
amount = remaining.count amount = remaining.count
} else { } else {
event.player.take(event.item, amount) event.entity.take(event.item, amount)
event.player.awardStat(Stats.ITEM_PICKED_UP.get(item), amount) event.entity.awardStat(Stats.ITEM_PICKED_UP.get(item), amount)
event.player.onItemPickup(event.item) event.entity.onItemPickup(event.item)
event.item.discard() event.item.discard()
doBreak = true doBreak = true

View File

@ -3,15 +3,16 @@ package ru.dbotthepony.mc.otm.item
import net.minecraft.ChatFormatting import net.minecraft.ChatFormatting
import net.minecraft.client.model.HumanoidModel import net.minecraft.client.model.HumanoidModel
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.sounds.SoundEvent import net.minecraft.sounds.SoundEvent
import net.minecraft.sounds.SoundEvents
import net.minecraft.world.entity.EquipmentSlot import net.minecraft.world.entity.EquipmentSlot
import net.minecraft.world.entity.LivingEntity import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.item.* import net.minecraft.world.item.*
import net.minecraft.world.item.crafting.Ingredient import net.minecraft.world.item.crafting.Ingredient
import net.minecraft.world.level.Level import net.minecraft.world.level.Level
import net.minecraftforge.client.IItemRenderProperties import net.minecraftforge.client.extensions.common.IClientItemExtensions
import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.model.GravitationStabilizerModel import ru.dbotthepony.mc.otm.client.model.GravitationStabilizerModel
import java.util.function.Consumer import java.util.function.Consumer
@ -19,7 +20,7 @@ private object GravitationStabilizerArmorMaterial : ArmorMaterial {
override fun getDurabilityForSlot(p_40410_: EquipmentSlot) = 0 override fun getDurabilityForSlot(p_40410_: EquipmentSlot) = 0
override fun getDefenseForSlot(p_40411_: EquipmentSlot) = 3 override fun getDefenseForSlot(p_40411_: EquipmentSlot) = 3
override fun getEnchantmentValue() = 0 override fun getEnchantmentValue() = 0
override fun getEquipSound(): SoundEvent? = null override fun getEquipSound(): SoundEvent = SoundEvents.ARMOR_EQUIP_GENERIC
override fun getRepairIngredient(): Ingredient = Ingredient.EMPTY override fun getRepairIngredient(): Ingredient = Ingredient.EMPTY
const val ID = "${OverdriveThatMatters.MOD_ID}:gravitation_stabilizer" const val ID = "${OverdriveThatMatters.MOD_ID}:gravitation_stabilizer"
@ -29,8 +30,8 @@ private object GravitationStabilizerArmorMaterial : ArmorMaterial {
override fun getKnockbackResistance() = 0f override fun getKnockbackResistance() = 0f
} }
private object GravitationStabilizerArmorRenderProperties : IItemRenderProperties { private object GravitationStabilizerArmorRenderProperties : IClientItemExtensions {
override fun getArmorModel( override fun getHumanoidArmorModel(
entityLiving: LivingEntity, entityLiving: LivingEntity,
itemStack: ItemStack, itemStack: ItemStack,
armorSlot: EquipmentSlot, armorSlot: EquipmentSlot,
@ -41,7 +42,7 @@ private object GravitationStabilizerArmorRenderProperties : IItemRenderPropertie
} }
class ItemPortableGravitationStabilizer : ArmorItem(GravitationStabilizerArmorMaterial, EquipmentSlot.CHEST, Properties().stacksTo(1).rarity(Rarity.RARE).tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB)) { class ItemPortableGravitationStabilizer : ArmorItem(GravitationStabilizerArmorMaterial, EquipmentSlot.CHEST, Properties().stacksTo(1).rarity(Rarity.RARE).tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB)) {
override fun initializeClient(consumer: Consumer<IItemRenderProperties>) { override fun initializeClient(consumer: Consumer<IClientItemExtensions>) {
super.initializeClient(consumer) super.initializeClient(consumer)
consumer.accept(GravitationStabilizerArmorRenderProperties) consumer.accept(GravitationStabilizerArmorRenderProperties)
} }

View File

@ -11,7 +11,7 @@ import net.minecraft.world.item.ArmorMaterial
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Rarity import net.minecraft.world.item.Rarity
import net.minecraft.world.item.crafting.Ingredient import net.minecraft.world.item.crafting.Ingredient
import net.minecraftforge.client.IItemRenderProperties import net.minecraftforge.client.extensions.common.IClientItemExtensions
import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.client.model.TritaniumArmorModel import ru.dbotthepony.mc.otm.client.model.TritaniumArmorModel
import ru.dbotthepony.mc.otm.registry.MItemTags import ru.dbotthepony.mc.otm.registry.MItemTags
@ -41,7 +41,7 @@ private object TritaniumArmorMaterial : ArmorMaterial {
} }
override fun getEnchantmentValue() = 9 override fun getEnchantmentValue() = 9
override fun getEquipSound(): SoundEvent = SoundEvents.ARMOR_EQUIP_GENERIC override fun getEquipSound(): SoundEvent = SoundEvents.ARMOR_EQUIP_IRON
override fun getRepairIngredient(): Ingredient = Ingredient.of(MItemTags.INGOT_TRITANIUM) override fun getRepairIngredient(): Ingredient = Ingredient.of(MItemTags.INGOT_TRITANIUM)
const val ID = "${OverdriveThatMatters.MOD_ID}:tritanium_armor" const val ID = "${OverdriveThatMatters.MOD_ID}:tritanium_armor"
@ -51,8 +51,8 @@ private object TritaniumArmorMaterial : ArmorMaterial {
override fun getKnockbackResistance() = 0.2f override fun getKnockbackResistance() = 0.2f
} }
private object TritaniumArmorRenderProperties : IItemRenderProperties { private object TritaniumArmorRenderProperties : IClientItemExtensions {
override fun getArmorModel( override fun getHumanoidArmorModel(
entityLiving: LivingEntity, entityLiving: LivingEntity,
itemStack: ItemStack, itemStack: ItemStack,
armorSlot: EquipmentSlot, armorSlot: EquipmentSlot,
@ -67,7 +67,7 @@ private object TritaniumArmorRenderProperties : IItemRenderProperties {
} }
class ItemTritaniumArmor(slot: EquipmentSlot) : ArmorItem(TritaniumArmorMaterial, slot, Properties().stacksTo(1).rarity(Rarity.RARE).tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB)) { class ItemTritaniumArmor(slot: EquipmentSlot) : ArmorItem(TritaniumArmorMaterial, slot, Properties().stacksTo(1).rarity(Rarity.RARE).tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB)) {
override fun initializeClient(consumer: Consumer<IItemRenderProperties>) { override fun initializeClient(consumer: Consumer<IClientItemExtensions>) {
super.initializeClient(consumer) super.initializeClient(consumer)
consumer.accept(TritaniumArmorRenderProperties) consumer.accept(TritaniumArmorRenderProperties)
} }

View File

@ -16,15 +16,14 @@ import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Rarity import net.minecraft.world.item.Rarity
import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.client.event.EntityViewRenderEvent
import net.minecraftforge.client.event.InputEvent import net.minecraftforge.client.event.InputEvent
import net.minecraftforge.client.event.RenderHandEvent import net.minecraftforge.client.event.RenderHandEvent
import net.minecraftforge.client.event.RenderPlayerEvent import net.minecraftforge.client.event.RenderPlayerEvent
import net.minecraftforge.client.event.ViewportEvent
import net.minecraftforge.event.TickEvent import net.minecraftforge.event.TickEvent
import net.minecraftforge.eventbus.api.SubscribeEvent import net.minecraftforge.eventbus.api.SubscribeEvent
import net.minecraftforge.fml.LogicalSide import net.minecraftforge.fml.LogicalSide
import net.minecraftforge.network.NetworkEvent import net.minecraftforge.network.NetworkEvent
import org.lwjgl.opengl.GL30
import ru.dbotthepony.mc.otm.* import ru.dbotthepony.mc.otm.*
import ru.dbotthepony.mc.otm.capability.matteryEnergy import ru.dbotthepony.mc.otm.capability.matteryEnergy
import ru.dbotthepony.mc.otm.client.font import ru.dbotthepony.mc.otm.client.font
@ -280,7 +279,7 @@ abstract class AbstractWeaponItem<D : WeaponDataTable>(val tables: KClass<D>, ra
@SubscribeEvent @SubscribeEvent
@Suppress("unused") @Suppress("unused")
fun fovHook(event: EntityViewRenderEvent.FieldOfView) { fun fovHook(event: ViewportEvent.ComputeFov) {
val player = event.camera.entity as? Player ?: return val player = event.camera.entity as? Player ?: return
val it = (player.mainHandItem.item as? AbstractWeaponItem<*>) val it = (player.mainHandItem.item as? AbstractWeaponItem<*>)
@ -293,7 +292,7 @@ abstract class AbstractWeaponItem<D : WeaponDataTable>(val tables: KClass<D>, ra
val interp = linearInterpolation( val interp = linearInterpolation(
it.ironSightsProgress( it.ironSightsProgress(
player.mainHandItem, player.mainHandItem,
event.partialTicks event.partialTick
) * 1.7 - 0.6, 1.0, it.ironSightsFOV ) * 1.7 - 0.6, 1.0, it.ironSightsFOV
) )
@ -314,7 +313,7 @@ abstract class AbstractWeaponItem<D : WeaponDataTable>(val tables: KClass<D>, ra
@SubscribeEvent @SubscribeEvent
@Suppress("unused") @Suppress("unused")
fun playerRenderHook(event: RenderPlayerEvent.Pre) { fun playerRenderHook(event: RenderPlayerEvent.Pre) {
if (event.player.mainHandItem.item is AbstractWeaponItem<*> && event.player.offhandItem.isEmpty) { if (event.entity.mainHandItem.item is AbstractWeaponItem<*> && event.entity.offhandItem.isEmpty) {
event.renderer.model.rightArmPose = HumanoidModel.ArmPose.BOW_AND_ARROW event.renderer.model.rightArmPose = HumanoidModel.ArmPose.BOW_AND_ARROW
event.renderer.model.leftArmPose = HumanoidModel.ArmPose.EMPTY event.renderer.model.leftArmPose = HumanoidModel.ArmPose.EMPTY
} }
@ -322,7 +321,7 @@ abstract class AbstractWeaponItem<D : WeaponDataTable>(val tables: KClass<D>, ra
@SubscribeEvent @SubscribeEvent
@Suppress("unused") @Suppress("unused")
fun clickHook(event: InputEvent.ClickInputEvent) { fun clickHook(event: InputEvent.InteractionKeyMappingTriggered) {
val player = Minecraft.getInstance().player!! val player = Minecraft.getInstance().player!!
if (player.mainHandItem.item is AbstractWeaponItem<*> && player.offhandItem.isEmpty && event.isAttack) { if (player.mainHandItem.item is AbstractWeaponItem<*> && player.offhandItem.isEmpty && event.isAttack) {
@ -378,11 +377,11 @@ abstract class AbstractWeaponItem<D : WeaponDataTable>(val tables: KClass<D>, ra
val player = Minecraft.getInstance().player!! val player = Minecraft.getInstance().player!!
val pose = event.poseStack val pose = event.poseStack
val itemInHandRenderer = Minecraft.getInstance().itemInHandRenderer val itemInHandRenderer = Minecraft.getInstance().itemRenderer
pose.pushPose() pose.pushPose()
val progress = item.ironSightsProgress(stack, event.partialTicks.toDouble()) val progress = item.ironSightsProgress(stack, event.partialTick.toDouble())
val (x, y, z) = linearInterpolation( val (x, y, z) = linearInterpolation(
// 1.0 - event.equipProgress.toDouble(), // 1.0 - event.equipProgress.toDouble(),
@ -429,15 +428,15 @@ abstract class AbstractWeaponItem<D : WeaponDataTable>(val tables: KClass<D>, ra
pose.mulPose(Vector3f.YP.rotation(yaw.toFloat())) pose.mulPose(Vector3f.YP.rotation(yaw.toFloat()))
pose.mulPose(Vector3f.XP.rotation(pitch.toFloat())) pose.mulPose(Vector3f.XP.rotation(pitch.toFloat()))
itemInHandRenderer.renderItem( /*itemInHandRenderer.render(
player, // player,
stack, stack,
ItemTransforms.TransformType.FIRST_PERSON_RIGHT_HAND, ItemTransforms.TransformType.FIRST_PERSON_RIGHT_HAND,
false, false,
pose, pose,
event.multiBufferSource, event.multiBufferSource,
event.packedLight event.packedLight
) )*/
if (item is PlasmaWeaponItem<*>) { if (item is PlasmaWeaponItem<*>) {
// RenderSystem.setShader(GameRenderer::getPositionColorShader) // RenderSystem.setShader(GameRenderer::getPositionColorShader)
@ -468,7 +467,7 @@ abstract class AbstractWeaponItem<D : WeaponDataTable>(val tables: KClass<D>, ra
RenderHelper.setDrawColor(heatBackground) RenderHelper.setDrawColor(heatBackground)
RenderHelper.drawRect(pose, -1f, -1f, 9f, 32f) RenderHelper.drawRect(pose, -1f, -1f, 9f, 32f)
val heat = item.heatProgress(stack, event.partialTicks.toDouble()).toFloat() val heat = item.heatProgress(stack, event.partialTick.toDouble()).toFloat()
RenderHelper.setDrawColor(linearInterpolation(heat, initialHeatColor, finalHeatColor)) RenderHelper.setDrawColor(linearInterpolation(heat, initialHeatColor, finalHeatColor))
RenderHelper.drawRect(pose, 0f, 30f * (1f - heat), 7f, 30f * heat) RenderHelper.drawRect(pose, 0f, 30f * (1f - heat), 7f, 30f * heat)
} }

View File

@ -4,7 +4,6 @@ import net.minecraft.ChatFormatting
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerPlayer import net.minecraft.server.level.ServerPlayer
import net.minecraft.sounds.SoundSource import net.minecraft.sounds.SoundSource
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player
@ -16,15 +15,12 @@ import net.minecraftforge.common.capabilities.ICapabilityProvider
import net.minecraftforge.common.util.INBTSerializable import net.minecraftforge.common.util.INBTSerializable
import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.energy.CapabilityEnergy import net.minecraftforge.energy.CapabilityEnergy
import ru.dbotthepony.mc.otm.*
import ru.dbotthepony.mc.otm.capability.* import ru.dbotthepony.mc.otm.capability.*
import ru.dbotthepony.mc.otm.core.ImpreciseFraction import ru.dbotthepony.mc.otm.core.ImpreciseFraction
import ru.dbotthepony.mc.otm.core.bezierCurve import ru.dbotthepony.mc.otm.core.bezierCurve
import ru.dbotthepony.mc.otm.core.formatPower import ru.dbotthepony.mc.otm.core.formatPower
import ru.dbotthepony.mc.otm.doubles
import ru.dbotthepony.mc.otm.ifPresentK
import ru.dbotthepony.mc.otm.ints
import ru.dbotthepony.mc.otm.registry.MSoundEvents import ru.dbotthepony.mc.otm.registry.MSoundEvents
import ru.dbotthepony.mc.otm.set
import kotlin.reflect.KClass import kotlin.reflect.KClass
class PlasmaWeaponEnergy(val itemStack: ItemStack, private val innerCapacity: ImpreciseFraction) : class PlasmaWeaponEnergy(val itemStack: ItemStack, private val innerCapacity: ImpreciseFraction) :

View File

@ -1,7 +1,6 @@
package ru.dbotthepony.mc.otm.matter package ru.dbotthepony.mc.otm.matter
import net.minecraft.tags.ItemTags import net.minecraft.tags.ItemTags
import net.minecraft.tags.Tag
import net.minecraft.tags.TagKey import net.minecraft.tags.TagKey
import net.minecraft.world.item.Item import net.minecraft.world.item.Item
import net.minecraft.world.item.Items import net.minecraft.world.item.Items
@ -122,12 +121,6 @@ private fun make(tag: ITag<Item>, value: ImpreciseFraction, complexity: Double =
} }
} }
private fun make(tag: Tag<Item>, value: ImpreciseFraction, complexity: Double = defaultComplexity(value)) {
for (item in tag.values) {
make(item, value, complexity)
}
}
private fun make(tag: TagKey<Item>, value: ImpreciseFraction, complexity: Double = defaultComplexity(value)) { private fun make(tag: TagKey<Item>, value: ImpreciseFraction, complexity: Double = defaultComplexity(value)) {
val resolved = ForgeRegistries.ITEMS.tags()?.getTag(tag) val resolved = ForgeRegistries.ITEMS.tags()?.getTag(tag)

View File

@ -4,7 +4,6 @@ import com.mojang.blaze3d.platform.InputConstants
import net.minecraft.ChatFormatting import net.minecraft.ChatFormatting
import net.minecraft.client.Minecraft import net.minecraft.client.Minecraft
import net.minecraft.network.FriendlyByteBuf import net.minecraft.network.FriendlyByteBuf
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.dedicated.DedicatedServer import net.minecraft.server.dedicated.DedicatedServer
import net.minecraft.world.item.Item import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
@ -17,12 +16,14 @@ import net.minecraftforge.network.NetworkEvent
import net.minecraftforge.network.PacketDistributor import net.minecraftforge.network.PacketDistributor
import org.lwjgl.glfw.GLFW import org.lwjgl.glfw.GLFW
import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.capability.drive.IMatteryDrive import ru.dbotthepony.mc.otm.capability.drive.IMatteryDrive
import ru.dbotthepony.mc.otm.core.* import ru.dbotthepony.mc.otm.core.*
import ru.dbotthepony.mc.otm.network.MatteryNetworking import ru.dbotthepony.mc.otm.network.MatteryNetworking
import ru.dbotthepony.mc.otm.orNull import ru.dbotthepony.mc.otm.orNull
import ru.dbotthepony.mc.otm.storage.ItemStackWrapper import ru.dbotthepony.mc.otm.storage.ItemStackWrapper
import ru.dbotthepony.mc.otm.writeRegistryId
import java.math.BigInteger import java.math.BigInteger
import java.util.function.Supplier import java.util.function.Supplier

View File

@ -17,6 +17,7 @@ import ru.dbotthepony.mc.otm.core.writeBigInteger
import ru.dbotthepony.mc.otm.menu.MatteryMenu import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.network.MatteryNetworking import ru.dbotthepony.mc.otm.network.MatteryNetworking
import ru.dbotthepony.mc.otm.network.SetCarriedPacket import ru.dbotthepony.mc.otm.network.SetCarriedPacket
import ru.dbotthepony.mc.otm.registryName
import ru.dbotthepony.mc.otm.storage.* import ru.dbotthepony.mc.otm.storage.*
import java.math.BigInteger import java.math.BigInteger
import java.util.* import java.util.*

View File

@ -7,6 +7,7 @@ import net.minecraft.resources.ResourceLocation
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Items import net.minecraft.world.item.Items
import net.minecraftforge.registries.ForgeRegistries import net.minecraftforge.registries.ForgeRegistries
import ru.dbotthepony.mc.otm.registryName
import ru.dbotthepony.mc.otm.set import ru.dbotthepony.mc.otm.set
fun stackFromJson(obj: JsonElement, field: String = "<unknown>"): ItemStack { fun stackFromJson(obj: JsonElement, field: String = "<unknown>"): ItemStack {

View File

@ -12,13 +12,13 @@ import net.minecraft.world.item.crafting.Recipe
import net.minecraft.world.item.crafting.RecipeSerializer import net.minecraft.world.item.crafting.RecipeSerializer
import net.minecraft.world.item.crafting.RecipeType import net.minecraft.world.item.crafting.RecipeType
import net.minecraft.world.level.Level import net.minecraft.world.level.Level
import net.minecraftforge.registries.ForgeRegistryEntry
import org.apache.logging.log4j.LogManager import org.apache.logging.log4j.LogManager
import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.block.entity.PlatePressBlockEntity import ru.dbotthepony.mc.otm.block.entity.PlatePressBlockEntity
import ru.dbotthepony.mc.otm.get import ru.dbotthepony.mc.otm.get
import ru.dbotthepony.mc.otm.registry.MNames import ru.dbotthepony.mc.otm.registry.MNames
import ru.dbotthepony.mc.otm.registry.MRecipes import ru.dbotthepony.mc.otm.registry.MRecipes
import ru.dbotthepony.mc.otm.registryName
class PlatePressRecipe( class PlatePressRecipe(
private val id: ResourceLocation, private val id: ResourceLocation,
@ -82,14 +82,10 @@ class PlatePressRecipe(
override fun getType(): RecipeType<PlatePressRecipe> = MRecipes.PLATE_PRESS override fun getType(): RecipeType<PlatePressRecipe> = MRecipes.PLATE_PRESS
} }
object PlatePressRecipeFactory : ForgeRegistryEntry<RecipeSerializer<*>>(), RecipeSerializer<PlatePressRecipe> { object PlatePressRecipeFactory : RecipeSerializer<PlatePressRecipe> {
private val EMPTY = PlatePressRecipe(ResourceLocation(OverdriveThatMatters.MOD_ID, "empty"), Ingredient.EMPTY, Ingredient.EMPTY, 1) private val EMPTY = PlatePressRecipe(ResourceLocation(OverdriveThatMatters.MOD_ID, "empty"), Ingredient.EMPTY, Ingredient.EMPTY, 1)
private val LOGGER = LogManager.getLogger() private val LOGGER = LogManager.getLogger()
init {
registryName = OverdriveThatMatters.loc(MNames.PLATE_PRESS)
}
override fun fromJson(loc: ResourceLocation, obj: JsonObject): PlatePressRecipe { override fun fromJson(loc: ResourceLocation, obj: JsonObject): PlatePressRecipe {
val input = try { val input = try {
Ingredient.fromJson(obj["input"] ?: throw IllegalStateException("Recipe $loc has no input field defined")) Ingredient.fromJson(obj["input"] ?: throw IllegalStateException("Recipe $loc has no input field defined"))

View File

@ -8,7 +8,7 @@ import ru.dbotthepony.mc.otm.android.DummyAndroidFeature
import ru.dbotthepony.mc.otm.android.feature.* import ru.dbotthepony.mc.otm.android.feature.*
object AndroidFeatures { object AndroidFeatures {
private val registry = DeferredRegister.create(AndroidFeatureType::class.java, OverdriveThatMatters.MOD_ID) private val registry = DeferredRegister.create(MRegistry.ANDROID_FEATURES, OverdriveThatMatters.MOD_ID)
val AIR_BAGS: AndroidFeatureType<*> by registry.register(MNames.AIR_BAGS) { AndroidFeatureType(::DummyAndroidFeature) } val AIR_BAGS: AndroidFeatureType<*> by registry.register(MNames.AIR_BAGS) { AndroidFeatureType(::DummyAndroidFeature) }
val STEP_ASSIST: AndroidFeatureType<*> by registry.register(MNames.STEP_ASSIST) { AndroidFeatureType(::StepAssistFeature) } val STEP_ASSIST: AndroidFeatureType<*> by registry.register(MNames.STEP_ASSIST) { AndroidFeatureType(::StepAssistFeature) }

View File

@ -3,13 +3,13 @@
package ru.dbotthepony.mc.otm.registry package ru.dbotthepony.mc.otm.registry
import net.minecraft.network.chat.TextComponent
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.resources.ResourceLocation import net.minecraft.resources.ResourceLocation
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext
import net.minecraftforge.registries.DeferredRegister import net.minecraftforge.registries.DeferredRegister
import net.minecraftforge.registries.RegistryObject import net.minecraftforge.registries.RegistryObject
import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TextComponent
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.android.AndroidResearchBuilder import ru.dbotthepony.mc.otm.android.AndroidResearchBuilder
import ru.dbotthepony.mc.otm.android.AndroidResearchType import ru.dbotthepony.mc.otm.android.AndroidResearchType
import ru.dbotthepony.mc.otm.android.feature.NanobotsArmor import ru.dbotthepony.mc.otm.android.feature.NanobotsArmor
@ -74,7 +74,7 @@ object AndroidResearch {
ICON_EXTENDED_REACH = grid.next() ICON_EXTENDED_REACH = grid.next()
} }
private val registry = DeferredRegister.create(AndroidResearchType::class.java, OverdriveThatMatters.MOD_ID) private val registry = DeferredRegister.create(MRegistry.ANDROID_RESEARCH, OverdriveThatMatters.MOD_ID)
internal fun register() { internal fun register() {
registry.register(FMLJavaModLoadingContext.get().modEventBus) registry.register(FMLJavaModLoadingContext.get().modEventBus)

View File

@ -1,12 +1,12 @@
package ru.dbotthepony.mc.otm.registry package ru.dbotthepony.mc.otm.registry
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.damagesource.DamageSource import net.minecraft.world.damagesource.DamageSource
import net.minecraft.world.entity.Entity import net.minecraft.world.entity.Entity
import net.minecraft.world.entity.LivingEntity import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
import net.minecraft.world.phys.Vec3 import net.minecraft.world.phys.Vec3
import ru.dbotthepony.mc.otm.TranslatableComponent
class ImmutableDamageSource(private val parent: DamageSource) : DamageSource(parent.msgId) { class ImmutableDamageSource(private val parent: DamageSource) : DamageSource(parent.msgId) {
override fun equals(other: Any?): Boolean { override fun equals(other: Any?): Boolean {

View File

@ -2,7 +2,6 @@ package ru.dbotthepony.mc.otm.registry
import com.google.common.collect.ImmutableSet import com.google.common.collect.ImmutableSet
import net.minecraft.world.item.DyeColor import net.minecraft.world.item.DyeColor
import net.minecraftforge.registries.IForgeRegistryEntry
import net.minecraftforge.registries.RegistryObject import net.minecraftforge.registries.RegistryObject
class LazyList<T>(private vararg val getters: () -> T) : AbstractList<T>() { class LazyList<T>(private vararg val getters: () -> T) : AbstractList<T>() {
@ -26,7 +25,7 @@ class LazyMap<K, T>(vararg mValues: Pair<K, () -> T>) : AbstractMap<K, T>() {
override val entries: Set<Map.Entry<K, T>> = ImmutableSet.copyOf(mValues.map { Entry(it.first, it.second) }) override val entries: Set<Map.Entry<K, T>> = ImmutableSet.copyOf(mValues.map { Entry(it.first, it.second) })
} }
class RegistryObjectList<T : IForgeRegistryEntry<T>>(private vararg val getters: RegistryObject<T>) : AbstractList<T>() { class RegistryObjectList<T>(private vararg val getters: RegistryObject<T>) : AbstractList<T>() {
constructor(getters: List<RegistryObject<T>>) : this(*getters.toTypedArray()) constructor(getters: List<RegistryObject<T>>) : this(*getters.toTypedArray())
override val size: Int override val size: Int

View File

@ -1,15 +1,20 @@
package ru.dbotthepony.mc.otm.registry package ru.dbotthepony.mc.otm.registry
import net.minecraftforge.common.loot.GlobalLootModifierSerializer import com.mojang.serialization.Codec
import net.minecraftforge.event.RegistryEvent import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext
import net.minecraftforge.eventbus.api.SubscribeEvent import net.minecraftforge.registries.DeferredRegister
import net.minecraftforge.registries.ForgeRegistries
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.data.LootTableAppender import ru.dbotthepony.mc.otm.data.LootTableAppender
import ru.dbotthepony.mc.otm.data.LootTableBasicAppender import ru.dbotthepony.mc.otm.data.LootTableBasicAppender
object LootModifiers { object LootModifiers {
@SubscribeEvent private val registry = DeferredRegister.create(ForgeRegistries.Keys.GLOBAL_LOOT_MODIFIER_SERIALIZERS, OverdriveThatMatters.MOD_ID)
fun register(event: RegistryEvent.Register<GlobalLootModifierSerializer<*>>) {
event.registry.register(LootTableAppender.Companion) val LOOT_TABLE_APPENDER: Codec<LootTableAppender> by registry.register("loot_table_appender") { LootTableAppender.Companion }
event.registry.register(LootTableBasicAppender.Companion) val LOOT_TABLE_BASIC_APPENDER: Codec<LootTableBasicAppender> by registry.register("loot_table_appender") { LootTableBasicAppender.Companion }
internal fun register() {
registry.register(FMLJavaModLoadingContext.get().modEventBus)
} }
} }

View File

@ -18,7 +18,7 @@ import ru.dbotthepony.mc.otm.client.render.EnergyCounterRenderer
import ru.dbotthepony.mc.otm.client.render.GravitationStabilizerRenderer import ru.dbotthepony.mc.otm.client.render.GravitationStabilizerRenderer
object MBlockEntities { object MBlockEntities {
private val registry = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITIES, OverdriveThatMatters.MOD_ID) private val registry = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, OverdriveThatMatters.MOD_ID)
val ANDROID_STATION: BlockEntityType<*> by registry.register(MNames.ANDROID_STATION) { BlockEntityType.Builder.of(::AndroidStationBlockEntity, MBlocks.ANDROID_STATION).build(null) } val ANDROID_STATION: BlockEntityType<*> by registry.register(MNames.ANDROID_STATION) { BlockEntityType.Builder.of(::AndroidStationBlockEntity, MBlocks.ANDROID_STATION).build(null) }
val BATTERY_BANK: BlockEntityType<*> by registry.register(MNames.BATTERY_BANK) { BlockEntityType.Builder.of(::BatteryBankBlockEntity, MBlocks.BATTERY_BANK).build(null) } val BATTERY_BANK: BlockEntityType<*> by registry.register(MNames.BATTERY_BANK) { BlockEntityType.Builder.of(::BatteryBankBlockEntity, MBlocks.BATTERY_BANK).build(null) }

View File

@ -6,7 +6,7 @@ import net.minecraft.client.renderer.RenderType
import net.minecraft.util.valueproviders.UniformInt import net.minecraft.util.valueproviders.UniformInt
import net.minecraft.world.item.DyeColor import net.minecraft.world.item.DyeColor
import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.OreBlock import net.minecraft.world.level.block.DropExperienceBlock
import net.minecraft.world.level.block.SoundType import net.minecraft.world.level.block.SoundType
import net.minecraft.world.level.block.state.BlockBehaviour import net.minecraft.world.level.block.state.BlockBehaviour
import net.minecraft.world.level.material.Material import net.minecraft.world.level.material.Material
@ -73,14 +73,14 @@ object MBlocks {
val GRAVITATION_STABILIZER: Block by registry.register(MNames.GRAVITATION_STABILIZER) { BlockGravitationStabilizer() } val GRAVITATION_STABILIZER: Block by registry.register(MNames.GRAVITATION_STABILIZER) { BlockGravitationStabilizer() }
val GRAVITATION_STABILIZER_LENS: Block by registry.register(MNames.GRAVITATION_STABILIZER_LENS) { BlockGravitationStabilizerLens() } val GRAVITATION_STABILIZER_LENS: Block by registry.register(MNames.GRAVITATION_STABILIZER_LENS) { BlockGravitationStabilizerLens() }
val TRITANIUM_ORE: Block by registry.register(MNames.TRITANIUM_ORE) { OreBlock( val TRITANIUM_ORE: Block by registry.register(MNames.TRITANIUM_ORE) { DropExperienceBlock(
BlockBehaviour.Properties.of(Material.STONE) BlockBehaviour.Properties.of(Material.STONE)
.strength(3.25f, 6.0f) .strength(3.25f, 6.0f)
.requiresCorrectToolForDrops(), .requiresCorrectToolForDrops(),
UniformInt.of(0, 3) UniformInt.of(0, 3)
) } ) }
val DEEPSLATE_TRITANIUM_ORE: Block by registry.register(MNames.DEEPSLATE_TRITANIUM_ORE) { OreBlock( val DEEPSLATE_TRITANIUM_ORE: Block by registry.register(MNames.DEEPSLATE_TRITANIUM_ORE) { DropExperienceBlock(
BlockBehaviour.Properties.of(Material.STONE) BlockBehaviour.Properties.of(Material.STONE)
.strength(4.75f, 6.5f) .strength(4.75f, 6.5f)
.requiresCorrectToolForDrops(), .requiresCorrectToolForDrops(),

View File

@ -14,7 +14,7 @@ import ru.dbotthepony.mc.otm.client.render.entity.PlasmaProjectileRenderer
import ru.dbotthepony.mc.otm.entity.PlasmaProjectile import ru.dbotthepony.mc.otm.entity.PlasmaProjectile
object MEntityTypes { object MEntityTypes {
private val registry: DeferredRegister<EntityType<*>> = DeferredRegister.create(ForgeRegistries.ENTITIES, OverdriveThatMatters.MOD_ID) private val registry: DeferredRegister<EntityType<*>> = DeferredRegister.create(ForgeRegistries.ENTITY_TYPES, OverdriveThatMatters.MOD_ID)
val PLASMA: EntityType<*> by registry.register(MNames.PLASMA) { val PLASMA: EntityType<*> by registry.register(MNames.PLASMA) {
EntityType.Builder.of<PlasmaProjectile>({ _, level -> PlasmaProjectile(level) }, MobCategory.MISC).sized(0.4f, 0.4f).build(MNames.PLASMA) EntityType.Builder.of<PlasmaProjectile>({ _, level -> PlasmaProjectile(level) }, MobCategory.MISC).sized(0.4f, 0.4f).build(MNames.PLASMA)

View File

@ -3,22 +3,18 @@ package ru.dbotthepony.mc.otm.registry
import net.minecraft.ChatFormatting import net.minecraft.ChatFormatting
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.tags.BlockTags import net.minecraft.tags.BlockTags
import net.minecraft.world.entity.EquipmentSlot import net.minecraft.world.entity.EquipmentSlot
import net.minecraft.world.food.FoodProperties import net.minecraft.world.food.FoodProperties
import net.minecraft.world.item.* import net.minecraft.world.item.*
import net.minecraft.world.item.crafting.Ingredient import net.minecraft.world.item.crafting.Ingredient
import net.minecraft.world.level.Level import net.minecraft.world.level.Level
import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.SoundType
import net.minecraft.world.level.block.state.BlockBehaviour
import net.minecraft.world.level.material.Material
import net.minecraftforge.common.ForgeTier import net.minecraftforge.common.ForgeTier
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext
import net.minecraftforge.registries.DeferredRegister import net.minecraftforge.registries.DeferredRegister
import net.minecraftforge.registries.ForgeRegistries import net.minecraftforge.registries.ForgeRegistries
import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.core.ImpreciseFraction import ru.dbotthepony.mc.otm.core.ImpreciseFraction
import ru.dbotthepony.mc.otm.item.* import ru.dbotthepony.mc.otm.item.*
import ru.dbotthepony.mc.otm.item.weapon.PlasmaRifleItem import ru.dbotthepony.mc.otm.item.weapon.PlasmaRifleItem

View File

@ -11,7 +11,7 @@ import ru.dbotthepony.mc.otm.client.screen.*
import ru.dbotthepony.mc.otm.menu.* import ru.dbotthepony.mc.otm.menu.*
object MMenus { object MMenus {
private val registry = DeferredRegister.create(ForgeRegistries.CONTAINERS, OverdriveThatMatters.MOD_ID) private val registry = DeferredRegister.create(ForgeRegistries.MENU_TYPES, OverdriveThatMatters.MOD_ID)
val ANDROID_STATION: MenuType<*> by registry.register(MNames.ANDROID_STATION) { MenuType(::AndroidStationMenu) } val ANDROID_STATION: MenuType<*> by registry.register(MNames.ANDROID_STATION) { MenuType(::AndroidStationMenu) }
val BATTERY_BANK: MenuType<*> by registry.register(MNames.BATTERY_BANK) { MenuType(::BatteryBankMenu) } val BATTERY_BANK: MenuType<*> by registry.register(MNames.BATTERY_BANK) { MenuType(::BatteryBankMenu) }

Some files were not shown because too many files have changed in this diff Show More