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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import com.mojang.blaze3d.systems.RenderSystem;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.ComponentPath;
import net.minecraft.client.gui.GuiGraphics;
Expand All @@ -26,6 +22,14 @@
import org.jetbrains.annotations.Nullable;
import org.lwjgl.glfw.GLFW;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;

public abstract class EnderContainerScreen<T extends AbstractContainerMenu> extends AbstractContainerScreen<T> {

private static final int ITEM_RENDER_Z = 400;
Expand Down Expand Up @@ -205,7 +209,12 @@ public void mouseMoved(double pMouseX, double pMouseY) {

@Override
public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) {
for (var layer : overlayWidgets.keySet()) {

// Check the layers in reverse order for correct click propagation (from top to bottom layer)
List<Integer> sortedLayers = new ArrayList<>(overlayWidgets.keySet());
sortedLayers.sort(Comparator.reverseOrder());

for (int layer : sortedLayers) {
for (var overlay : overlayWidgets.get(layer)) {
if (!(overlay instanceof AbstractWidget widget) || widget.isActive()) {
if (overlay.isMouseOver(pMouseX, pMouseY)) {
Expand All @@ -221,7 +230,10 @@ public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) {

@Override
public boolean mouseReleased(double pMouseX, double pMouseY, int pButton) {
for (var layer : overlayWidgets.keySet()) {
List<Integer> sortedLayers = new ArrayList<>(overlayWidgets.keySet());
sortedLayers.sort(Comparator.reverseOrder());

for (int layer : sortedLayers) {
for (var overlay : overlayWidgets.get(layer)) {
if (!(overlay instanceof AbstractWidget widget) || widget.isActive()) {
if (overlay.isMouseOver(pMouseX, pMouseY)) {
Expand All @@ -234,10 +246,12 @@ public boolean mouseReleased(double pMouseX, double pMouseY, int pButton) {
return super.mouseReleased(pMouseX, pMouseY, pButton);
}

// Always pass mouse drag event through widgets first.
@Override
public boolean mouseDragged(double pMouseX, double pMouseY, int pButton, double pDragX, double pDragY) {
for (var layer : overlayWidgets.keySet()) {
List<Integer> sortedLayers = new ArrayList<>(overlayWidgets.keySet());
sortedLayers.sort(Comparator.reverseOrder());

for (int layer : sortedLayers) {
for (var overlay : overlayWidgets.get(layer)) {
if (!(overlay instanceof AbstractWidget widget) || widget.isActive()) {
if (overlay.isMouseOver(pMouseX, pMouseY)) {
Expand All @@ -256,7 +270,10 @@ public boolean mouseDragged(double pMouseX, double pMouseY, int pButton, double

@Override
public boolean mouseScrolled(double pMouseX, double pMouseY, double pScrollX, double pScrollY) {
for (var layer : overlayWidgets.keySet()) {
List<Integer> sortedLayers = new ArrayList<>(overlayWidgets.keySet());
sortedLayers.sort(Comparator.reverseOrder());

for (int layer : sortedLayers) {
for (var overlay : overlayWidgets.get(layer)) {
if (!(overlay instanceof AbstractWidget widget) || widget.isActive()) {
if (overlay.isMouseOver(pMouseX, pMouseY)) {
Expand All @@ -269,6 +286,7 @@ public boolean mouseScrolled(double pMouseX, double pMouseY, double pScrollX, do
return super.mouseScrolled(pMouseX, pMouseY, pScrollX, pScrollY);
}


/**
* @deprecated Use {@link #onKeyPressed(int, int, int)} instead.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,13 @@
"fluid_type.enderio.vapor_of_levity": "Vapor of Levity",
"fluid_type.enderio.xp_juice": "XP Juice",
"gui.enderio.cancel": "Cancel",
"gui.enderio.channel.add_channel": "Add channel",
"gui.enderio.channel.available": "Available",
"gui.enderio.channel.delete_channel": "Delete channel",
"gui.enderio.channel.private": "Channel is private",
"gui.enderio.channel.public": "Channel is public",
"gui.enderio.channel.receive": "Receive",
"gui.enderio.channel.send": "Send",
"gui.enderio.collision.animals_block": "Only solid to animals",
"gui.enderio.collision.animals_pass": "Not solid to animals",
"gui.enderio.collision.mobs_block": "Only solid to monsters",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package com.enderio.base.api.collections;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicInteger;

public class RoundRobinList<T> {
private final List<T> items = new CopyOnWriteArrayList<>();
private final AtomicInteger currentIndex = new AtomicInteger(0);

public void add(T item) {
if (!items.contains(item)) {
items.add(item);
}
}


public boolean remove(T item) {
boolean removed = items.remove(item);
if (removed && currentIndex.get() >= items.size()) {
currentIndex.set(0);
}

return removed;
}

public boolean isEmpty() {
return items.isEmpty();
}

public List<T> getAll() {
return new ArrayList<>(items);
}

public Iterable<T> iterate() {
return () -> new Iterator<T>() {
private int visited = 0;
private final int size = items.size();

@Override
public boolean hasNext() {
return visited < size && size > 0;
}

@Override
public T next() {
if (!hasNext()) {
throw new NoSuchElementException();
}

int index = currentIndex.getAndUpdate(i -> (i + 1) % size);
visited++;

return items.get(index);
}
};
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
@javax.annotation.ParametersAreNonnullByDefault
@net.minecraft.MethodsReturnNonnullByDefault

package com.enderio.base.api.collections;
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,14 @@
import com.enderio.base.api.capacitor.CapacitorModifier;
import com.enderio.base.common.block.glass.GlassLighting;
import com.enderio.core.common.util.TooltipUtil;
import java.util.Locale;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.DyeColor;

import java.util.Locale;

public class EIOLang {
public static final Component BLOCK_BLAST_RESISTANT = TooltipUtil
.style(addTranslation("tooltip", EnderIO.loc("block.blast_resistant"), "Blast resistant"));
Expand Down Expand Up @@ -204,6 +205,19 @@ public class EIOLang {
public static final Component VISIBLE = addTranslation("gui", EnderIO.loc("visible.true"), "Visible");
public static final Component NOT_VISIBLE = addTranslation("gui", EnderIO.loc("visible.false"), "Hidden");


public static final Component CHANNEL_PRIVATE = addTranslation("gui", EnderIO.loc("channel.private"),
"Channel is private");
public static final Component CHANNEL_PUBLIC = addTranslation("gui", EnderIO.loc("channel.public"),
"Channel is public");
public static final Component DELETE_CHANNEL = addTranslation("gui", EnderIO.loc("channel.delete_channel"),
"Delete channel");
public static final Component ADD_CHANNEL = addTranslation("gui", EnderIO.loc("channel.add_channel"),
"Add channel");

public static final Component AVAILABLE = addTranslation("gui", EnderIO.loc("channel.available"), "Available");
public static final Component SEND = addTranslation("gui", EnderIO.loc("channel.send"), "Send");
public static final Component RECEIVE = addTranslation("gui", EnderIO.loc("channel.receive"), "Receive");
// endregion

// region Entity Storage
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"variants": {
"facing=east,powered=false": {
"model": "enderio:block/transceiver_combined",
"y": 90
},
"facing=east,powered=true": {
"model": "enderio:block/transceiver_active_combined",
"y": 90
},
"facing=north,powered=false": {
"model": "enderio:block/transceiver_combined"
},
"facing=north,powered=true": {
"model": "enderio:block/transceiver_active_combined"
},
"facing=south,powered=false": {
"model": "enderio:block/transceiver_combined",
"y": 180
},
"facing=south,powered=true": {
"model": "enderio:block/transceiver_active_combined",
"y": 180
},
"facing=west,powered=false": {
"model": "enderio:block/transceiver_combined",
"y": 270
},
"facing=west,powered=true": {
"model": "enderio:block/transceiver_active_combined",
"y": 270
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
"block.enderio.soul_binder": "Soul Binder",
"block.enderio.soul_engine": "Soul Engine",
"block.enderio.stirling_generator": "Stirling Generator",
"block.enderio.transceiver": "Dimensional Transceiver",
"block.enderio.travel_anchor": "Travel Anchor",
"block.enderio.vacuum_chest": "Vacuum Chest",
"block.enderio.vat": "VAT",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"parent": "minecraft:block/block",
"children": {
"machine": {
"parent": "enderio:block/transceiver_active"
},
"overlay": {
"parent": "enderio:block/io_overlay"
}
},
"item_render_order": [
"machine",
"overlay"
],
"loader": "neoforge:composite",
"textures": {
"particle": "enderio:block/transceiver_front"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"parent": "minecraft:block/block",
"children": {
"machine": {
"parent": "enderio:block/transceiver"
},
"overlay": {
"parent": "enderio:block/io_overlay"
}
},
"item_render_order": [
"machine",
"overlay"
],
"loader": "neoforge:composite",
"textures": {
"particle": "enderio:block/transceiver_front"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"parent": "enderio:block/transceiver"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:item",
"functions": [
{
"function": "minecraft:copy_components",
"source": "block_entity"
}
],
"name": "enderio:transceiver"
}
],
"rolls": 1.0
}
],
"random_sequence": "enderio:blocks/transceiver"
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
"enderio:aversion_obelisk",
"enderio:relocator_obelisk",
"enderio:attractor_obelisk",
"enderio:weather_obelisk"
"enderio:weather_obelisk",
"enderio:transceiver"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
"enderio:aversion_obelisk",
"enderio:relocator_obelisk",
"enderio:attractor_obelisk",
"enderio:weather_obelisk"
"enderio:weather_obelisk",
"enderio:transceiver"
]
}
Loading
Loading