|
1 | 1 | package org.embeddedt.modernfix.blockstate; |
2 | 2 |
|
| 3 | +import com.google.common.collect.Iterators; |
3 | 4 | import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; |
4 | 5 | import net.minecraft.world.level.block.state.properties.Property; |
5 | 6 | import org.jetbrains.annotations.NotNull; |
@@ -96,104 +97,66 @@ public void clear() { |
96 | 97 | this.usedSlots = 0; |
97 | 98 | } |
98 | 99 |
|
| 100 | + private <T> List<T> asList(T... array) { |
| 101 | + var list = Arrays.asList(array); |
| 102 | + if(usedSlots < array.length) { |
| 103 | + list = list.subList(0, usedSlots); |
| 104 | + } |
| 105 | + return list; |
| 106 | + } |
| 107 | + |
99 | 108 | @NotNull |
100 | 109 | @Override |
101 | 110 | public Set<Map<Property<?>, Comparable<?>>> keySet() { |
102 | | - throw new UnsupportedOperationException(); |
| 111 | + return new AbstractSet<>() { |
| 112 | + @Override |
| 113 | + public Iterator<Map<Property<?>, Comparable<?>>> iterator() { |
| 114 | + return keys.length == usedSlots ? Iterators.forArray(keys) : asList(keys).iterator(); |
| 115 | + } |
| 116 | + |
| 117 | + @Override |
| 118 | + public int size() { |
| 119 | + return usedSlots; |
| 120 | + } |
| 121 | + }; |
103 | 122 | } |
104 | 123 |
|
105 | 124 | @NotNull |
106 | 125 | @Override |
107 | 126 | public Collection<S> values() { |
108 | | - throw new UnsupportedOperationException(); |
| 127 | + return (Collection<S>)asList(values); |
109 | 128 | } |
110 | 129 |
|
111 | 130 | @NotNull |
112 | 131 | @Override |
113 | 132 | public Set<Entry<Map<Property<?>, Comparable<?>>, S>> entrySet() { |
114 | | - return new Set<Entry<Map<Property<?>, Comparable<?>>, S>>() { |
| 133 | + return new AbstractSet<>() { |
115 | 134 | @Override |
116 | 135 | public int size() { |
117 | 136 | return usedSlots; |
118 | 137 | } |
119 | 138 |
|
120 | | - @Override |
121 | | - public boolean isEmpty() { |
122 | | - return FakeStateMap.this.isEmpty(); |
123 | | - } |
124 | | - |
125 | | - @Override |
126 | | - public boolean contains(Object o) { |
127 | | - throw new UnsupportedOperationException(); |
128 | | - } |
129 | | - |
130 | 139 | @NotNull |
131 | 140 | @Override |
132 | 141 | public Iterator<Entry<Map<Property<?>, Comparable<?>>, S>> iterator() { |
133 | | - return new Iterator<Entry<Map<Property<?>, Comparable<?>>, S>>() { |
| 142 | + return new Iterator<>() { |
134 | 143 | int currentIdx = 0; |
| 144 | + |
135 | 145 | @Override |
136 | 146 | public boolean hasNext() { |
137 | 147 | return currentIdx < usedSlots; |
138 | 148 | } |
139 | 149 |
|
140 | 150 | @Override |
141 | 151 | public Entry<Map<Property<?>, Comparable<?>>, S> next() { |
142 | | - if(currentIdx >= usedSlots) |
| 152 | + if (currentIdx >= usedSlots) |
143 | 153 | throw new IndexOutOfBoundsException(); |
144 | | - Entry<Map<Property<?>, Comparable<?>>, S> entry = new AbstractMap.SimpleImmutableEntry<>(keys[currentIdx], (S)values[currentIdx]); |
| 154 | + Entry<Map<Property<?>, Comparable<?>>, S> entry = new AbstractMap.SimpleImmutableEntry<>(keys[currentIdx], (S) values[currentIdx]); |
145 | 155 | currentIdx++; |
146 | 156 | return entry; |
147 | 157 | } |
148 | 158 | }; |
149 | 159 | } |
150 | | - |
151 | | - @NotNull |
152 | | - @Override |
153 | | - public Object[] toArray() { |
154 | | - throw new UnsupportedOperationException(); |
155 | | - } |
156 | | - |
157 | | - @NotNull |
158 | | - @Override |
159 | | - public <T> T[] toArray(@NotNull T[] ts) { |
160 | | - throw new UnsupportedOperationException(); |
161 | | - } |
162 | | - |
163 | | - @Override |
164 | | - public boolean add(Entry<Map<Property<?>, Comparable<?>>, S> mapSEntry) { |
165 | | - throw new UnsupportedOperationException(); |
166 | | - } |
167 | | - |
168 | | - @Override |
169 | | - public boolean remove(Object o) { |
170 | | - throw new UnsupportedOperationException(); |
171 | | - } |
172 | | - |
173 | | - @Override |
174 | | - public boolean containsAll(@NotNull Collection<?> collection) { |
175 | | - throw new UnsupportedOperationException(); |
176 | | - } |
177 | | - |
178 | | - @Override |
179 | | - public boolean addAll(@NotNull Collection<? extends Entry<Map<Property<?>, Comparable<?>>, S>> collection) { |
180 | | - throw new UnsupportedOperationException(); |
181 | | - } |
182 | | - |
183 | | - @Override |
184 | | - public boolean retainAll(@NotNull Collection<?> collection) { |
185 | | - throw new UnsupportedOperationException(); |
186 | | - } |
187 | | - |
188 | | - @Override |
189 | | - public boolean removeAll(@NotNull Collection<?> collection) { |
190 | | - throw new UnsupportedOperationException(); |
191 | | - } |
192 | | - |
193 | | - @Override |
194 | | - public void clear() { |
195 | | - throw new UnsupportedOperationException(); |
196 | | - } |
197 | 160 | }; |
198 | 161 | } |
199 | 162 | } |
0 commit comments